Linux下使用CIFS文件共享实现存储分离

SMB服务—服务端搭建

CIFS: Linux,Unix

windows共享给linux文件,使用的是smb

samba-client 访问samba的客户端
samba-common samba使用的工具
samba samba主服务(服务端)

# 下载3个软件包:
# samba samba-common samba-client
yum install -y samba-client samba-common samba

# 启动smb服务并查看网络端口
systemctl start smb
netstat -antlupe | grep smb

# 火墙添加samba服务,开放相应的端口
firewall-cmd --permanent --add-service=samba
firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload

使用端口139,445 tcp/udp

刚下载samba,是没有samba用户的,但其默认又不支持匿名访问。因此现在无法访问samba
我们要自己建立samba用户,samba用户必须是系统用户,否则设置会失败

默认共享是以读写的方式
每个samba用户默认共享的是自己的家目录

为系统用户设置samba密码,使其成为samba用户:
useradd lee
smbpasswd -a  lee
命令       参数 系统用户名

查看samba用户:
pdbedit -L

下图为例:
最后一图中可见,使用不存在于系统中的用户无法设置为samba用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SMB服务—客户端访问

yum instll -y samba-client
客户端登陆后:
(1)登陆访问的方式使用共享资源

smbclient -L //172.25.254.100  
-L列表,列出目标主机(共享服务器)可对自己开放的资源(匿名访问,无密码,直接回车)
smbclient -L //172.25.254.100 -U westos 
以westos的samba用户身份登陆访问,列出可以查看的资源文件
smbclient  //172.25.254.100/westos -U westos 
在上一步查看到可用的资源后,通过使用该命令直接进入要使用的资源目录内部。

(2)挂载到本地的方式使用共享资源

mount //172.25.254.100/westos /mnt -o username=westos,password=lee
将共享资源目录下的westos目录挂载到本地/mnt目录下,访问samba使用的是westos用户

登陆后使用的命令:
ls 查看当前目录下文件
!ls 查看客户端(当前主机)可以上传的wenjian
put filename 上传文件到存储服务器
(只能上传当前路径下的文件,比如我在/root目录下访问samba服务器,就只能上传/root下的文件,而不能传/etc)
quit 退出

下图为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全局访问控制:

samba的配置文件:
vim /etc/samba/smb.conf
(部分参数的更改不需要重启服务,如下面的workgroup)

更改域的名字:

workgroup = WESTOS	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改访问权限:

hosts allow = 172.(172网段的) 172.25.254(172.25.254网段的)
# 允许该参数后面接的ip/网段访问本机的smb服务,不在列表中的就不允许登陆
hosts deny = 172.
# 不允许该参数后面接的ip/网段访问本机的smb服务,不在列表中的允许登陆

下图为例:
在这里插入图片描述
在这里插入图片描述

(自建,系统)目录的共享

SElinux对于samba的共享,影响很大

在SElinux开启的情况下做以下实验:
(1)创建我们自己的目录用于共享文件

mkdir /smb  新建目录,作为共享目录
ls -ld /smb

# 修改共享目录及其内容的安全上下文
semanage fcontext -a -t samba_share_t '/smb(/.*?)?'  
restorecon -RvvF /smb/

vim /etc/samba/smb.conf	 
systemctl restart smb

chmod 777 /smb/
(setfacl -m u:westos:rwx /westos_smb/)

# 将我自己创建的目录写入配置文件中用于共享
vim /etc/samba/smb.conf

[smb_dir1]
	comment = share smb directory1
	path = /smb

客户端能否对共享目录写入,是取决于多方面的: 服务本身的权限开放,系统(用户)对目录的权限
(由于上文未在配置文件中加入可写权限writeable=yes,服务本身不允许写入)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)共享系统目录

系统级的共享目录,不能更改其安全上下文,否则虽然可以解决samba共享的问题,但是其他服务调用该目录就会产生错误
对于系统级别的目录,要开启samba在selinux中的权限
getsebool -a | grep samba

samba_export_all_ro ——> off 只读
samba_export_all_rw ——> off 读写

setsebool -P(永久) samba_export_all_rw 1(on)
将这两个samba的功能打开,这意味着samba的功能(访问目录)不会再受SElinux影响(samba安全性会下降)

开启上面的功能后,samba服务在访问自己创建的共享目录时,也不必设定安全上下文

(客户端能否在共享目录中写文件,取决于下面几方面:samba本身权限(配置文件writable),系统目录权限(对客户端认证登陆的samba用户是否可写),SElinux权限(服务与文件的安全上下文是否一致))

SMB服务的配置参数设定

对于共享目录的权限限制的参数:
[WESTOS]			
# 将共享目录以WESTOS名称共享出去

comment = Share Directory
# 对于共享目录内容的描述(概述)

path = /westos_smb		
# 共享的目录资源的路径

writable = yes			
# 客户端是否对于共享目录可写(默认为no)
(所有登陆用户都可以写,是全局的控制,会覆盖下面的write list参数的内容)

browseable = no			
# 共享目录能否在列表中显示,默认为yes 
(关闭该参数后,smbclient -L //172.25.254.100,无法查看到该共享目录,即,被隐藏起来了)

write list = +lee		
# 对共享目录的写权限列表
(lee 允许lee写,拒绝lee以外的用户写;+/@lee 允许lee组的用户写,拒绝其他的用户写)

valid users = @lee		
# 可登陆用户(可挂载)

admin users = westos		
# 当以westos用户访问该WESTOS目录时,所进行的操作都以root用户身份权限
(但是查看创建的文件可以发现,所有者是root,而所属组仍为原来的westos)

guest ok = yes			
# 游客登陆
(开启该参数之前,要先在上面设置添加一参数,map to guest = bad user(匿名用户) 将匿名的映射为guest用户;也即是说,所有的匿名登陆,会以guest用户身份登陆;)
(开启该参数之前,匿名登陆只能登陆,但是无法有任何权限;而开启后,匿名登陆后,有基本权限查看共享目录内容)

以游客身份guest挂载:
mount //172.25.254.100/WESTOS /mnt -o username=guest
会让你输入密码,但是游客即匿名用户,无密码,直接回车

mount //172.25.254.100/WESTOS /mnt -o username=guest,password=""
密码为空,直接挂载

部分参数更改后,需要先把原来在客户端挂载的共享目录卸载下来,再重新挂载;

SMB服务的多用户认证

samba多用户挂载(为了客户端的安全)

root用户通过了samba认证,挂载了共享目录;
但是切换到kiosk用户,发现,即便其未经过samba认证,但是由于root挂载了,其也可以查看共享目录,这对root用户是很不安全的
因此,下面要令root用户以多用户挂载的方式挂载共享目录,以这种方式的话,即便是在root将共享目录挂载以后,其他用户想要使用共享目录也需要使用一个存在的samba用户单独进行认证,而无法在root用户的基础上使用共享目录

具体操作:

客户端下载软件工具
yum install -y cifs-utils

查看其帮助文档(挂载参数)
man mount.cifs

编辑一个存放samba认证身份信息的文件
vim /root/smbpasswd
chmod 600 /root/smbpasswd 只有root自己对该文件可写

增加挂载参数:
mount //172.25.254.160/WESTOS /mnt -o credentials=/root/smbpasswd
现在这个挂载与原来的功能权限一致

mount //172.25.254.160/WESTOS /mnt -o credentials=/root/smbpasswd,sec=ntlmssp
添加了加密方式的参数sec,但是并没有进行加密的这个行为,因此实际功能权限仍然与上面相同

mount //172.25.254.160/WESTOS /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser
又添加了加密意图的参数multiuser(多用户模式),这时各个用户,只有通过了samba加密后才可以查看共享目录,即便是共享目录已经被挂载了

切换到kiosk用户后,想查看共享目录,需要认证:
cifscreds --help

使用westos用户认证:
cifscreds add -u lee(认证账户) 172.25.254.100(服务端ip)
(注意的是,即便是密码错误,也不会报错,现象和成功登陆一样,都没有提示)

但是错误地认证后,不能立即再次认证,会提示已经认证过了;需要先清除之前的认证记录
cifscreds clearall
cifscreds add -u lee 172.25.254.100

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值