Linux之:CIFS文件的存储(samba)

一.SMB基本信息

Samba是Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB是一种再聚于网上共享文件和打印机的一种通信协议,它为局域网的不同计算机之间提供文件及打印机等资源的共享服务。

SMB实现的功能:
(1)SMB文件共享
(2)SMA多用户挂载
(3)SMB客户端使用
注:SMB用户必须为本机用户,但与本地用户没关系

二.samba服务

1.实验环境的配置
在所实验的虚拟机上添加地址解析

[root@zll ~]# vim /etc/hosts

在这里插入图片描述
2.samba服务器的安装及其调试

yum install samba-common  samba -y   ##安装与smb文件共享相关的软件
systemctl start smb   ##开启服务
yum install samba-client     ##安装客户端进行检测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

smbpasswd -a student      ##student必须是本机用户
mkdir /westos
chcon -t samba_share_t /westos  ##改变文件安全上下文
vim  /etc/samba/smb.conf   ##编辑配置文件

在这里插入图片描述
文件编辑的参数说明如下:

[westos] 共享名称
comment = 对共享目录的描述
path = 共享目录的绝对路径
workgroup= WESTOS

在这里插入图片描述
在这里插入图片描述
测试如下:

[root@dns mnt]# smbclient -L //172.25.77.102 -U student

在这里插入图片描述
3.samba共享目录

useradd zll -s /sbin/nologin  ##建立smb用户
useradd zll1 -s /sbin/nologin  -M   (-M表示不建立家目录)
smbpasswd -a  zll     ##生成smb用户的密码
smbpasswd -a  zll1

在这里插入图片描述
检测:

[root@dns mnt]# smbclient  //172.25.77.102/zll -U zll

在这里插入图片描述
注:不能浏览是因为设置系统建立家目录的波尔值
解决如下:

[root@dns mnt]# setsebool -P samba_enable_home_dirs on  ##打开建立目录权限

在这里插入图片描述
再次登录:
在这里插入图片描述
在这里插入图片描述
zll1用户建立不了家目录是因为再设置添加用户时指定的zll1用户时禁止建立家目录的
(1)个人共享目录

[root@zll ~]# mkdir /westoslinux
[root@zll ~]# vim /etc/samba/smb.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@zll ~]# semanage fcontext -a -t samba_share_t '/westoslinux(/.*)?' ##修改目录的安全上下文
[root@zll ~]# restorecon -RvvF  /westoslinux/

在这里插入图片描述
验证如下:

[root@zll ~]# smbclient //172.25.77.102/westos(目录说明) -U student

在这里插入图片描述
说明共享成功
(2)系统级共享目录
注:有些系统级别的共享目录是不受selinux限制的,可以直接浏览,而有些系统级别的目录要打开selinux共享目录的setsebool数值

[root@zll ~]# vim /etc/samba/smb.conf 

在这里插入图片描述
在这里插入图片描述

[root@zll ~]# setsebool -P samba_export_all_ro on   
再没有加之前,用smbclient是浏览不到里面的内容的(表示只读,读写的话将ro改为rw)
当打开该数值时,selinux对smb共享目录不再限制

在这里插入图片描述
验证如下:
在这里插入图片描述
在这里插入图片描述
可以看到/mnt的安全上下文不是samba的安全上下文,但是依然能共享到/mnt,是因为打开了共享系统目录的setbool数值

4.samba访问ip的限制
(1)修改登录后显示的domain值
修改前:
在这里插入图片描述

vim /etc/samba/smb.conf
修改内容:
89         workgroup = WESTOS
systemctl restart smb

在这里插入图片描述
再次登录,发现Domain与修改内容一致
在这里插入图片描述
(2)访问限制

  • 访问拒绝
[root@zll ~]# vim /etc/samba/smb.conf
编辑内容为:
324         hosts deny = 172.25.77.102  表示拒绝这个ip挂载

在这里插入图片描述
在这里插入图片描述
验证如下:

mount //172.25.254.202/westos /mnt  -o username=student,password=student   //smb共享目录挂载就可以读取

在这里插入图片描述
发现不能挂载

  • 访问允许
    在这里插入图片描述
    验证如下:
    在这里插入图片描述
    发现挂载成功

  • 网络ip段的访问限制

修改文件内容:
324         hosts deny = 172.25.254.  表示拒绝这一网段ip挂载

在这里插入图片描述
验证如下:
再172.25.77.250主机上
在这里插入图片描述
再172.25.77.102虚拟机上
在这里插入图片描述
发现都不能挂载
4.samba匿名访问

 vim /etc/samba/smb.conf
编辑内容为:
125         map to guest = bad user  ##设定匿名用户身份为guest

325         [mnt]
326         comment= mnt dir
327         path=/mnt
328         guest ok = yes  ##拒绝其它目录但是允许挂载这个目录
systemctl restart smb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
验证如下:

[root@foundation2 ~]# mount //172.25.77.102/westos /mnt/ -o username=guest

挂载westos拒绝
在这里插入图片描述
挂载mnt可以挂载,并且可以浏览mnt下的内容
在这里插入图片描述
在这里插入图片描述
5.samba其它文件参数

(1)writable = yes ##允许用户可写

vim /etc/samba/smb.conf
编辑内容为:
324         writable = yes   ##及允许对/westoslinux可写
systemctl restart smb

在这里插入图片描述
验证如下:

[root@zll ~]# mount //172.25.77.102/westos /mnt  -o username=student,password=student

在这里插入图片描述
在这里插入图片描述
发现不能建立文件,解决如下:
a.selinx的影响

[root@zll mnt]# setenforce 0  ##设置selinux为警告型发现还是建立不了文件

在这里插入图片描述
b.sebool影响

getsebool -a | grep samba
setsebool -P samba_export_all_rw on   ##打开可写权限,发现还是建立不了文件

在这里插入图片描述
在这里插入图片描述
c.目录本身权限的影响

[root@zll mnt]# chmod 777 /westoslinux

在这里插入图片描述
再次验证如下:
挂载:
在这里插入图片描述
建立文件:
在这里插入图片描述
发现可以建立文件
(2)

  • 可写用户
write list = zll		#可写用户
vim /etc/samba/smb.conf

在这里插入图片描述
验证如下:

mount //172.25.77.102/westos   /mnt/  -o username=zll

在这里插入图片描述
注:由上验证可以看到是zll挂载的所以建立的文件属于zll用户及该组

  • 可写组
write list=@student  ##属于student的这个组可写,也可以用+student表示
vim /etc/samba/smb.conf

在这里插入图片描述
在这里插入图片描述
验证如下:
a.用户zll不属于student组时
在这里插入图片描述
在这里插入图片描述
发现能挂载但是不能建立文件,是因为zll不属于student组
b.当zll为student组时
在这里插入图片描述
在这里插入图片描述
发现可以挂载并且可以建立文件
(3)

valid users = student    #当前共享的有效用户为
valid users = @student	#当前共享的有效用户为组
valid users = +student	#当前共享的有效用户为组

a.当前共享的有效用户
在这里插入图片描述
验证如下:
在这里插入图片描述
student为有效用户可以挂载。
在这里插入图片描述
zll用户不能挂载,是因为zll用户不是有效用户
b.当前共享的有效用户为组
在这里插入图片描述
在这里插入图片描述
验证如下:
在这里插入图片描述
student用户可以挂载
在这里插入图片描述
zll用户属于student组,也可以挂载
(4)
browseable = yes ##是否可以被列出

[root@zll ~]# vim /etc/samba/smb.conf

在这里插入图片描述
在这里插入图片描述
注:再添加该文件的参数时,要注意注释掉可写用户和有效用户,以免对实验产生影响

验证如下:
在这里插入图片描述
发现westos不能被列出
在这里插入图片描述
在这里插入图片描述
westos被列出
(5)
admins users = westos ##生成smb的超级管理用户

[root@zll ~]# vim /etc/samba/smb.conf
[root@zll ~]# systemctl restart smb
328         admin users = student  ##要打开写的权限

在这里插入图片描述
在这里插入图片描述
验证如下:
在这里插入图片描述
发现新建立文件的用户属于root组
6.smb多用户挂载
客户端:
在root身份下将共享目录挂载到/mnt中,可以看到文件中的内容,但是切换到kiosk用户身份后,仍然可以看到/mnt下的内容,这样对于该共享系统来说是存在不安全的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现多用户挂载
1.在客户端安装多用户挂载的软件
在这里插入图片描述
在这里插入图片描述
2.编写已知的smb用户的认证文件(将用户身份和密码编辑进去)
在这里插入图片描述
在这里插入图片描述
3.给文件设置权限
在这里插入图片描述
4.挂载

credentials=/root/smbpass   为指定挂载时用到的用户文件
sec=mtlmssp   表示认证方式为smb标准认证方式(加密方式为ntlmssp)
multiuser   采用多用户挂载

在这里插入图片描述
在/mnt下建立一个文件,可以看到文件的所有人和所有组恰好为服务端该用户的所有人和所有组
在这里插入图片描述
在这里插入图片描述
当切换到kiosk用户时,发现浏览不了/mnt下的内容
在这里插入图片描述
解决如下:

cifscreds add -u student 172.25.254.100  ##
##smb用户student的密码

在这里插入图片描述

[kiosk@foundation2 mnt]$ touch zll
[kiosk@foundation2 mnt]$ ll
-rw-r--r--. 1 root(因为服务配置文件中student为超级用户所以显示root) kiosk(显示属于的用户是所切换的用户) 0 Feb 22 14:23 zll

在这里插入图片描述
可以进行如下更改:

在服务端:
在配置文件中:
在这里插入图片描述
在这里插入图片描述
注释掉:328 ; admin users = student,同时也要打开可写权限
在客户端:
umount /mnt

[kiosk@foundation2 ~]$ cifscreds add -u student 172.25.77.102
[kiosk@foundation2 mnt]$ touch zll1
-rw-r--r--. 1 kiosk kiosk 0 Feb 22 14:40 zll1  ##发现创建的文件也是kiosk用户

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44224288/article/details/87926575