smaba(跨平台文件共享)

samba (跨平台文件共享)

介绍

samba简单理解其实就是linux和windows的共享
主要涉及到smb和nmb服务(二选一使用)
smb tcp 139/445 端口 (一般新系统只需要用smb即可)
nmb udp 137/138 端口(主要是用于兼容windows xp之类较老的系统)

服务端配置

这里配置的是smb:

  • 如果开启防火墙的,先吧samba服务开放:firewall-cmd --add-service=samba , firewall-cmd --add-service=samba --permanent
    smaba(跨平台文件共享)

  • 安装samba服务:yum -y install samba ,配置文件为/etc/samba/下的 smb.conf
    smaba(跨平台文件共享)

  • 查看所有未注释的配置信息:grep -o ‘[#|^;].*’ smb.conf
    其中global -全局设置
    smaba(跨平台文件共享)

  • 启动smb服务并设置开机自启:systemctl resart smb , systemctl enable smb
    并且smb默认端口是对所有地址开放的:netstat -ntulp | grep smb
    smaba(跨平台文件共享)

文件各功能解释即需要修改的地方:

  • 编辑配置文件:vi /etc/samba/smb.conf
  • 把workgroup改为和需要通信的windows组一样:windows查看组的方法:右键计算机-属性:
    smaba(跨平台文件共享)
    修改后:
    smaba(跨平台文件共享)
  • 如下图:interfaces:网络接口,比如,现在有2张网卡,eth0和eth1,默认2张都使用,如果现在只想用eht0这张网卡,则把注释取消,ip替换为任意即可
    hosts allow :默认是全部ip开放的,如果需要指定ip开放,取消注释,输入需指定ip即可
    smaba(跨平台文件共享)
  • 日志存放路径
    日志存放于:/var/log/samba/log.%m,第二行就是说 当日志大小达到50KB的时候,会自动归档(日志名称后面追加日期)保存,然后当前日志就会被清空。
    smaba(跨平台文件共享)
  • 登陆时到当前服务器时的安全验证
    smaba(跨平台文件共享)
    配置为user时如下图,打开命令面板输入 \ip 即可:
    smaba(跨平台文件共享)
    smaba(跨平台文件共享)
    登陆成功后:
    smaba(跨平台文件共享)
  • 家目录共享:
    smaba(跨平台文件共享)
  • 修改玩配置文件需要重启smb服务:systemctl restart smb

创建smb用户并使用

  • 创建samba用户:当我们想创建samba用户的时候,这个samba用户必须是本地用户即出现在/etc/passwd里。
  • 安装smbpasswd命令:先查看包名: yum whatprovides */smbpasswd ,然后 yum -y install 包名
    smaba(跨平台文件共享)
  • 添加用户到smbpasswd中:smbpasswd -a 用户(必须本地存在的用户,可id 用户查看是否存在),密码自定义,也可以和用户密码一致。
    smaba(跨平台文件共享)
    禁用用户:smbpasswd -d 用户名
    启用已禁用的用户:smbpasswd -e 用户名
    删除用户:smbpasswd -x 用户名
    重置密码:smbpasswd 用户名
    smaba(跨平台文件共享)
  • 添加系统中不存的用户时报错
    smaba(跨平台文件共享)
    如果创建了一系列的smb用户,为了安全性,这些用户他们的shell设置为:/sbin/nologin(就是说不允许 ssh登陆,仅允许smb方式登陆)
  • 添加权限让通过smb登陆的用户能够访问家目录,如果不添加权限,则登陆成功后是没有权限访问家目录的:setsebool -P samba_enable_home_dirs on
    smaba(跨平台文件共享)
    如果不添加权限访问时:
    smaba(跨平台文件共享)
    添加权限以后访问:
    smaba(跨平台文件共享)
  • 清除缓存,如果我们使用windows访问smb家目录以后,windows存在缓存,可以清除缓存:打开cmd控制面板后输入:nct use * /del (清除的作用,如果不清除缓存,可能无法切换到其他smb用户)
    smaba(跨平台文件共享)

共享文件夹(目录)设置

  • 创建格式
    [***] -smb登陆后显示的目录
    comment-注释(可有可无)
    path-需共享的文件夹(目录)(必须存在)
    writable-是否允许写入文件
    smaba(跨平台文件共享)
    保存后重启smb服务:systemctl restart smb
  • 添加上下文到 共享的目录:chcon -R -t samba_share_t /456/
    smaba(跨平台文件共享)
  • 添加权限:chmod o+w 共享路径,如:chmod o+w /456
  • windows中使用smb登陆便可看到
    smaba(跨平台文件共享)
    如果不添加上下文则没有权限:
    smaba(跨平台文件共享)
    添加上下文后可正常访问:
    smaba(跨平台文件共享)
  • 无法(没有权限)创建文件
    smaba(跨平台文件共享)

配置完毕没有权限排查思路

当你搭建了一个服务器,然后想从客户端网这个服务器里写东西,写不进去,排查思路:1、配置文件 2、文件的系统权限 3、selinux
注:1和2必须满足,一般情况满足1和2便正常的。
检查配置文件:是否有 writable=yes
文件的系统权限:因为共享文件属于other权限,默认是没有w权限的,所以共享的文件需要o+w:chmod o+w 共享路径
smaba(跨平台文件共享)

仅允许部分用户拥有写权限

配置文件设置仅允许部分用户拥有写权限:

smaba(跨平台文件共享)
如果要允许组,则在用户前面加 + ,如 +tom,+bob

命令设置仅允许部分用户拥有写权限

配置文件中:writable=yes
smaba(跨平台文件共享)
把o权限关闭:chmod o-w 文件名 , 如:chmod o-w /456
然后指定用户开启权限:setfacl -m u:允许写如用户名:权限 文件 ,如:setfacl -m u:tom:rwx /456
关闭指定用户开启权限:setfacl -x u:用户名 文件名 ,如:setfacl -x u:tom /456
smaba(跨平台文件共享)

隐藏(不可见)共享文件(目录)设置

意思是,共享的文件,在windows上并看不到目录

  • 编辑配置文件:vi /etc/samba/smb.conf
    browseable=no (这样别人就看不到设置的共享目录了)
    smaba(跨平台文件共享)
    重启服务:systemctl restart smb
    再用windows登陆后变看不到xxyy了:
    smaba(跨平台文件共享)
  • 设置部门用户不可见共享文件
    这个有点复杂,首先在smb.conf文件中91行左右加入一行:config file = /etc/samba/smb.con.%U ,%U是一个变量,整行意思就是,如果有/etc/samba/smb.con.tom(%U替换为任意用户时,就调用该配置文件)
    所以,现在cd /etc/samba,把smb.conf配置文件cp 一份,以tom为例:cp smb.conf smb.conf.tom
    smaba(跨平台文件共享)
    注意:现在vi smb.conf.tom ,在该文件中,browseable=yes
    smaba(跨平台文件共享)
    在原配置文件中:vi smb.conf, browseable=no
    smaba(跨平台文件共享)
    重启服务:systemctl restart smb
    这时候 使用tom用户时,实际调用的就是smb.conf.tom配置文件的信息,而.tom中browseable=yes,所以 tom用户可以见到共享文件,其他用户见不到共享文件。
    当然,此方法不限于browseable,也可以单独配置smb.conf中的任意规则,也就是 ,可以不同用户定义不同规则。

设置允许/拒绝访问ip地址段

允许:

出现在 hosts allow中的ip都是允许访问的ip。

  • 允许单个ip :hosts allow = ip ,如hosts allow = 192.2168.26.200
    smaba(跨平台文件共享)
  • 允许ip段:hosts allow = ip/掩码 ,如:hosts allow = 192.168.26.0/24 意思是 仅允许192.168.26段的所有ip访问:
    smaba(跨平台文件共享)

拒绝:

出现在hosts deny 中的ip都是不允许访问的ip。

  • 拒绝单个ip: hosts deny = ip ,如:hostsdeny = 192.168.26.1
  • 拒绝ip段:hosts allow = ip/掩码 ,如:hosts allow = 192.168.26.0/24

使用samba

windows上使用

打开命令面板输入 \ip 即可:
smaba(跨平台文件共享)
smaba(跨平台文件共享)
登陆成功后:

smaba(跨平台文件共享)

linux上使用

  • 访问:
    smbclient //ip/共享目录 -U 用户%密码 ,如:smbclient //192.168.26.100/xxyy -U tom%123123 (192.168.26.100是服务端)
    smaba(跨平台文件共享)
    quit退出。
  • 挂载:
    指定samba用户挂载:mount -o username=samba用户名,password=samba用户密码 //ip/分享目录 挂载路径 , 如,挂载到bob用户:mount -o username=bob,password=123123 //192.168.26.100/xxyy /smb/
    smaba(跨平台文件共享)

multiuser的配置

也称之为多用户挂载
我们吧服务器上的用户 理解为 “ 马甲” , 客户端挂载了samba的共享目录,此时是没有任何权限的,让客户端用户披上 不同的“马甲” 则可获取到不同的权限。

使用

先挂载,后获取用户权限即可。

  • 指定samba用户挂载:mount -o username=samba用户名,password=samba密码 multiuser,sec=ntlmssp //ip/分享目录 挂载路径 , 如,挂载到bob用户:mount -o username=bob,password=123123,multiuser,sec=ntlmssp //192.168.26.100/xxyy /smb/
    smaba(跨平台文件共享)
    注:如果不知道ntlmssp是什么意思:man mount.cifs查看
    smaba(跨平台文件共享)
  • 获取用户权限:cifscreds add 服务端ip -u 用户名,如获取bob用户的权限: cifscreds add 192.168.26.100 -u bob
    smaba(跨平台文件共享)
    如果需要永久挂载:vi /etc/fstab
    smaba(跨平台文件共享)