一、简介
1.CIFS:
CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
2.CIFS的功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码(Unicode)文件名:文件名可以使用任何字符集,而不局限于为英语或西欧语言设计的字符集。
3.samba:提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统。
二、CIFS文件系统的安装以及与smb用户共享文件配置
搭建环境:
服务端: ip 172.25.254.103
客户端:ip 172.25.254.203
一、首先在服务端server中配置
1.安装共享服务yum install samba samba-common samba-client -y
2.systemctl start smb 启动服务
3.systemctl stop firewalld 关闭火墙
systemctl disable firewalld 开机不启动火墙
4.添加smb用户,smb用户必须是本地用户,如果没有,则需要新建用户
useradd westos 新建用户westos
将student用户和westos用户添加到smb用户中。
smbpasswd -a student 添加student用户到共享服务
smbpasswd -a westos 添加westos用户到共享服务
pdbedit -L 查看服务添加的用户
pdbedit -x student 在共享服务中删除student用户
pdbedit -L 查看
5.修改selinux的状态为警告模式(selinux本身关闭时不用修改)
getenforce 查看selinux状态
Enforcing
setenforce 0 改为警告模式
二、在客户端主机desktop进行配置
1.yum install samba-client -y 安装软件
2.测试:
匿名用户显示内容
[root@client ~]# smbclient -L //172.25.254.103
smb用户westos显示内容
[root@client ~]# smbclient -L //172.25.254.103 -U westos
smb用户身份上传文件(上传的文件是客户端本来存在的文件)
smbclient //172.25.254.103/westos -U westos
服务端可以看到上传的文件
smb用户挂载
将smb用户家目录挂载在/test下
mount -o username=westos,password=ls //172.25.254.103/westos /test 用挂载方式使westos用户连接samba共享服务
进入/test 目录创建文件
服务端有此文件,文件共享成功
三、smb服务的访问控制
1.共享服务的域名修改
2.selinux强制状态下共享服务
3.共享服务的黑白名单
1.在服务端server中进行配置
修改域名
smbclient -L //172.25.254.103编辑看默认状态下域名 MYGROUP
vim /etc/samba/smb.conf 编辑配置文件
写入workgroup = WESTOS
smbclient -L //172.25.254.103 再次查看修改后域名 WESTOS
2.selinux强制状态下共享服务
1.setenforce 1 selinux改为强制状态
getsebool -a | grep samba 服务端查看samba_enable_home_dirs的sebool值,并将其打开
setsebool -P samba_enable_home_dirs on 执行,允许selinux强制状态下共享文件
测试:
smbclient //172.25.254.103/westos -U westos 客户端执行,看smb用户是否可以登陆,实验证明可以登陆
3.共享服务白名单
编辑vim /etc/samba/smb.conf 配置文件
写入 hosts allow =172.25.254.103
systemctl restart smb.service 重新启动服务
测试:
ip为172.25.254.103用户可以登陆成功,其余用户不能登陆访问
4.共享服务黑名单
编辑配置文件vim /etc/samba/smb.conf
写入 hosts deny =172.25.254.103 不允许172.25.254.103登陆访问
systemctl restart smb.service 重新启动服务
测试:
smbclient //172.25.254.103/westos -U westos
四、共享目录
1.共享自己创建的目录
建立目录,并在该目录下创建文件用于测试
vim /etc/samba/smb.conf 编辑配置文件
最后写入
[linux]
comment = westos dir share
path = /westos
systemctl restart smb.service 重新启动服务
客户端可以查看到该目录的信息
但是smb用户不能正常登录该目录
修改该目录的安全上下文和smb服务的安全上下文保持一致
递归刷新并显示刷新过程
ls -Zd /westos/ 查看westos的安全上下文
semanage fcontext -a -t samba_share_t '/westos(/.*)?' 将westos目录的安全上下文改为 samba_share_t
restorecon -RvvF /westos/
再次测试:
smbclient //172.25.254.103/linux -U westos 进入测试
2.共享系统目录
vim /etc/samba/smb.conf 编辑配置文件
最后写入
[opt]
comment = opt directory
path =/mnt
systemctl restart smb.service 重新启动服务
在服务端的/mnt下建立文件用于测试
客户端能看到/mnt目录,但是不能看到/mnt里边的文件
如果将/mnt的安全上下文修改为samba_share_t,显然不太合适,因为/mnt是系统目录
smbclient //172.25.254.103/opt -U westos查看共享目录无法查看到file文件
将selinux的功能限制打开
getsebool -a | grep samba 执行
setsebool -P samba_export_all_ro on 开放selinux对smb服务共享目录功能
smbclient //172.25.254.103/opt -U westos 再次查看,可以看到file,共享成功。
samba 的参数应用(共享目录的功能设定)
writable = yes 所有人可写
write list = @westos 指定用户可写 加上@在westos的组可写
valid users = + student 指定用户可以登陆 ,+代表在student组里可以登陆
browseable = yes 可以被列出
admin users = student student为超级用户身份
guest ok = yes 匿名用户可以登陆
添加一个smb用户方便后续测试:
smbpasswd -a student
pdbedit -L
1.设定该目录可以被写
编辑配置文件 vim /etc/samba/smb.conf
systemctl restart smb.service 重新启动服务
chmod 777 /westos/ 给共享目录权限
测试:
smbclient //172.25.254.103/linux -U westos
删除文件成功
上传文件成功
2.指定用户可写
vim /etc/samba/smb.conf 编辑配置文件
测试:
westos 用户可写
student 用户不可写
3.指定用户组内成员可写
vim /etc/samba/smb.conf 编辑配置文件
此处@ | + 表示指定用户组
测试:
student不是westos组内成员,所以不可写
添加student用户到westos组中
usermod -G westos student
再次测试:
4.指定用户登陆
编辑配置文件vim /etc/samba/smb.conf
valid users = student 指定用户登陆
测试:
smbclient //172.25.254.103/linux -U student
smbclient //172.25.254.103/linux -U westos
5.指定用户组内成员登录
编辑配置文件vim /etc/samba/smb.conf
测试:
添加westos用户到student组,再测试成功登陆
6.设定该目录是否可被浏览
编辑配置文件vim /etc/samba/smb.conf
browseable = yes(设定该目录允许被浏览,不隐藏)
测试:
7.设定指定用户为root用户
编辑配置文件vim /etc/samba/smb.conf
测试:
在测试端上传一个文件
在服务端:文件的所有人为root
将指定信息注释掉
再次上传
在服务端:文件的所有人为student
8.匿名用户登陆
编辑配置文件vim /etc/samba/smb.conf
guest ok = yes表示允许匿名用户登陆
测试:
服务端查看
五、多用户挂载
首先在服务端关闭匿名用户可登陆
编辑配置文件vim /etc/samba/smb.conf
在服务端建立新的用户 例如 lee 并添加到共享服务中
useradd lee 新建用户
smbpasswd -a lee
pdbedit -L
在客户端进行实验
当不进行smb认真用root用户挂载则其他用户也可以查看并建立删除文件
mount //172.25.254.103/linux /test/ -o username=westos,password=ls
卸载:
实现多用户挂载:在客户端安装多用户挂载的软件
编写已知smb用户的认证文件(将用户身份和密码编辑进去)
设置文件权限
进行挂载
credentials=/root/smbpass 挂载时读取的文件(用户名和密码)
sec=ntlmssp 认证方式为smb认证,加密方式为ntlmssp
multiuser 多用户挂载
在/test下新建一个文件,可以看到文件的所有人和所有组是服务端smb用户westos的所有人和所有组
切换到本地用户student,则不能查看
给本地student用户添加smb认证
此时用student用户新建文件,可以看到文件的所有人和所有组是服务端smb用户lee的所有人和所有组
六、开机自动挂载
首先卸载
编辑vim /etc/fstab文件
写入:
自动挂载成功