一、CIFS和Samba
CIFS:
CIFS(Common Internet File System)是一种通用网络文件系统,
主要用于网络设备之间的文件共享。CIFS可以在linux系统和windows系统之间共享文件,
因此这种文件系统主要用于客户端是windows系统。
Linux 系统可以挂载和访问 CIFS 文件共享 ,
如同常见的网络文件系统一样。然而 ,
由于 CIFS 是基于 NTFS 文件系统权限模型及其自身的身份验证系统来构建的 ,
因而 CIFS 协议中的所有内容并不能很好地映射到 Linux 中
samba:
提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统
1.安装
服务端设置:
[root@servershare ~]# yum install samba samba-common samba-client -y
samba #服务器应用程序
samba-common #Samba的支持文件
samba-client #客户端应用程序
[root@servershare ~]# systemctl start smb #打开smb
[root@servershare ~]# systemctl enable smb #开机启动
[root@servershare ~]# systemctl stop firewalld.service #关闭火墙
[root@servershare ~]# setenforce 0 #设置selinux为Premissing,如果selinux处于关闭状态,可以不设置
[root@servershare ~]# smbpasswd -a westos #将westos添加为samb用户
[root@servershare ~]# smbpasswd -a student #将student用户添加为samb用户
[root@servershare ~]# pdbedit -L #查看samba用户
[root@servershare ~]# pdbedit -x student #删除samba用户
将student 添加进samba用户,方便后面实验使用
客户端设置:
[root@client mnt]# yum install samba-client #安装客户端软件
[root@client mnt]# smbclient -L //172.25.254.210 #匿名查172.25.254.210主机的共享
[root@client mnt]# smbclient -L //172.25.254.210 -U westos #用服务端samba用户查看172.25.254.210主机的共享
由上图可知使用samba用户westos登陆时可以共享/home/westos目录,即westos的家目录。
登陆
[root@client mnt]# smbclient //172.25.254.210/westos -U westos #samba用户westos登陆
[root@client mnt]# smbclient //172.25.254.210/westos #匿名用户登陆
由上图可知,匿名用户是不能登陆的。除此之外,还可以使用挂载的方式登陆,以挂载形式,可以使用shell中的命令管理。
[root@client mnt]# mount -o username=westos,password=westos //172.25.254.210/westos /mnt/
当服务端selinux处于Enforcing状态时,是不允许客户端链接的。
所以需要打开samba的安全开关才可以登陆:
2.域名修改
在默认情况下查看共享目录时,所显示的Domain为MYGROUP:
修改其配置文件/etc/samba/smb.conf:[root@servershare ~]# vim /etc/samba/smb.conf
再次查看时Domain=WESTOS:
注意:
Domain无论是大写还是小写,所显示的都为大写;
配置文件/etc/samba/smb.conf即改即生效,不需要重启服务。
3.黑白名单
在配置文件/etc/samba/smb.conf中添加如下内容:hosts allow = 172.25.254.210
表示只允许172.25.254.210主机共享。
测试如下,servershare主机IP=172.25.254.110所以无法登陆:
如果在配置文件中添加如下内容:
表示拒绝172.25.254.210主机登陆,主机IP=172.25.254.210,所以不能登陆:
4.创建共享目录
[root@servershare ~]# vim /etc/samba/smb.conf
comment #描述
path=/westos #共享的目录为/westos目录
[root@servershare ~]# mkdir /westos
[root@servershare ~]# touch /westos/huige{1..5} #创建测试文件
[root@servershare ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?' #修改安全上下文
[root@servershare ~]# restorecon -RvvF /westos/ #刷新
测试:
5.将系统目录/mnt/设置为共享目录
[root@servershare ~]# setsebool -P samba_export_all_ro on #打开安全开关
[root@servershare ~]# setsebool -P samba_export_all_rw on
[root@servershare ~]# chmod 777 /westos #添加文件系统权限
登陆测试:
6.权限设置
1)允许对共享目录可写
默认情况下,westos用户对于新创建的linux共享设备是不可写的,
要使其可写,在配置文件/etc/samba/smb.conf中添加如下内容:
表示linux共享目录可写。
测试如下:
2)只允许某个用户或某个组可写
修改配置文件/etc/samba/smb.conf如下:
表示只有westos用户可写。
测试如下,student用户登陆不能删除,westos用户登陆删除成功:
如果是@westos表示只对westos组下的用户可写,配置文件如下:
表示只对westos组下的用户可写。要使student用户可写,可以将student添加到westos组中,如下:
测试如下:
3)只允许某个用户或者某个组登陆
配置文件如下修改表示只允许student用户登陆:
测试如下:
将配置文件如下修改,表示只允许student组下成员登陆:
注意:@student和+student都表示student组
将westos加入到student组后就可以登陆:
测试如下:
4)隐藏共享目录
默认情况下,westos查看共享目录时会显示linux共享目录:
配置文件如下修改:
再次查看时就会将linux共享目录隐藏起来,但是不影响其它功能:
5)让某个用户登陆时继承root身份
配置文件如下修改,表示客户端如果使用samba用户student登陆时,
如果客户端是root用户,则继承root用户的身份
用student帐号登陆,长传文件:
则student帐号登陆上传的文件所有人为westos,以student帐号登陆上传的文件所有人为root:
6)允许匿名用户登陆
默认情况下匿名用户不能登陆,要使匿名用户可以登陆,配置文件如下修改:
测试如下:
7.多用户挂载
当客户端为root用户时通过westos帐号登陆之后,其它用户也可以查看共享的内容,如下:
这种方式不是特别安全。客户端安装以下软件:
[root@client ~]# yum install cifs-utils.x86_64 -y
如下编辑文件:
[root@client ~]# vim /root/smbpass
username=westos #用户
password=westos #密码
[root@client ~]# chmod 600 /root/smbpass
挂载:
[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.210/linux /mnt/
当以此种方式挂载时表示:当前用户挂载时是通过/root/smbpass文件通过认证,
sec=ntlmssp(其它用户挂载时的认证方式),multiuser(允许多用户挂载)。
此时除了root用户其它用户查看共享内容时必须通过认证:
如果student用户要使用共享的内容,必须通过认证,如下:
表示student通过suu帐号进行认证。
8.永久挂载
编辑/etc/fstab文件,如下:
当系统重启时,就会挂载。