Samba服务器
Samba是一款在Linux/Unix系统上实现与windows系统进行文件共享的免费开源软件。广泛应用于Unix-like与Windows之间,提供文件共享和打印机共享服务,使得不同系统之间跨平台共享资源更加便捷.Samba服务由服务端及客户端程序构成,采用的是smb/cifs网络协议。samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。
Linux中配置samba服务器
配置要求
(1)samba服务器目录
企业数据目录:/companydata
公共目录:/companydata/public
销售部目录:/companydata/sales
技术部:/companydata/tech
(2)企业员工情况
总经理:zjl
销售部:销售部经理 xsjl 员工 xsy1、员工 xsy2
技术部:技术部经理 jsjl、员工 jsy1、员工 jsy2
(3)samba服务要求
搭建samba文件服务器,建立公共共享目录,允许所有人访问,权限为只读,为销售部和技术部分别建立单独的目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录。
配置分析
对于建立公共目录public字段就可以实现匿名访问,员工只能访问本部门的共享目录,禁止访问非本部门的共享目录,可以通过设置目录共享字段“browseable = no”及字段“valid users”来实现其隐藏功能和相应的访问权限。这样设置不能很好得解决同一目录多种需求的权限设置,所以需要建立独立配置文件,为每个部门建立一个组后并为每个组建立配置文件来实现隔离用户权限会比较灵活。
配置实施
安装samba并启动samba服务
# yum install -y samba samba-client
# systemctl start smb.service nmb.service
修改防火墙设置
关闭selinux安全机制:setenforce 0
关闭防火墙:systemctl stop firewalld
建立各部门专用共享目录
#mkdir -p /companydata/public /companydata/xsb /company/jsb
添加用户和组
# groupadd xsb //创建销售部
# groupadd jsb //创建技术部
# useradd zjl //创建总经理
# useradd xsjl(xsy1/xsy2) //创建销售经理,销售成员1、2
# useradd jsjl (jsy1/jsy2) //创建技术经理,技术成员1、2
# gpasswd -M xsjl,xsy1,xsy2 xsb //将销售经理,销售成员1、2加入销售部
# gpasswd -M jsjl,jsy1,jsy2 jsb //技术部同理
设置samba用户
使用smbpasswd命令添加samba用户。
# smbpasswd -a zjl
New SMB password: 输入samba用户密码
Retype new SMB password: 确认samba用户密码
Added user zjl.
# smbpasswd -a xsjl
# smbpasswd -a xsy1
# smbpasswd -a xsy2
# smbpasswd -a jsjl
# smbpasswd -a jsy1
# smbpasswd -a jsy2
查看samba用户:pdbedit -L
删除samba用户:smbpasswd -x xxx
修改密码:smbpasswd 用户名
配置smb.conf文件
# vim /etc/samba/smb.conf 具体配置如下:
[public]
comment = public
path = /companydata/public
public = yes //是否公开
[xsb]
comment = xsb //注释
path = /companydata/sales
guest ok = no //是否允许用户匿名访问
writable = yes //是否可写
valid users = @xsb,zjl //允许指定用户访问(@代表一个组)
[jsb]
comment=jsb
path = /companydata/tech
guest ok = no
writable = yes
valid users = @jsb,zjl
配置完成之后,重启服务
# systemctl start smb.service nmb.service(或smb nmb)
配置文件权限
(1)公共目录:/companydata/public,允许所有用户读取文件但不能修改,权限保持默认。
(2)销售部目录:/companydata/xsb和技术部目录:/companydata/tjsb只允许本部门 用户写入数据,但不能删除其他用户的数据,不允其他部门访问,但总经理可以查看 不能修改,权限设置如下:
#chown xsbjl:xsb /companydata/xsb //设置文件夹的所有者以及所有组
#chown jsbjl:jsb /companydata/jsb
#setfacl -m u:zjl:rwx /companydata/sales //给总经理一个ACL权限,再不加入部门组的情况下,访问部门文件
#setfacl -m u:zjl:rwx /companydata/tech
客户端进行访问测试
在访问测试之前应该注意权限的设置,影响权限的因素有:共享权限,文件本身的权限,selinux安全机制
Windows客户端:\\192.168.10.129\public
Linux客户端:首先安装samba-client客户端工具
# smbclient -L 192.168.149.192 以服务器的root用户查看共享文件有哪些
# smbclient -U xsjl -L 192.168.149.192 以samba用户查看服务器的共享文件有哪些
# smbclient -U zjl //192.168.149.192/public 访问服务器共享文件
smb: >
常用命令:ls mkdir put get rm
Windows中配置samba服务器
案例2:Windows作为samba服务器(前提是你的用户必须是英文的)
(1)在Windows系统中设置一个共享目录:D:\sharefiles ,在属性中找到共享,并共享文件夹
(2)在Linux下安装 samba-client 客户端
# yum install samba-client
(3)安装 cifs-utils 软件包
# yum install cifs-utils
(4)在 Linux 下创建一个挂载点
# mkdir /mnt/Windows
(5)挂载 Windows 上的共享目录 D:\sharefiles 到 Linux 下的/mnt/Windows 目录下
# mount -t cifs -o username=HHHXXX //192.168.0.3/sharefiles /mnt/Windows Enter password: ********
192.168.0.3为windows的ip,并输入windows对应用户的登陆密码
(6)如果挂载成功,则可以进入/mnt/Windows 下进行相应操作。
(7)在Linux下/etc/fstab 文件中,加入该共享目录的挂载信息 (永久挂载)
192.168.0.3/sharefiles /mnt/Windows cifs username=HHHXXX,password=**** 0 0
(8)到此为止,Windows 上的共享目录//192.168.0.3/sharefiles就被成功挂载到了 Linux上面了,并且 Linux 重启后,会自动挂载该目录到/mnt/Windows 目录下
在Windows系统使用samba切换用户解决办法
samba是不允许一台电脑同时连接两个Linux用户的共享文件夹的
因此需要先断开之前用户的连接,然后再访问其他用户的共享文件夹
断开方法如下:
1、win+R输入cmd打开命令行工具
2、输入net use查看当前的连接
3、可以看到一条正在链接的,地址为对应远程的内容
输入指令进行删除连接
#net use \\ip\IPC$ /delete