1. samba服务简介
作用:
windows系统共享文件时用到的协议smb
smb是由miscrosoft+sun联合开发的,
在linux中称为 cifs文件系统
在Windows中共性一个文件,
在linux机中安装samba-client 后执行以下命令可以看到Windows共享的内容:
-L列出 -U指定用户
直接执行可得到一个类似于lftp的界面,里面可以上传删除文件,但是不可以建立文件,这样就是不同系统的文件传输。由于这样的界面操作的命令太少,我们将它挂载到/mnt下使用,进行操作时更改的不是linux主机目录,而是Windows主机目录下的内容。
在里面建立文件,
建立到Windows主机上去了。
2.samba基本信息
服务启动脚本:
smb.service
主配置目录:
/etc/samba
主配置文件:
/etc/samba.conf
安全上下文:
samba_share_t
端口:
139
445
安装包:
samba
samba-common
3.samba的安装与启用
samba的安装:
dnf install samba samba-common samba-client -y
samba服务启动:
systemctl enable --now smb
samba服务启用
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
测试:
smbclient -L //192.168.0.20 ##当要输入root密码时请直接回车
4.samba用户的建立
1.samba用户必须是本地存在的用户
2.samba用户的建立
smbpasswd -a thermal ##添加用户
pdbedit -L ##查看用户列表
pdbedit -x thermal ##删除用户
5.samba用户访问家目录
当selinux开启时:
setsebool -P samba_enable_home_dirs on 开启功能后才能访问用户家目录中的内容
windows下,搜索栏搜索
\192.168.0.20 ##访问
net use ##查看访问记录
net use * /del ##删除访问记录
在linux下:
smbclient //192.168.0.20/lee -U lee
6.samba服务共享目录
mkdir /westosdir 建立目录
touch /westosdir/westosfile{1..5} 建立文件
semanage fcontext -a -t samba_share_t '/westosdir(/.*)?' 更改安全上下文
restorecon -RvvF /westosdir/ 刷新安全上下文
vim /etc/samba/smb.conf
[westosdir] ##共享名称
comment = westosdir ##共享说明
path = /westosdir ##共享路径
systemctl restart smb
测试:
smbclient //192.168.0.20/westosdir -U westos
7.samba的访问控制
hosts allow 192.168.0.30 192.168.0. #192.168.0. 是一个网段,代表一个网段的ip都可以访问
hosts deny 192.168.0.30 #作用和allow相反
当写到单独共享目录时只对此共享目录生效,当写到【GLOBAL】底下时对samba整体生效。
30主机访问时成功。
10主机访问westosdir目录被拒绝,但可以访问其它的目录,如下:
当写到global下时:
10主机访问所有目录都被拒绝。
8.samba的常用配置参数
讲samba服务器主机的 /westosdir 挂载到30主机的/mnt/下,
无法删除或建立内容,因为这些文件只对root可写。
cmod 777 /westosdir 更改权限后仍然无法删除。
因为samba不允许我们做出这样的操作。
vim /etc/samba/smb.conf
writable = yes ## 可写
write list = westos ## 指定用户可写
由于挂载时使用的是lee用户,所以不可写
write list = +westos
write list = @westos ## 指定组可写,@,+相同
将lee加入到westos组中,
则可写。
valid users = lee ## 指定访问用户
lee用户可以访问和挂载,westos用户则不行。
valid users = +lee|@lee ## 指定访问组,用法同上
默认可以看见westosdir目录;
browseable = yes|no ## 是否隐藏共享
被隐藏
map to guest = bad user ## 写到全局设定中,所有匿名用户映射到guest,
因为guest是windows中的匿名用户,linux下为anonymous
guest ok = yes ## 允许匿名用户访问
则匿名用户可以访问,当:
则匿名用户不可以访问。
当我们在客户机上的挂载点建立文件时,实际上实在服务器上建立;
test为客户机
dns为服务器,可以看出建立的文件时lee建立的。
admin users = lee ##指定此共享的超级用户身份,当我们以lee建立文件时root身份执行
9.samba的多用户挂载
本实验全部在客户端主机中进行。
在客户端如果用普通的挂载方式,没有用过用户验证的人也可以访问samba服务
我们用root用户挂载samba的内容,可以看到目录下的内容,当我们切换至thermal用户时,他没有经过挂载认证,仍然可以看到挂载到 /mnt/ 下的内容。这就是系统的安全漏洞。
客户机安装 cifs
dnf
vim /root/smbpass 用户认证文件
password= 我没设置密码。所以为空
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.0.20/westosdir /mnt
#credentials=/root/smbpass 指定认证文件
#sec=ntlmssp 指定认证类型
#multiuser 支持多用户
此时客户端主机的thermal 用户就不可以访问mnt 目录下的内容了,因为thermal用户没有通过认证
此时我们可以用cifscreds 命令对 thermal 用户进行认证
[thermal@test ~]$ cifscreds add -u lee 192.168.0.20
通过认证可以显示。
[westos@test /]$ cifscreds add -u lee 192.168.0.20
Key search failed: Key has expired
当遇到此报错信息
[westos@test /]$ cifscreds add -u lee -d 192.168.0.20
Password:
[westos@test ~]$ cifscreds clearall
执行以上两条命令解决报错。
这就是samba的多用户挂载,不仅仅只使用挂载时使用的服务器上的westos用户,还可以使用服务器上的lee用户