一、基本概念
- CIFS:
CIFS(Common Internet File System)是一种通用网络文件系统,主要用于网络设备之间的文件共享。CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统。
Linux 系统可以挂载和访问 CIFS 文件共享 , 如同常见的网络文件系统一样。然而 , 由于 CIFS 是基于 NTFS 文件系统权限模型及其自身的身份验证系统来构建的 , 因而 CIFS 协议中的所有内容并不能很好地映射到 Linux 中
CIFS可以提供的功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码文件名 - samba: 提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统
软件包:
Samba-common Samba 的支持文件
Samba-client 客户端应用程序
Samba 服务器应用程序
服务名称: smb、nmb
服务端口: 通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容
主配置文件: /etc/samba/smb.conf
二、CIFS文件系统的安装以及与smb用户共享文件配置
- 环境:
服务端ip:172.25.254.131
测试端ip:172.25.254.231 - 服务端:
- 服务端首先下载安装samba及其组件:yum install samba samba-common samba-client
- systemctl satrt smb 将服务开启
- 关闭防火墙,并设置开机不自启动
- 添加smb用户,smb用户必须是本地用户,如果没有,则需要新的本地创建
- student是本身存在的用户,所以添加smb用户成功,而westos用户本身不存在,则添加失败
- 新建wetsos用户后,添加相应的smb用户成功
- pdbedit -L 显示系统中的smb用户
- pdbedit -x 删除指定smb用户
- 修改selinux的状态为警告模式(selinux本身关闭时不用修改)
- 客户端:
- 安装 samba-client
- 测试:
(1)smb用户上传文件
- 匿名用户显示内容
- 用smb用户westos显示内容
- 用smb用户身份上传文件(上传的文件是客户端本来存在的文件)
- 服务端可以看到上传的文件
- (2)smb用户挂载
以挂载的方式进行文件共享,好处就是可以使用shell里的命令 - 将smb用户家目录挂载在/mnt下
- 进入/mnt创建一个文件wold
- 服务端有此文件,文件共享成功
三、smb用户的访问控制
- 域名的修改
- 默认域名为MYGROUP
- 编辑配置文件修改域名为WESTOS
- 域名修改成功
- selinux状态为强制模式时实现smb用户登录
- 修改selinux状态为强制模式
- 此时smb用户不能正常登录
- 在服务端查看samba_enable_home_dirs的sebool值,并将其打开
- 此时smb用户可以正常登录
- 白名单的设定
- 编辑配置文件
- 表示只允许172.25.254.131登陆访问登陆访问,其余用户默认加入黑名单
- 测试:
- 黑名单的设定
- 编辑测试文件
- 不允许172.25.254.131登陆访问,其余用户默认加入白名单
- 测试
四、共享目录
- 共享自己创建的目录
- .建立目录,并在该目录下创建文件用于测试
- 修改主配置文件,将新建的文件目录编辑进去
- 重启服务
- 客户端可以查看到该目录信息
- 但是smb用户不能正常登录该目录
- 这是因为selinux安全上下文的问题
- 修改该目录的安全上下文和smb服务的安全上下文保持一致
递归刷新并显示刷新过程 - 此时,smb用户可以正常登录该目录
- 共享系统目录
- 修改主配置文件
- 在服务端的/mnt下建立文件用于测试
- 客户端能看到/mnt目录,但是不能看到/mnt里边的文件
如果将/mnt的安全上下文修改为samba_share_t,显然不太合适,因为/mnt是系统目录 - 修改方式:将selinux的功能限制打开
- 此时客户端可以看到/mnt下的文件,共享成功
- 共享目录的功能设定
添加一个smb用户方便后续测试: - 设定该目录可以被写
- 编辑配置文件
- 表示允许所有用户可写
- 重启服务(后面不再赘述)
- 测试:
此时不能删除共享目录下的内容 - 服务端修改/hui的权限为777
- 此时,删除文件成功
- 上传文件成功
- 指定用户可写
- 编辑配置文件
- 测试
westos用户可写 - student用户不可写
- 指定用户组内成员可写
- 编辑配置文件
- 此处@|+ 表示指定用户组
- 测试:
student不是westos组内成员,所以不可写 - 添加student用户到westos组中
- 此时,student用户可写
- 指定用户登录
- 编辑配置文件
- 测试
- 指定用户组内成员登录
- 编辑配置文件
- 测试
- 添加westos用户到student组中,则可以正常登录
- 设定该目录是否可被浏览
- 编辑配置文件
- browseable = no(设定该目录不允许被浏览,该目录会被隐藏)
- browseable = yes(设定该目录允许被浏览,不隐藏)
- 设定指定用户为root用户
- 编辑配置文件
- 注意此时要把目录的可写功能打开
- 测试
测试端上传一个文件 - 在服务端:文件的用户名所有人为root
- 如果将指定信息注释掉
- 再次上传文件
- 在服务端:文件的用户名所有人为student
- 匿名用户登录
- 编辑配置文件
- yes表示允许匿名用户登陆
- 测试
五、smb的多用户挂载
- 首先将配置文件中匿名用户登录设定注释掉
- 客户端:在root身份下将共享目录挂载到/mnt,可以看到里面的文件
但是切换到student用户身份后,仍然可以看到/mnt的内容,这样是不合理的 - 卸载
- 实现多用户挂载的步骤
- 在客户端安装多用户挂载的软件
- 编写已知smb用户的认证文件(将用户身份和密码编辑进去)
- 给文件设置权限
- 挂载
credentials=/root/passwd 为指定挂载时用到的用户文件,即用户名和密码
sec=ntlmssp 表示认证方式为标准smb认证方式(加密方式为ntlmssp)
multiuser 采用多用户挂载
- 在/mnt在新建一个文件,可以看到文件的所有人和所有组恰好是服务端smb用户westos的所有人和所有组
- 切换到本地用户student,则不能查看挂载到/mnt目录的文件
- 证明未经认证的用户中不能看到/mnt里边的内容,如果想看,必须用smb用户加以认证
- 给student添加新的smb认证
(1)首先在服务端新建一个用户,并添加smb用户 - 添加smb用户认证
- 此时用student用户新建文件,可以看到文件的所有人和所有组恰好是服务端smb用户hello的所有人和所有组
- 注意:
如果在添加用户认证时在密码输入错误 - 此时重新添加不成功
- 我们需要清除缓存,重新认证
六、开机自动挂载
- 先卸载
- 编写自动挂载文件
- 自动挂载成功