什么是smaba
Samba是在Linux和UNIX系统上实现SMB(信息服务)协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Message Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
(简单来说smaba就是支持不同计算机之间实现资源共享的服务性软件)
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
对于企业来讲,smabab是一个很好解决文件共享的软件,这个软件可以在linux下运用,
smb支持混合型的共享:window和linux、windows和类unix、windows和windows。
CIFS文件储存
文件共享
samba共享管理块windows
CIFS linux/unix
客户端 命令 服务
139 445 tcp/udp
SMB服务的搭建
这个实验我们准备两台虚拟机,ip为172.25.254.102的虚拟机作为服务端,ip为172.25.254.202虚拟机作为客户端
在102虚拟机上
yum search smaba
yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y ##安装samba的客户端应用程序 支持文件 服务端应用程序
systemctl start smb
useradd westos ##创建系统用户 samba的用户必须是系统用户
useradd lee
smbpasswd -a westos ##虽然建立了系统用户 要给smb说明这个是可以使用它的用户 所以给用户设定使用smb的密码
smbpasswd -a lee
pdbedit -L ##查看smb的用户
在202虚拟机上
yum install samba-client.x86_64 -y ##只安装客户端
smbclient -L //172.25.254.102 -U westos ##显示westos用户的默认分享目录 (一般分享目录是用户的家目录/home/westos)
smbclient //172.25.254.102/westos -U westos ##通过smb登陆的方式对westos用户的分享目录进行操作
mount //172.25.254.102/westos /mnt -o username=westos,password=redhat ##通过挂载的方式对westos用户分享目录进行操作
服务端
安装samba的客户端应用程序 支持文件 服务端应用程序 打开服务
#创建系统用户
smb服务使用用户
查看smb的用户
客户端
安装客户端软件
显示westos用户的默认分享目录 /home/westos
在客户端 挂载westos用户分享目录
在挂载目录下创建文件
回到服务端 在westos用户的家目录下查看是否建立了文件
通过smb登陆的方式对westos用户的分享目录进行操作
smb登陆进入的是用户的家目录
!ls 查看登陆用户之前路径下的内容
我们可以上传或下载文件
在服务端该用户家目录查看 是否上传成功
对客户端的控制
在服务端
rpm -qc samba-common ##查看服务的配置文件
/etc/samba/smb.conf ##配置文件
vim /etc/samba/smb.conf 编辑配置文件
89 workgroup = haha ##设定工作域为haha
96 hosts allow = 172.25.254.202 ##允许访问的ip
97 hosts deny= 172.25.254.202 ##不允许访问的ip
1.工作域设定
查看服务的配置文件
之前显示匿名用户的登陆信息 工作域为MYGROUP
更改配置文件工作域为haha 重启服务 查看匿名用户登陆信息工作域发生改变
2.白名单设定
设定允许202访问共享目录
202可以访问
102不能访问
3.黑名单设定
设定202不能访问smb用户家目录
202不能访问
selinux对自建目录的影响
在服务端
首先打开selinux的强制级别
mkdir /smb ##自建目录
vim /etc/smaba/smb.conf ##编辑服务的配置文件
[sudanni] ##对外共享的名称
comment = Share Directory ##类型共享性目录
path = /smb ##实际共享的目录名称
writable =yes ##可写
systemctl restart smb ##重启服务
semanage fcontext -a -t samba_share_t '/smb(/.*)?'更改安全上下文
restorecon -RvvF /smb加载
在客户端
mount //172.25.254.102/sudanni /mnt -o username=westos,password=redhat
设定强制级别
编辑服务的配置文件
重启服务后 查看共享目录信息
在服务端建立文件
挂载后 在查看该文件 查看不到
更改自建目录的安全上下文
再次在客户端上查看 可以查看的到
selinux对系统级目录的影响
通过降低samba服务的安全性来对系统目录进行操作 (如果是通过修改系统目录的安全上下文的话,会对该系统级的目录下其他文件产生影响,可能会造成对其他文件的读取问题)
在服务端
vim /etc/samba/smb.conf ##编辑配置文件 设定/mnt为分享目录
[mnt]
comment = Share Directory
path = /mnt
writable =yes
systemctl restart smb
touch .mnt/file{1..3} ##在/mnt下建立三个文件
在测试端
mount //172.25.254.102/mnt /mnt -o username=westos,password=redhat ##挂载分享目录到/mnt
cd /mnt ##进入到挂载点
ls ##查看分享目录下的内容 因为selinux的影响安全上下文不一致 是不能观察到的
getsebool -a | grep samba ##查看samba服务的开关
setsebool samba_export_all_rw on ##打开读写开关
semanager fcontext 加载在内核安全上下文中的
编辑配置文件
服务端在共享目录下 建立文件
客户端进行目录挂载 但却无法查看在该目录下建立的文件 服务端和客户端/mnt目录安全上下文不一致
查看samba服务的开关 打开读写开关
再次查看 可以查看到 也可以建立文件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/060259e669e7dc847d6c48e3969ae66f.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4fe97ef149f9f5f57e69b2c70ba4fa1c.png)
参数设定
在服务端编辑文件
vim /etc//samba/smb.conf
systemctl restart smb
1.是否能列出分享目录 browseable
未设定之前
设定不列出共享目录
重启之后 不显示
默认看不到 但是指定用户身份 去查看可以看到
smbclident -L //172.25.254.102/sudanni -U westos
2.设定用户能不能写 write list
在服务端编辑文件
vim /etc//samba/smb.conf
编辑配置文件 只有lee用户可以写
systemctl restart smb
3.设定用户能不能登陆 valid users
在服务端编辑文件
vim /etc//samba/smb.conf
编辑配置文件 只有lee用户登陆
westos用户不能挂载
lee用户可以挂载
systemctl restart smb
valid users=+westos 属于westos组的用户就可以登陆 @和+功能相同
4.游客登陆
在服务端编辑文件
vim /etc//samba/smb.conf
systemctl restart smb
5.提升用户权限
在服务端编辑文件
vim /ect/samba/smb.conf
[mnt]
comment = Share Directory
path = /mnt
writable =yes
admin users = westos ##westos用户在该分享目录下的权限是超户权限
systemctl restart smb
实现多用户挂载
现象:root挂载,但是切换到其他用户,其他用户也可以访问,不安全!
要求:自己挂载的,只能自己看,别人要看需要通过验证!
在客户端
yum install cifs-untils -y ##下载支持多用户挂载的软件
vim /root/smbpasswd ##编辑挂载共享目录时,用户身份的一个认证文件,之前挂载的时候用户信息是裸露在外面的,现在写在认证文件里面
chmod 600 /root/smbpasswd ##只有管理员可以看认证文件
username=westos
password=redhat
mount //172.25.254.102/sudanni /mnt credentials=/root/smbpasswd,sec=ntlmssp,multiuser
/root/smbpasswd 认证的文件
下载支持多用户挂载的软件
编辑认证文件
限制权限
mount //172.25.254.102/sudanni /mnt -o credentials=/root/smbpasswd ##以认证文件方式挂载,现在不裸露samba用户身份了,但是切换到student用户还是可以查看挂载目录内的内容,不验证。
umount /mnt ##解挂
mount //172.25.70.22/WESTOS /mnt -o credentials=/root/smbpasswd ,sec=ntlmssp,multiuser root用户挂载的时候不让别的本地用户看自己的操作,su - student切换到本地用户, 查看,被拒绝,现在安全了
/root/smbpasswd | 认证的文件 |
sec=ntlmssp | 认证方式 |
multiuser | 多用户认证 |
那么此普通用户student,想要查看此共享目录内的内容,就要通过验证:
cifscreds add -u lee 172.25.254.102 给本地用户student一个samba用户的身份,此时他就可以通过验证了。
cifscreds clear -u ranran 172.25.70.22 取消samba用户身份