smb/cifs 文件系统存储协议是微软和sun公司联合开发的协议微软公司用smb,unix linux使用的是cifs,只是名称有区别
端口 : 139和443
SMB的部署:
准备两台虚拟机,一台做服务端,提供服务,另一台为客户端,做测试用。
虚拟机server为服务端ip为172.25.254.232;desktop为客户端ip为172.25.254.132
SMB服务端部署
install -y samba-client.x86_64 samba-common samba.x86_64 ##安装smb的服务
systemctl start smb 打开SMB服务
firewall-cmd --permanent --add-service=samba 火墙开放samba服务
firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload
pdbedit -L ###查看smb用户,此用户必须为系统用户。
useradd mq ###建立用户mq
useradd westos ####建立用户westos
smbpasswd -a mq ####设置smb用户的认证密码
smbpasswd -a westos
pdbedit -L 查看smb用户
客户端部署
yum install -y samba-client.x86_64
systemctl start samba-client
测试
smbclient -L //172.25.254.132 -U westos ##查询smb共享的列出信息,默认显示用户的家目录
smbclient //172.25.254.132/westos -U westos
smb: > !ls ##查看本地可上传文件
在服务端查询看是否上传到服务器
注:put 可以上传文件,mput 上传目录
rpm -qc samba-common ###查看程序的配置文件
/etc/logrotate.d/samba
/etc/samba/lmhosts
/etc/samba/smb.conf ##主配置文件
/etc/sysconfig/samba
工作组的属性改变
vim /etc/samba/smb.conf
workgroup = WESTOS
systemctl restart smb
测试:
在客户端
smbclient //172.25.254.132/westos -U westos
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] 重启前Domain=[MYGROUP]
smbclient //172.25.254.132/westos -U westos
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1] 重启后Domain=[WESTOS]
用户访问控制列表
vim /etc/samba/smb.conf
hosts allow = 172.25.254.232 ##允许用户登陆名单,可以是网段或多个网段。
hosts allow = 172.25.254. 127. 192.168.1.
systemctl restart smb
在172.25.254.32主机上测试测试:
在172.25.254.32主机上测试结果为拒绝
[kiosk@foundation32 Desktop]$ smbclient //172.25.254.132/westos -U westos
Enter westos’s password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
在172.25.254.232主机上测试登陆成功
[root@squid mnt]# smbclient //172.25.254.132/westos -U westos
Enter westos’s password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: >
vim /etc/samba/smb.conf
hosts deny = 172.25.254.132
测试:
在172.25.254.132主机上测试拒绝登陆
[root@squid mnt]# smbclient //172.25.254.232/mq -U mq
Enter westos’s password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
在172.25.254.32主机上测试结果登陆成功
[kiosk@foundation32 Desktop]$ smbclient //172.25.254.132/westos -U westos
Enter westos’s password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: >
更改共享目录
先确定selinux状态
getenforce
Enforcing
selinux在Enforcing状态下的自建目录共享
mkdir /smb
vim /etc/samba/smb.conf
[WESTOS] 用户登陆时时别的字符,可以随意设置
comment = Share Directory 用户登陆界面的提示信息,可以随意编写
path = /smb 设置共享目录为/smb
writable = yes 设置目录可写功能打开
semanage fcontext -a -t samba_share_t ‘/smb(/.*?)?’ ##修改/smb目录及目录里面的内容的安全上下文标签属性为samba_share_t
restorecon -RvvF /smb/ ####加载安全上下文标签属性
查看目录的读写权限
chmod 777 /smb/ 赋予目录777的读写权限
setfacl -m u:mq:rwx /smb ###设置westos用户对/smb的读写执行权限
测试:
在客户端
系统级目录的共享:
服务端:
vim /etc/samba/smb.conf ##smb配置文件中加入系统目录
[mnt]
comment = Share System mnt Directory
path = /mnt
writable = yes
systermctl restart smb
系统级目录共享
系统级目录随系统安装自动建立的目录,因为随系统安装生成很多程序多会使用如果改变次目录的安全上下文的标签,就会变成只有samba服务可用,其他服务不可使用的结果,这样不符合系统管理的需求,所以不能这样改变
下面是针对系统目录的samba共享的设置
setsebool -P samba_export_all_ro on ###设置selinux对smb服务的只读权限永久开启,-P 永久属性不会随着系统的重启而失效。
setsebool -P samba_export_all_rw 1 ##设置selinux对smb服务的读写权限永久开启,开启此权限后selinux对smb服务的所有安全策略跳过,降低smb服务的安全性。
getsebool -a | grep samba
显示只有setsebool -P samba_export_all属性时on 表示selinux对samba共享服务的读写不作限制,只有在共享系统目录时才这样操作,这样操作是降低安全等级的。
系统及目录默认只对超级用户有写的权限,所以我们要共享此目录需要给samba用户 (pdbedit -L 可查看到的用户)权限
setfacl -m u:mq:rwx /mnt
客户端:
mount //172.25.254.132/mnt /mnt -o username=westos,password=123456
cd /mnt
touch file{1…5}
在服务端;
cd /mnt
ls ##可以看到在客户端建立的file{1…5}文件
可以看到mq的id为1001和客户端建立时查看的文件属性中的id是一致的。
Samba 配置文件参数
writable = yes ###允许用户可写
browseable = no ###samba服务列出时no隐藏目录,yes显示目录,默认为yes
smbclient -L //172.25.254.132 ##查看samba服务的列出目录
设置前可以看到WESTOS
设置后看不到了
write list = +lee ##只对lee用户组可写 +lee=@lee lee为单用户。
westos用户不能建立文件,只有只读权限,证明设置成功,只对用户mq可写
valid users = +mq ##用户组是否可以登陆的权限,+=@ mq为单用户。
用户westos挂载时拒绝,用户mq挂载成功
map to guest = bad user ##设置匿名用户映射为guest
guest ok = yes ##guest 游客登陆功能打开
客户端测试:
smbclient //172.25.254.132/SMB ##可以直接登陆,密码为空
匿名挂载
mount //172.25.254.232/WESTOS /mnt -o username=guest
mount //172.25.254.232/WESTOS /mnt -o username=guest,password=""
admin users = westos ##设置普通用户的身份为root
systemctl restart smb ##重启服务
客户端测试
mount //172.25.254.132/WESTOS /mnt -o username=westos,password=123456 ##挂载
[root@squid /]# cd /mnt/
[root@squid mnt]# ls
[root@squid mnt]# touch file1
[root@squid mnt]# ls
file1
[root@squid mnt]# ll
total 0
-rw-r–r--. 1 root 1002 0 Aug 13 03:25 file1 ##用户为root 组为服务端的挂载用户组
显示新建的asas文件用户为root,证明设置成功。
服务端查看:
[root@lamp smb]# ls
file1
[root@lamp smb]# ll
total 0
-rw-r–r--. 1 root westos 0 Aug 13 03:25 file1
samba 的多用户挂载
针对客户端设置:
vim /root/smbpassword
username=westos
password=123456
yum install -y cifs-utils.x86_64 ##安装客户端samab认证程序
mount //172.25.254.132/SMB /mnt -o credentials=/root/smbpassword,sec=ntlmssp,multiuser
multiuser 多用户挂载认证
sec=ntlmssp 认证方式
测试
useradd westos
创建普通用户westos
su - westos
切换到westos用户
未经过认证不能访问mnt目录内容
cifscreds add -u mq 172.25.254.132
通过认证可以访问目录内的内容