企业级Linux下Samba(SMB)服务的文件共享

CIFS协议###

CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

Samba###

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

SMB服务的安装

1.为了试验我们配置两台虚拟机一个为服务端一个为客户端
服务端我们起名字为shareserver.westos.com
客户端我们起名字为client.westos.com
在这里插入图片描述
2.服务端配置
所用到的命令:

yum install samba samba-common samba-client 下载sma服务
systemctl start smb
[root@shareserver ~]# systemctl stop firewalld.service 关闭防火墙
[root@shareserver ~]# smbpasswd -a student 给sam服务添加用户
New SMB password:                                  设置student用户sam服务的密码
Retype new SMB password:
Added user student.
root@shareserver ~]# setenforce 0      将selinux该为警告模式
root@shareserver ~]# getenforce 
Permissive
[root@shareserver student]# smbpasswd -x student  删除添加的用户
Deleted user student.
[root@shareserver student]# pdbedit -L 查看sma添加的用户

#1.下载smb服务
在这里插入图片描述
#2.开启服务
在这里插入图片描述
#3.关闭防火墙,共享文件别人要拿东西,所以一般要输出东西是火墙一定要关闭
在这里插入图片描述
#4.给smb服务添加用户,此处我们添加用户student
在这里插入图片描述
#5.将selinux改为警告模式,后续我们会研究在强制模式下smb的用法
在这里插入图片描述
#6.pdbedit -L 可以看到查看sma添加的用户
pdbedit -x 可以删除sma用户
此处我们添加了westos用户并将他删除,作为实验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.客户端的配置
所用到的命令

[root@client ~]# yum install samba-client  下载sam客户端服务
[root@client ~]# smbclient -L //172.25.71.100  查看匿名用户可以共享的文件
[root@client ~]# smbclient -L //172.25.71.100 -U student  查看student用户共享的文件
[root@client ~]# smbclient //172.25.71.100/student -U student    用student用户登录
Enter student's password: 
[root@client ~]# mount -o username=student,password=westos //172.25.254.149/student /mnt/   挂载共享文件到本机的/mnt目录下 
  存储分领  实际位置在服务段的/home/student

#1.下载客户端服务
在这里插入图片描述
#2.匿名用户查看共享文件
在这里插入图片描述
#3.以student用户身份查看共性文件
在这里插入图片描述
#4.以student用户身份登录,输入密码,密码就是前面服务端smb服务添加的student用户设置的密码,进入到服务端/home/student
在这里插入图片描述
#5.然后你可以在服务端的/student下写东西,客户端就可以看到新建的文件
在这里插入图片描述
在这里插入图片描述
#6.也可以在将共享的文件挂载到本机的目录下,此处我们挂载到/mnt下,可以写入东西,在服务端就可以看到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SMB服务配置文件,以及selinux为强制模式下的设置

服务端配置
所用代码:

[root@shareserver student]# vim /etc/vimrc 
最后一行加 set nu 
[root@shareserver student]# vim /etc/samba/smb.conf 
89         workgroup = WSETOS 修改域名
96         hosts allow =    可加允许登录的ip
97        hosts deny =	不允许登录的ip
[root@shareserver student]# setenforce 1 变为强制性
getsebool -a | grep smb    smb功能各种权限的开关
[root@shareserver student]# setsebool -P samba_enable_home_dirs on
家目录分享打开

#1.为了方便添加配置文件内容,我们编辑vim /etc/vimrc 最后一行加 set nu 给配置文件加上行数
在这里插入图片描述
在这里插入图片描述
#2.编辑smb配置文件vim /etc/samba/smb.conf 在89行的域名可以修改
在这里插入图片描述
#3.在客户端用匿名用户登录时会显示刚才修改的域名
在这里插入图片描述
#4.我们将selinux改为强制性,然后再在客户端修登录时会发现没有权利登录
在这里插入图片描述
在这里插入图片描述
#5.我们将smb服务的家目录可分享权限打开,再在客户端登录发现可以成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
#6.可以编辑smb的配置文件来限制权限 vim /etc/samba/smb
hosts allow=允许访问的ip
hosts deny= 不允许访问的ip
在这里插入图片描述

SMB服务下自定义目录共享

自建目录共享

服务端配置

mkdir /westos 创建文件
root@shareserver student]# ls -Zd /westos/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /westos/
[root@shareserver student]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@shareserver westos]# restorecon -RvvF /westos/
改变文件上下文
 root@shareserver mnt]# vim /etc/samba/smb.conf 
[linux]  名字
322         comment = westos dir share 说明
323         path = /westos 路径

#1.先建立westos的文件
在这里插入图片描述
#2.编辑smb服务的配置文件,加上我们要分享的文件
在这里插入图片描述
linux为共享出去文件的名字,/westos为实际的路径
在这里插入图片描述
#3.由于selinux为强制模式,所以在客户端实验时会出现权限不够的问题
在这里插入图片描述
#4.所以应该修改/westos的安全上下文让其与smb服务匹配,让其有权限访问
在这里插入图片描述
可以看到安全上下文改变成功
在这里插入图片描述
#5.在客户端登录可以成功进入分享的文件
在这里插入图片描述

系统目录共享

在服务端配置

root@shareserver westos]# vim /etc/samba/smb.conf 
 [mnt]
326         comment = mnt directory
327         path = /mnt   实际路径为/mnt
[root@shareserver westos]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off
samba_export_all_rw --> off
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
[root@shareserver westos]# setsebool -P samba_export_all_ro on 忽略安全上下文,共享目录所有人可读开启

#1.配置smb配置文件,加入系统目录的路径
在这里插入图片描述
在这里插入图片描述
#2.我们在mnt下建立文件,发现客户端登录发现不了
在这里插入图片描述
在这里插入图片描述
#3.由于/mnt为系统目录所以我们不能改它的安全上下文,改了的话,其他在程序/mnt下执行动作时,会遇到麻烦,所以我们打开smb的相关权限
在这里插入图片描述
setsebool -P samba_export_all_ro on 忽略安全上下文,共享目录所有人可读开启
在这里插入图片描述
#4.在客户端登录时就可以看到服务端在/mnt建立的文件了
在这里插入图片描述
#5.文件共享时也可以加入其他的限定条件,如

root@shareserver mnt]# vim /etc/samba/smb.conf
321         [linux]
322         comment = westos dir share
323         path = /westos
324         writable = yes  任何用户可写   不过要给/westos满权限
325 ;       write list = @westos   允许westos组可以写
326 ;       valid users = +student	允许student组可以登陆
327         browseable = yes		是否可以被看见
328         admin users = student	给student用户以root的权力执行动作
329         guest ok = yes		匿名用户可登陆
125         map to guest = bad user  标明匿名用户的身份

SMB多用户认证

1.yum install cifs-utils -y   下载服务
2. vim /root/smbpass  写入用户名和密码
username=student
password=westos
chmod 600 /root/smbpass
3. mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.71.100/linux /mnt/
credentials=/root/smbpass-本次挂载root用户认证机制
sec=ntlmssp-多用户挂载认证机制
multiuser-多用户
4.[root@client mnt]# touch rootfile
[root@client mnt]# ls -l
total 1024
-rw-r--r-- 1   student   student    0 Nov 24 02:15 rootfile
5.[student@client ~]$ cifscreds add -u lee 172.25.71.100 ##
[student@client mnt]$ touch studentfile
[student@client mnt]$ ls -l
total 1024
-rw-r--r-- 1   student  student    0 Nov 24 02:15 rootfile
-rw-r--r-- 1   1001   1001    0 Nov 24 02:20 studentfile
6.cifscreds clearall 清除多用户认证

#1.在服务端下载cifs-utils服务
在这里插入图片描述
为了更好实验给/westos满权限
在这里插入图片描述
#2.在客户端编辑一个存放登录用户和密码的文件 vim /root/smbpass,并给这个文件600,只有root用户查看的权利
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将服务端分享的文件挂载到/mnt下
credentials=/root/smbpass-本次挂载root用户认证机制
sec=ntlmssp-多用户挂载认证机制
multiuser-多用户
在这里插入图片描述
在mnt下建立文件可以看到所有人和所有组都为student用户
在这里插入图片描述
当我们改变用户进入mnt下建立文件会显示权限不够,因为客户端的student没有服务端smb的认证用户机制
在这里插入图片描述
#3.我们在服务端加再加一个smb服务的用户
在这里插入图片描述
可以看到lee用户已经添加,他的uid为1002
在这里插入图片描述
4.我们再到客户端的student用户下
添加服务端用户lee的smb服务的认证机制
在这里插入图片描述
再到/mnt下建立文件时就会成功,并且uid和gid为1002,对应服务端lee的uid和gid
在这里插入图片描述
5.当我们不想需要这些认证机制时,用cifscreds clearall 清除多用户认证
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43407305/article/details/84590012