1、cifs 以及 smb
cifs
- CIFS 是一个协议,它使程序可以访问远程计算机上的文件并要求此计算机提供服务。
- CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。
- CIFS是公共的或开放的SMB协议版本。
samba
- Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
- SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
- SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
注意:该实验中,不论是服务端还是客户端的主机名称都必须完整。
2、samba客户端设置
yum install samba-client.x86_64
#安装samba客户端即可。
3、samba服务器部署以及应用
1)安装软件以及环境设置
yum install samba samba-client.x86_64 samba-common -y
#服务端 客户端 以及常用命令
systemctl start smb
#开启服务
systemctl enable smb.service
#设置服务开机自动启动
systemctl stop firewalld.service
#关闭防火墙
getsebool -a | grep samba
#查看selinux 对samba的限制
setsebool -P samba_enable_home_dirs on
#打开允许用户访问家目录的开关。
2)建立smb用户并允许用户访问SMB服务
smbpasswd -a student
#创建smb用户并指定密码 使用的用户必须是系统中存在的用户
pdbedit -L
#显示已经存在的smb用户
pdbedit -x toto
#删除某一个smb用户
测试:客户端 使用student用户登陆smb服务 访问student的家目录。
smbclient -L //172.25.47.104/student -U student
#查看自己的家目录
smbclient //172.25.47.104/student -U student
#通过smb服务进入student的家目录中
3)客户端通过smb在用户家目录中上传文件
通过操作在客户端往服务端的student用户的家目录中添加文件。
进入共享家目录后上传文件
[root@client Desktop]# smbclient //172.25.47.104/student -U student
Enter student's password: #进入共享的家目录
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
. D 0 Tue Jan 6 22:37:04 2015
.. D 0 Mon May 6 08:03:18 2019
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Tue Jan 6 22:21:35 2015
.config DH 0 Tue Jan 6 22:37:04 2015
40913 blocks of size 262144. 28588 blocks available
smb: \> put file #上传客户端的本地文件到服务端的用户家目录中
putting file file as \file (0.0 kb/s) (average 0.0 kb/s)
smb: \> ls #查看文件
. D 0 Mon May 6 08:28:42 2019
.. D 0 Mon May 6 08:03:18 2019
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Tue Jan 6 22:21:35 2015
.config DH 0 Tue Jan 6 22:37:04 2015
file A 0 Mon May 6 08:28:42 2019 #文件上传成功
40913 blocks of size 262144. 28581 blocks available
smb: \>
使用挂载的方式添加文件:
将服务端的用户家目录通过smb服务挂载到客户端本地目录中,然后进入该目录操作。
mount -o username=student,password=123456 //172.25.47.104/student /opt
#进行挂载
4)修改smb共享的域
smbclient -L //172.25.47.104
#查看共享信息,显示域为MYGROUP
vim /etc/samba/smb.conf
#修改配置文件
88 #
89 workgroup = toto #修改89行的域为toto
90 server string = Samba Server Version %v
systemctl restart smb
#重新启动服务
smbclient -L //172.25.47.104
#再次查看共享信息,显示域已经改变
5)samba共享目录的建立与设定
- 添加新的共享目录
生成目录并设置配置文件
mkdir /totoshare
#新建目录作为共享目录
vim /etc/samba/smb.conf
#修改设置smb配置文件
[TOTO]
comment = my toto
path = /totoshare
修改新建目录的安全上下文
semanage fcontext -a -t samba_share_t '/totoshare(/.*)?'
restorecon -RvvF /totoshare/
systemctl restart smb.service
#重新启动服务
测试:
smbclient //172.25.47.104/TOTO -U student
#使用客户端访问该新建共享目录
6)SMB黑白名单设置
- 白名单
vim /etc/samba/smb.conf
#编辑配置文件
hosts allow = 172.25.47.104 #设置白名单,这里也可以直接对一个网段进行限制
systemctl restart smb
#重新启动服务
测试:172.25.47.104 主机访问共享目录,可以正常访问
172.25.47.204 主机访问共享目录,被拒绝!
- 黑名单
vim /etc/samba/smb.conf
#编辑配置文件
hosts deny = 172.25.47.104 #设置黑名单,这里也可以直接对一个网段进行限制
systemctl restart smb
#重新启动服务
测试:172.25.47.104 主机访问共享目录,被拒绝!
172.25.47.204 主机访问共享目录,可以正常访问
7)samba匿名访问
vim /etc/samba/smb.conf
#编辑配置文件
systemctl restart smb
#重新启动服务
测试:使用匿名登陆访问共享目录
mount -o username=guest //172.25.47.104/TOTO /opt
#使用匿名用户挂载共享目录
8)samba共享目录的权限参数设定
writable = yes ##打开写权限
write list = +student/@student ##对student组可写
write list = student ##对student、redhat用户可写
valid users = student ##student可以挂载目录
valid users = +student/@student ##student组可以挂载目录
browseable = no ##是否隐藏,no隐藏,yes不隐藏
admin users = student ##共享目录添加管理员
1 设置所有用户对共享目录可写(上传以及删除文件)
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 writable = yes
chmod 777 /totoshare/
#给共享目录权限
systemctl restart smb
#重新启动服务
测试:使用student用户对共享目录进行挂载,可以进行创建或者删除文件
2 设置指定用户对共享目录可写(上传以及删除文件)
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 write list = student
chmod 777 /totoshare/
#给共享目录权限
systemctl restart smb
#重新启动服务
测试:
使用指定用户对共享目录进行挂载,可以进行创建或者删除文件
使用其他用户对共享目录进行挂载,并没有写权限
3 设置属于某组的用户对共享目录可写(上传以及删除文件)
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 write list = @student # +student 同样的效
chmod 777 /totoshare/
#给共享目录权限
systemctl restart smb
#重新启动服务
测试:
用户toto不属于student组 没有写权限
修改用户toto的附加组中存在student组,之后对共享目录存在写权限。
4 指定共享目录的有效用户(该用户可以使用该共享目录)
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 valid users = student
systemctl restart smb
#重新启动服务
测试:
使用用户toto无法挂载该共享目录,无法使用
使用用户student可以正常那个挂载使用该目录
5 指定共享目录的有效用户组(属于改组的用户可以使用该共享目录)
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 valid users = @student # +student 同样的效果
systemctl restart smb
#重新启动服务
测试:
添加附加组student到用户toto,之后其属于student组,可以正常使用该共享目录
6 设置隐藏共享目录
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 browseable = no #当该值等于no的时候隐藏目录,yes时候不隐藏
systemctl restart smb
#重新启动服务
测试:查看共享信息,不显示该共享目录,虽然被隐藏但是不影响该目录的挂载。
7 共享目录添加管理员
vim /etc/samba/smb.conf
#编辑配置文件
325 [TOTO]
326 comment = my toto
327 path = /totoshare
328 admin users = student #设置student用户为该共享目录的管理员
systemctl restart smb
#重新启动服务
测试:
共享目录中文件的所有者以及所属组与创建该共享目录的用户没有关系,只和使用的是哪一个登陆smb在该共享目录中创建的文件。
但是作为管理员,其所新建的文件所有者为超级用户(root)
9)smb多用户挂载
注意:多用户挂载是在客户端进行设置的。
- 多用户挂载主要是用来解决:当客户端使用超级用户对共享目录进行挂载之后,其他用用户同样可以直接使用该挂载目录,存在安全隐患。使用多用户挂载之后,其他用户想访问挂载之后的共享目录时候,必须经过验证。
yum install cifs-utils.x86_64 -y
#安装软件
vim /root/passfile
#建立共享目录认证文件
username=student
password=123456 #文件内容为smb用户以及密码
chmod 600 /root/passfile
#给予认证文件权限
mount -o credentials=/root/passfile,multiuser,sec=ntlmssp //172.25.47.104/TOTO /opt
root用户使用认证文件对共享目录进行挂载
测试:超级用户可以正常使用该挂载目录 ,但是普通用户必须经过认证才可以查看共享目录:
[student@client opt]$ cifscreds add -u student 172.25.47.104
Password:
[student@client opt]$ ls
file1 file2 file3 file5 lele tops