Linux~文件系统之SMB和CIFS服务

本文深入探讨SMB协议,涵盖其历史演变、控制文件安全传输机制及与CIFS、NFS的对比。详述如何在存储服务器端安装、配置SMB服务,包括用户管理、服务启动、端口检查及防火墙配置。同时,介绍了如何在客户端进行SMB服务的安装、用户登录及文件操作测试,包括挂载测试和多用户认证模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:存储分离
服务器信息块(SMB)是一个网络文件共享协议,它允许应用程序和终端用户从远端的文件服务器访问文件资源。微软最初将SMB定位为Windows Server 2008和Vista系统中通用互联网文件系统(CIFS)的后续产品。最新版本的SMB 3.0在Windows Server 2012操作系统中出现,并且与Windows 8客户端共同工作。
目前的SMB协议中采用控制文件安全传输的机制是使用客户身份验证的方式,该方式通过客户端向服务器端发送验证密码来获取文件传输的权限,
Cifs:微软
Smb:sun公司
端口:139和445

CIFS和NFS的对比
(1)CIFS面向网络连接的共享协议,对网络传输的可靠性要求高,常使用TCP/IP;NFS是独立于传输的,可使用TCP或UDP;
(2)NFS缺点之一,是要求client必须安装专用软件;而CIFS集成在OS 内部,无需额外添加软件;
(3)NFS属无状态协议,而CIFS属有状态协议;NFS受故障影响小,可以自恢复交互过程,CIFS不行;从传输效率上看,CIFS优于NFS,没用太多冗余信息传送;
(4)两协议都需要文件格式转换,NFS保留了unix的文件格式特性,如所有人、组等等;CIFS则完全按照win的风格来作。

如何实现文件共享:

存储服务器端:
服务安装:

yum search samba						搜索smb相关安装包
yum install samba-client.x86_64 -y 		安装客户端
yum install -y  samba-common.x86_64		安装smb命令
yum list samba-common 					查看samba-common是否安装
yum install samba.x86_64 -y				安装samba服务

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

开启服务:

systemctl start  smb			开启smb服务
systemctl status  smb			检查服务状态

在这里插入图片描述
检查服务是否正常运行:

netstat -antulpe | grep smb							检查smb服务端口是否开启
firewall-cmd --list-all								查看火墙是否允许smb服务
firewall-cmd --permanent --add-service=samba		添加samba服务
firewall-cmd --permanent --add-service=samba-client 添加samba-client服务
firewall-cmd --reload 								重新加载火墙

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
smb用户添加:

pdbedit -L					查看smb服务用户
useradd wuxie				添加系统用户(smb服务中添加的用户必须在系统中真实存在)
smbpasswd -a wuxie			设置用户“wuxie”为smb用户并设置密码
pdbedit -L					再次查看smb服务用户
systemctl restart  smb		重启smb服务

在这里插入图片描述在这里插入图片描述在这里插入图片描述
注:需要检测系统selinux状态


测试客户端:
1:服务安装;

yum install samba-client -y		安装smb客户端
yum list  samba-client			检查是否安装成功

在这里插入图片描述在这里插入图片描述
2:smb用户登陆与rw

smbclient -L  //172.25.254.142				显示共享的目录
smbclient -L  //172.25.254.142 -U wuxie		使用创建的smb用户登陆
!ls 										查看当前目录下可上传的文件
mkdir CC									创建CC目录
touch 										创建文件ll
help										查看支持的命令

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

A:网络连接测试
smbclient //172.25.254.142/wuxie -U wuxie 进行测试查看
在这里插入图片描述
B:通过挂载进行测试:
mount //172.25.254.142/wuxie /mnt -o usernama=wuxie,password=root挂载
df
cd /mnt/
ls
rm -rf AA
ls
umount /mnt/
df
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注:
在配置文件中,可以修改允许那些用户登陆以及允许那些ip
vim /etc/samba/smb.conf
89 workgroup = paopao 修改查看时显示的名字

96 hosts allow = 172.25.254. 允许172.25.254. 的网段登陆
97 # hosts deny = 196.25.231.254 拒绝96.25.231.254网段的ip登陆
在这里插入图片描述在这里插入图片描述
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

在selinux打开的情况下,修改共享目录:

   vim /etc/sysconfig/selinux 

7 SELINUX=enforcing

首先要明白这一操作的原理:
selinux打开时,系统会加在安全上下文,因此在上面的操作基础下,会导致用户登陆之后不能进行操作,因此要多方面修改。

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

存储服务器:
1:创建一个新的目录,用来进行共享:
mkdir /westos
2:修改存储服务器端的配置文件
vim /etc/samba/smb.conf

   323		   [HELLO]		可以随便写,但是分访问时要按照这个名字进行访问
   324         comment=Share	访问时显示的语句,可随意编写
   325         path =/westos	共享目录的路径
   326         writable = yes	添加用户可写权限(在服务层次上)

在这里插入图片描述
3:修改共享目录安全上下文:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
ls -dZ westos/ 查看共享目录安全上下文文
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 westos/

semanage fcontext -a -t samba_share_t ‘/westos(/.*?)?’ 修改安全上下文为:samba_share_t
restorecon -RvvF /westos/ 刷新该目录以及目录下的文件上下文

drwxrwxr-x+ root root system_u:object_r:samba_share_t:s0 westos/
在这里插入图片描述
4:在文件层次上需要对该目录有操作权限,可以赋予777的权限(原为755),但是给与满权限可能会不太安全,因此使用特殊权限,单独对登陆的用户“wuxie”给予权限

setfacl -m u:wuxie:rwx /westos/		wuxie用户对于westos目录用rwx的权限

在这里插入图片描述

	注://setfacl -b /westos		关闭对于westos目录的特殊访问权限,实验时不需要这步操作

5:smb虽然功能很强大,修改配置文件之后,可以不用重启服务,但是最好还是重启一下smb服务

systemctl restart smb

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

测试客户端:(A

测试方法1:连接测试
smbclient //172.25.254.142/HELLO -U wuxie 进行测试查看,这里的HELLO就是配置文件中【】里写的名称
在这里插入图片描述
可以进行上传/下载/创建目录等操作,对于新的共享目录/westos

测试方式2:挂载测试
注:需要明确一个概念:测试端只是用来测试,所有的文件操作都是针对存储服务端进行的操作。
将共享目录进行挂载到/mnt下,创建目录、文件等,然后在服务端进行查看测试

mount //172.25.254/142/LHELLO /mnt -o username=wuxie,password=root
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

————————————————————————————————————————————————————————
共享自己创建的westos目录可以通过修改安全上下文的方法来解决,但是对于系统目录的话,如果也采用这种修改安全上下文的方式,只解决了smb的问题,但是在系统其他服务使用时,可能会造成影响。因此需要采用其他方式来解决这个问题。

修改系统boolean(布尔)值:

getsebool -a | grep samba 查看samba的系统布尔值

samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off 只读是关闭的
samba_export_all_rw --> on 读写是关闭的
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off

setsebool -P samba_export_all_rw --> on 1 永久修改samba布尔读写值为1;-P表示永久修改ia

在这里插入图片描述
在这里插入图片描述
这个实验以系统目录“/mnt”目录为例进行实验,在打开了samba布尔值之后,可以重复上面的操作步骤进行实验。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
存储服务器:
配置文件:

vim /etc/samba/smb.conf

	[mnt]				可以随便写,但是分访问时要按照这个名字进行访问
    comment=Share		访问时显示的语句,可随意编写
    path =/mnt			共享目录的路径
    writable = yes		添加用户可写权限(在服务层次上)

在这里插入图片描述
在文件层次上需要对该目录有操作权限,可以赋予777的权限(原为755),但是给与满权限可能会不太安全,因此使用特殊权限,单独对登陆的用户“wuxie”给予权限
setfacl -m u:wuxie:rwx /mnt/ wuxie用户对于mnt目录用rwx的权限
在这里插入图片描述

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试客户端:

测试方法同上A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3:配置文件中的其他参数:

vim /etc/samba/smb.conf

126 map to guest = bad user 将游客用户映射到匿名用户登陆
323 [HELLO]
324 comment=Share
325 path =/westos
326 writable = yes 全局可写参数,打开之后,默认所有用户可写
328 # browseable = yes 在使用命令查看时,是否显示目录。默认为yes(显示)。

在这里插入图片描述
在这里插入图片描述
329 # guest ok = yes 允许游客用户登陆,和map to guest = bad user共同搭配使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
330 # valid users = wuxie 允许那些用户登陆;valid users = +wuxie或者valid users = @wuxie表示属于wuxie组的用户都可以登陆

在这里插入图片描述在这里插入图片描述在这里插入图片描述
331 # write list = pao 允许那些用户可写;write list = pa或者write list = pa表示属于wuxie组的用户都可以写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
332 # admin users=wuxie 修改用户wuxie为HELLO目录的超级用户,即root用户,在创建文件之后,可以发现,该文件的用户为root,组为wuxie
在这里插入图片描述
在这里插入图片描述

4:smb多用户认证模式:

当前使用的挂载方式,会存在两个问题:
1:挂载时会暴露用户密码;
2:只有客户端挂载的用户可以进行查看,客户端的普通用户无权查看
因此需要进行多用户认证模式,来解决以上两个问题:

测试客户端:

yum install cifs-utils -y ###安装cifs-utils可以实现多用户挂载的服务
在这里插入图片描述

vim /etc/smbpasswd ##编辑认证文件
在这里插入图片描述
chmod 600 /etc/smbpasswd###为了不让认证信息泄露,因此给与认证文件600的权限
在这里插入图片描述

mount //172.25.254.142/HELLO /mnt -o credentils=/etc/smbpasswd,sec=ntlmssp,multiuser ###使用多用户并且加密用户的方式挂载

在这里插入图片描述
cifscreds add -u pao 172.25.254.142 ##添加认证信息
在没有认证之前,切换普通用户去查看共享问价时会报错权限不允许,在认证之后,普通用户也可以查看共享文件
在这里插入图片描述

cifscreds clearall			##清除所有认证
CIFS(Common Internet File System) 协议 CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议现在是局域网上用于服务器文件访问打印的协议。象SMB协议一样,CIFS在高层运行,而不象TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议超文本传输协议的一个实现。 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。 服务器信息块(SMB)协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB 协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPXNetBEUI 之上。   SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。   在 TCP/IP 环境下,客户机通过 NetBIOS over TCP/IP(或 NetBEUI/TCP 或 SPX/IPX)连接服务器。一旦连接成功,客户机可发送 SMB 命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。   从 Windows 95 开始,Microsoft Windows 操作系统(operating system)都包括了客户机服务SMB 协议支持。Microsoft 为 Internet 提供了 SMB 的开源版本,即通用 Internet 文件系统CIFS)。与现有 Internet 应用程序如文件传输协议(FTP)相比, CIFS 灵活性更大。对于 UNIX 系统,可使用一种称为 Samba 的共享软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值