您的位置:首页 > 运维架构 > Linux

Linux系统下的CIFS服务(smb文件共享以及权限管理、smb的多用户认证)

2019-08-16 22:04 525 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/monster_warm/article/details/99487022

SMB文件共享

CIFS全称(Common Internet File System),CIFS文件存储主要作用是实现存储分离。
Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,将linux中的资源共享出去。
Samba服务的组成部分

组成部分 解释
Samba-common Samba的支持文件,里面有Samba服务用到的命令
Samba-client 客户端应用程序
服务名称
Samba 服务端应用程序
/etc/samba/smb.conf 主配置文件

服务端口:通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容。
在实际的生产环境中,用户的信息注册假设存储在某一台服务器中,那么当这台服务器无法正常工作就会影响用户的认证和使用。而如果采用将该服务器的所有数据进行同步和备份,会造成资源的大量浪费,所以我们使用共享仓库,任何一个服务器都能访问这个共享仓库里的数据,这样无论哪台服务器崩溃,都不会对用户产生影响

samba服务的搭建(将linux中的资源共享出去)

服务端
1.

yum install samba     ##samba主服务
yum install samba-common    ##包含samba服务的命令
yum install samba-client     ##samba的客户端软件




2.

systemctl start smb.service
netstat -antulpe | grep smb  ##查看服务端口是否开启


3.火墙允许samba服务和samba-client

fireall-cmd --permanent --add-service=samba
fireall-cmd --permanent --add-service=samba-client
firewall-cmd --reload
firewall-cmd --list-all


4.samba用户的建立.使用smbpasswd创建samba账户和密码,smb用户必须是本地存在的用户。

pdbedit -L    ##查看samba用户,当前系统中没有samba用户

因为smb用户必须是本地存在的用户,所以需要先建立本地用户

useradd westos    ##建立westos用户
useradd lee    ##建立lee用户
smbpasswd -a westos   ##添加westos为smb用户
smbpasswd -a lee    ##添加lee为smb用户


如果添加本地不存在的用户为samba用户,则会出现如下报错

pdbedit -L       ##查看samba用户


在客户端上
1.下载客户端软件

yum install samba-client -y


2.

smbclient -L //172.25.254.165(服务端IP)  ##列出的登陆信息


共享方式一:

smbclient //172.25.254.165/westos  -U westos   ##以westos用户访问172.25.254.65主机中的/westos中的文件
!ls       ##查看现在可以操作的文件


共享方式二:

mount  //172.25.254.251/westos /mnt -o username=westos,passwd=westos

测试
在客户端上传一个文件,然后在服务端中查看用户家目录,查看是否上传成功。
这时就算客户端宕机也不造成影响,因为服务端数据可以共享给其他正常工作的主机

samba服务权限设置

——————————————————————————————

更改用户的权限

mkdir /westos
vim /etc/samba/smb.conf

更改samba的工作组

workgroup = WESTOS



对该文件进行隐藏

browseable = no   ##隐藏
browseable = yes    ##不隐藏

browseable = 7ff7 yes ##不隐藏


browseable = no ##隐藏

在客户端进行测试:登录看是否能查看
对所有用户可写

writabel = yes


此时还是不可写,是因为目录本身对westos用户不可写


对用户/用户组成员可写

write list = lee    ##对用户lee可写
write list = +lee   ##对lee的用户组成员可写
write list = @lee



但是对于westos用户不能写入

将westos用户加入lee用户组即可(lee是westos用户的一个附属组)

用户/用户组成员可登录

valid users = lee   ##lee用户可登录
valid users = +lee @lee  ##lee用户组的成员

valid users = lee ##lee用户可登录


westos用户不能挂载

valid users =+lee ##lee用户组的成员可登录

匿名用户使用本地用户的身份登录

map to guest = bad user     ##将匿名用户映射到本地用户
guest ok =yes          ##允许用户登录

匿名用户不允许登录

更改配置文件



将本地用户当成一个超级用户

admin users = westos      ##把westos设置成超级用户身份



——————————————————————————————

selinux,samba加密

对于用户自己创建的文件目录,在selinux=enforcing时,可以改变文件的安全上下文对文件权限的更改

mkdir /westos_smb    ##创建目录
touch /westos_smb/file{1..10}
vim /etc/smaba/smb.conf
在配置文件中写入:
[WESTOS]                   ##以该配置文件中的目录名称为主
comment =Share Directory
path = /westos_smb    ##文件路径


在selinux=enforcing的情况下,直接在客户端上使用

mount //172.25.254.165(服务端IP)/WESTOS  /mnt   -o   username=westos,password=westos  ##无法挂载成功

或者

smbclient //172.25.254.104/WESTOS  -U   westos


原因是由于selinux的作用,使得服务不可用
解决办法
对文件进行samba服务的安全上下文的修改,使得samba共享可以使用

semanage fcontext -a -t samba_share_t   '/westos_smb(/.*?)?'
restorecon -RvvF /westos_smb/      ##刷新安全上下文


在客户端重新测试

mount //172.25.254.165(服务端IP)/HAHA /mnt   -o   username=westos,password=westos  ##正常挂载


或者

smbclient //172.25.254.104/WESTOS  -U   westos  ##ls正常查看


但是还是无法可写,若要可写,则在配置文件中
vim /etc/smaba/smb.conf
在配置文件中写入:
[HAHA] ##以该配置文件中的目录名称为主
comment =Share Directory
path = /westos_smb ##文件路径
writable = yes ##给予写权限

chmod 777 /westos_smb ##满权限不安全,可以使用权限列表
setfacl -m u:westos:rwx /westos_smb/   ##对westos用户给rwx权限


对于系统级目录
对于系统级的目录,不能通过添加安全上下文的方式,这样的做法可以使samba服务正常访问,但是因为是系统级别的目录,这样会让其他服务无法正常访问该目录。
解决办法:bool值的设定
以/mnt 这个系统目录为例

vim /etc/smaba/smb.conf
在配置文件中写入:
[mnt]                   ##以该配置文件中的目录名称为主
comment =Share System  /mnt   Directory
path = /mnt    ##文件路径


直接在客户端进行访问,访问失败
解决

getsebool -a | grep samba  ##c查看当前samba服务所涉及到的selinux相关的权限
setsebool -P samba_export_all_ro on(1)     ##--p表示永久设定该bool值为1,开启


在客户端测试,该文件只开启只读,只能查看,没有写权限

服务端
setsebool -P samba_export_all_rw on(1)    ##读写权限开启




这种操作会下降samba的安全级别,但是可以让其他服务在selinux开启的情况下,正常访问/mnt这个目录

samba的多用户认证

在客户端登录时,登录必须是以已经认证的用户进行登录

yum install cifs-utils -y

vim /root/smbpasswd
写入用户和对应的密码
username=westos
password
mount //172.25.254.104/WESTOS /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser



测试

cifscreds add -u lee 172.25.254.104
##如果密码输入不正确,不会报错,但还是无法查看
cifscreds add -u lee 172.25.254.104  ##直接重新认证会报错
cifscreds clearall    ##先清除
cifscreds add -u lee 172.25.254.104  ##再次认证


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐