版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
CIFS文件共享服务
CIFS 是一个新提出的协议,它使程序可以访问远程 Internet计算机上的文件并要求此计算机提供服务。 CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由 Microsoft使用。 SMB协议在局域网上用于服务器文件访问和打印的协议。像 SMB协议一样, CIFS在高层运行,而不像 TCP/IP协议那样运行在底层。 CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,提供*CIFS(Common Internet File System)协议,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
1.samba服务器的部署
在服务端:
yum install -y samba-client.x86_64 samba-common.x86_64 samba.x86_64 安装客户端/命令/服务
systemctl start smb 开启smb服务
systemctl enable smb 设置开机自启动
firewall-cmd --permanent --add-service=samba 防火墙添加smb服务
firewall-cmd --permanent --add-service=samba-client 防火墙添加客户端服务
firewall-cmd --reload 刷新
firewall-cmd --list-all 查看防火墙
2.添加用户
在服务端:
pdbedit -L 列出smb用户
useradd westos 添加用户1
useradd haohao 添加用户2
smbpasswd -a westos 为用户1添加登录smb的密码
smbpasswd -a haohao 为用户2添加登录smb的密码
netstat -antlupe | grep smb 查看端口(此时为445/139)
在客户端:
yum install -y samba-client.x86_64 samba-common.x86_64 samba.x86_64 安装客户端/命令/服务
方法1:
smbclient -L //172.25.254.128 -U westos 列出共享家目录
smbclient //172.25.254.128/westos -U westos 登陆westos用户
smb: \> !ls 查看可执行文件(用户端)
smb: \> put file (上传到服务端)
smb: \> get file (从服务端下载到用户端)
smb: \>quit 退出
方法2:
mount //172.25.254.128/westos /mnt -o username=westos,password=westos 挂载服务端到用户端
cd /mnt 进入/mnt目录下(也相当于进入服务端westos共享文件夹)
在服务端:
rpm -qc samba-common 查看配置文件
vim /etc/samba/smb.conf 编辑smb服务配置文件
workgroup = HAOHAO 修改主机名
systemctl restart smb 重启服务
hosts allow = 172.25.254.228 允许此ip主机登录
hosts deny =172.25.254.228 禁止此ip主机登录
systemctl restart smb 重启服务
其他不允许登陆:NT_STATUS_INVALID_NETWORK_RESPONSE
登陆失败:NT_STATUS_LOGON_FAILURE
3.SeLinux的影响
在服务端:
mkdir /westos_smb 建立共享目录
vim /etc/samba/smb.conf 编辑smb服务配置文件
[HAOHAO] 共享名
comment = Share Directoty 设置共享
path = /westos_smb 指定共享目录
#writable = yes “写”权限
systemctl restart smb 重启服务
touch /westos_smb/file{1..3} 在共享目录建立文件
vim /etc/sysconfig/selinux 编辑SeLinux文件,开启功能
reboot 重启
在客户端:
smbclient -L //172.25.254.128/westos -U westos 可以看到[HAOHAO]
mount //172.25.254.128/HAOHAO /mnt -o username=westos,password=westos 挂载服务端共享文件夹到用户端上
cd /mnt
ls 尝试查看文件,此时不可以查看
ls: reading directory .: Permission denied
在服务端:
setenforce 0 设置SeLinux为警告态
在客户端:
ls 此时可以查看
在服务端:
setenforce 1 设置SeLinux为开启
semanage fcontext -a -t samba_share_t '/westos_smb(/.*?)?' 更改共享目录安全上下文
restorecon -RvvF /westos_smb 刷新
vim /etc/samba/smb.conf 修改smb服务配置文件
writable = yes 服务器读写功能开启
systemctl restart smb 重启服务
在客户端:
touch file4 尝试建立文件,此时无法创建
touch: cannot touch ‘file4’: Permission denied
在服务端:
chmod 777 /westos_smb或setfacl -m u:westos:rwx /westos_smb 给目录或者用户满权限
在客户端:
touch file4 尝试建立文件,此时可以创建
ll 查看详细信息,file4的所有者和所属组id均为1001(此处对应的时服务端的westos用户)
注:服务端和客户端对于文件的拥有者可能不同,但是id肯定一致
4./mnt系统目录的共享
服务端:
vim /etc/samba/smb.conf 编辑smb服务配置文件
[mnt] 共享名
comment = Share System mnt directoty 设置共享mnt系统目录
path = /mnt 指定路径
#writable = yes ”写的权限“
systemctl restart smb 重启服务
客户端:
smbclient -L //172.25.254.128 -U westos 查看可以看到/mnt
mount //172.25.254.128/westos /mnt -o username=westos,password=westos
服务端:
setenforce 0 设置SeLinux为警告态
客户端:
ls 此时可以查看
服务端:
setenforce 1 设置SeLinux为开启
客户端:
ls 此时不可以查看
服务端:
getsebool -a |grep samba 查看samba服务的权限
setsebool -P samba_export_all_ro=on 打开只读权限
getsebool -a |grep samba 查看samba服务的权限
客户端:
ls 此时可以查看
服务端:
vim /etc/samba/smb.conf 编辑smb服务配置文件
writable = yes 开启“写”的权限
systemctl restart smb 重启服务
客户端:
touch file3 尝试建立文件,此时不可以建立
服务端:
setfacl -m u:westos:rwx /mnt 给用户westos满权限
客户端:
touch file3 尝试建立文件,此时不可以建立
服务端:
setsebool -P samba_export_all_rw 1 打开读写权限
getsebool -a |grep samba 查看samba服务的权限
客户端:
touch file3 可以建立
注:当开启samba_export_all_ro/samba_export_all_rw 权限后,再次登陆非系统文件,只授权可以不用修改selinux和安全上下文
5.相关权限
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
browseable = no 不允许列出
systemctl restart smb 重启服务
在客户端:
smbclient -L //172.25.254.128/HAOHAO -U westos 查看信息
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
browseable = yes 允许列出(如果注释此条权限默认为yes)
systemctl restart smb 重启服务
在客户端:
smbclient -L //172.25.254.128/HAOHAO -U westos 查看信息
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
write list = haohao 允许写的用户(可在haohao前面加字符+或者@表示haohao组所有用户)
systemctl restart smb 重启服务
在客户端:
mount //172.25.254.128/HAOHAO /mnt -o username=westos,password=westos 挂载
cd /mnt
touch fil6 此时不可以创建
touch: cannot touch ‘fil6’: Permission denied
umount /mnt 卸载
mount //172.25.254.128/HAOHAO /mnt -o username=haohao,password=haohao 挂载
cd /mnt
touch fil6 此时可以创建
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
valid users =haohao 允许浩浩登录
systemctl restart smb 重启服务
在用户端:
mount //172.25.254.128/HAOHAO /mnt -o username=haohao,password=haohao 可以成功挂载
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
map to guest = bad user
guest ok = yes 游客登陆是否允许
systemctl restart smb 重启服务
在客户端:
mount //172.25.254.128/haohao /mnt -o username=guest 匿名挂载
smbclient //172.25.254.128/haohao 匿名登录,需要输入密码直接回车即可
vim /etc/samba/smb.conf 编辑smb配置文件
guest ok = no 不允许游客登陆
systemctl restart smb 重启服务
在客户端:
smbclient //172.25.254.128/haohao 匿名登录,需要输入密码直接回车即可
在服务端:
vim /etc/samba/smb.conf 编辑smb配置文件
admin users = westos 授权westos用户为root用户 (测试出来的时候组不会变,用户会是root)
systemctl restart smb 重启服务
在客户端:
touch file7 建立文件
6.smb的多用户认证
需授权westos用户root权限
客户端:
yum install cifs-utils -y 安装多用户挂载软件
vim /root/smbpasswd 编辑用户认证文件
username=westos 服务端用户
passwd=westos 登录密码
mount //172.25.254.128/HAOHAO /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser 此时root用户可查看,普通用户不可读写
su - student 切换到客户端本地用户
cd /mnt 进入共享目录
ls 尝试查看
ls: reading directory .: Permission denied
su - lee 切换到客户端本地用户
cd /mnt 进入共享目录
ls 尝试查看
ls: reading directory .: Permission denied
cifscreds add -u westos 172.25.254.128 使用服务端用户westos身份,客户端本地用户也可读写
ls
touch file8
ls