Linux中的CIFS文件系统(samba)

CIFS:
CIFS(Common Internet File System)是一种通用网络文件系统,主要用于网络设备之间的文件共享。用Internet文件系统CIFS(Common Internet File System)也称为服务器信是适用于MicrosoftWindows服务器和客户端的标准文件和打印机共享系统息块(SMB)。CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统。Linux 系统可以挂载和访问 CIFS 文件共享 , 如同常见的网络文件系统一样。然而 , 由于 CIFS 是基于 NTFS 文件系统权限模型及其自身的身份验证系统来构建的 , 因而 CIFS 协议中的所有内容并不能很好地映射到 Linux 中
samba:
Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。守护进程smbd和nmbd是Samba的核心,在全部时间内运行。 提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统

作用:
把文件系统共享给别人,让别人来使用
普通网络文件系统 --------->CIFS文件系统
这个文件系统使用的软件就是SMB(samba)
实现文件系统的存储分离
文件系统关闭后还可以存储,提高企业中文件交互的稳定性

软件包:

Samba-common ##Samba 的支持文件
Samba-client ##客户端应用程序
Samba ##服务器应用程序

服务端口通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容
主配置文件:/etc/samba/smb.conf

CIFS文件系统

1.samba服务器的安装及访问调试

1 安装samba需要的软件包,开启服务

[root@shenzhen ~]# yum install samba samba-common -y
[root@shenzhen ~]# systemctl start samba

在这里插入图片描述
2 如果防火墙开着的话关闭防火墙
在这里插入图片描述

3 建立一个要共享的目录
[root@shenzhen ~]# mkdir /westos
在这里插入图片描述
4 修改这个目录的安全上下文

[root@shenzhen ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@shenzhen ~]# restorecon -FvvR /westos

在这里插入图片描述
5 添加一个可以访问共享目录的用户,这个用户必须是系统中存在的用户,
在这里插入图片描述

6 查看samba用户列表

扫描二维码关注公众号,回复: 5660128 查看本文章
pdbedit -L ##查看存在的samba用户
pdbedit -x username ##删除指定的samba用户,一次只能删除一个

在这里插入图片描述
在这里插入图片描述
[root@shenzhen ~]# smbpasswd -a westos
New SMB password:
Retype new SMB password:
Failed to add entry for user westos.
[root@shenzhen ~]# id westos
id: westos: no such user

在这里插入图片描述
添加westos用户失败,是因为系统中不存在这个用户,创建用户之后添加成功

[root@shenzhen ~]# useradd westos 
[root@shenzhen ~]# smbpasswd -a westos
New SMB password:
Retype new SMB password:
Added user westos.

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

(1) 自己建立共享目录是需要修改selinux的属性,修改安全上下文,只对修改目录生效
semanage fcontext -a -t samba_share_t ‘/westos(/.*)?’ ##修改自建立共享目录的安全上下文
restorecon -FvvR /westos ##刷新

setsebool -P samba_enable_home_dirs on samba ##用户可以访问自己的家目录
smbclient -L //172.25.254.127 -U westos ##列出samba用户可以访问的共享目录
smbclient //172.25.254.127/westos -U westos ##直接进入家目录并且查看内容
smbclient //172.25.254.127/hello -U student ##直接进入指定的共享目录并查看内容

在没设置共享目录之前,samba查看共享目录会报错:
在这里插入图片描述
1 [root@shenzhen ~]# vim /etc/samba/smb.conf
2 [root@shenzhen ~]# systemctl restart smb

[hello]            ##共享名称
comment = /westos  ##共享说明
path = /westos     ##共享目录的路径

在这里插入图片描述
在这里插入图片描述
3 再次查看共享目录,出现刚刚设置的信息
在这里插入图片描述
4 直接进入westos共享目录,查看内容(这里指定目录时应该是共享名称,而不是目录名)
在这里插入图片描述
在这里插入图片描述
5 访问samba用户的家目录被拒绝
在这里插入图片描述
6 查看selinux状态,打开访问samba家目录的开关
在这里插入图片描述
在这里插入图片描述
7 再次访问并查看
在这里插入图片描述
在这里插入图片描述
8 samba用户访问别人的家目录
在这里插入图片描述
所以任何一个用户都只能访问自己的家目录,不可以访问别人的家目录
9 不是samba用户无法访问共享目录,也无法访问自己的家目录
在这里插入图片描述
10 新建一个haha用户没有家目录,没有加入samba用户列表之前无法访问共享目录
在这里插入图片描述
将haha用户加入samba用户中后可以访问
在这里插入图片描述
11 不存在家目录的samba用户haha访问自己的家目录出现以下报错
在这里插入图片描述
注:
*1 永久更改是加入到内核的安全上下文列表里
*2 临时更改会在selinux重启的时候失效
*3 共享新建目录可以更改安全上下文,但共享系统原有目录是不可以修改安全上下文,会导致系统原有目录的使用者会出现问题,可能会导致源来的某些功能不能是使用
*4 setsebool -P samba_export_all_rw on比安全上下文更改的权限要大,没有更改安全s上下文的方式安全,会忽略selinux对smb目录的影响,可以访问安全上下文没有修改的原来不能访问的目录
*5 ro比rw开放的权利小一点

( 2) 共享系统原有目录时不需要改变安全上下文,只需要打开开关

setsebool -P samba_export_all_rw ##读写
setsebool -P samba_export_all_ro ##只读

例:
<1> 编辑配置文件,加入新的共享目录(系统的原有目录)

[root@shenzhen ~]# vim /etc/samba/smb.conf 
[mnt]
comment = /mnt
path = /mnt
:wq
重启服务
[root@shenzhen ~]# systemctl restart smb

在这里插入图片描述
在这里插入图片描述
<2> samba用户访问/mnt,可以查看其中的内容,但是查看不全

[root@shenzhen ~]# smbclient  //172.25.254.127/mnt -U westos
Enter westos's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
这样可以看到全部的内容
[root@shenzhen ~]# ls /mnt

在这里插入图片描述
同一个用户查看自己建立的共享目录,查看到的就是目录中的内容
在这里插入图片描述
在这里插入图片描述
对比两个目录的安全上下文
在这里插入图片描述
在这里插入图片描述
<3> 查看selinux状态,打开开关

[root@shenzhen ~]# getenforce
Enforcing
[root@shenzhen ~]# getsebool -a |grep samba
[root@shenzhen ~]# setsebool -P samba_export_all_ro on

在这里插入图片描述
在这里插入图片描述
<4> 再次访问/mnt,查看时可以查看所有的内容

[root@shenzhen ~]# smbclient  //172.25.254.127/mnt -U westos
Enter westos's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
smb: \> quit
*出现超时的报错所是因为本地解析没有写入文件,或者没有写对,将主机名写入本地解析文件vim /etc/hosts

在这里插入图片描述
3.限制客户端访问列表和拒绝列表

workgroup = HELLO ##共享目录的工作组
hosts deny = 172.25.254.127 ##拒绝172.25.254.127主机访问和挂载
hosts allow = 172.25.254. ##允许172.25.254.127主机访问
hosts deny = 172.25.254. ##拒绝172.254.254.网段的所有ip访问

1)修改工作组

1 查看共享目录工作组(Domain=[SAMBA])
[root@shenzhen ~]# smbclient -L //172.25.254.127 -U haha
在这里插入图片描述
2 编辑配置文件,重启服务

[root@shenzhen ~]# vim /etc/samba/smb.conf 
[root@shenzhen ~]# systemctl restart smb
文件中修改的内容如下
workgroup = HELLO

在这里插入图片描述
在这里插入图片描述
3 再次查看工作组的名字,发生改变
[root@shenzhen ~]# smbclient -L //172.25.254.127 -U haha
在这里插入图片描述
2)设定共享目录的访问黑白名单

1 默认所有人都可以访问,虚拟机和真实主机分别挂载都可以挂载成功,挂载是访问的另一种方法
当前虚拟机
在这里插入图片描述
永久挂载

[root@shenzhen ~]# vim /etc/fstab
//172.25.254.127/hello /mnt cifs defaults,username=haha,password=1 0 0 

先卸载设备,mount -a激活,自动挂载 ,df查看
在这里插入图片描述
在这里插入图片描述
真实主机
[root@foundation68 ~]# mount //172.25.254.127/HELLO /mnt -o usernaem=westos,password=1
[root@foundation68 ~]# df加粗样式
2 编辑配置文件,拒绝当前主机访问,重启服务

[root@shenzhen ~]# vim /etc/samba/smb.conf 
[root@shenzhen ~]# systemctl restart smb
hosts deny = 172.25.254.127 ##拒绝172.25.254.127主机访问和挂载

在这里插入图片描述
在这里插入图片描述
3 卸载之前挂载的/mnt,当前主机再次挂载查看,挂载失败
在这里插入图片描述
真实主机挂载查看,挂载成功

[root@foundation8 ~]# umount /mnt
[root@foundation8 ~]# mount //172.25.254.127/HELLO /mnt -o usernaem=westos,password=1
[root@foundation8 ~]# df

在这里插入图片描述
4 编辑配置文件,允许当前主机访问,重启服务

[root@shenzhen ~]# vim /etc/samba/smb.conf 
[root@shenzhen ~]# systemctl restart smb
hosts allow = 172.25.254.127

在这里插入图片描述
在这里插入图片描述
5 当前虚拟机再次挂载,挂载成功
[root@shenzhen ~]# df
[root@shenzhen ~]# mount -a
[root@shenzhen ~]# df
在这里插入图片描述
真实主机卸载后再次挂载,挂载失败

在这里插入图片描述
6 编辑配置文件,设置网段黑名单,重启服务
[root@shenzhen ~]# vim /etc/samba/smb.conf
[root@shenzhen ~]# systemctl restart smb
在这里插入图片描述
在这里插入图片描述
7 虚拟机卸载后再次挂载,挂载失败
[root@shenzhen ~]# umount /mnt
[root@shenzhen ~]# mount -a

在这里插入图片描述
真实主机再次挂载

[root@foundation68 ~]# mount //172.25.254.127/hello /mnt -o usernaem=westos,password=1
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

在这里插入图片描述
实验完成后将设置还原
在这里插入图片描述
4.samba匿名访问

*127主机匿名访问hello目录,访问失败,默认匿名用户不能访问
在这里插入图片描述
1 vim /etc/samba/smb.conf
2 加入 map to guest = bad user
在这里插入图片描述
3 末尾 guest ok = yes
在这里插入图片描述
4 systemctl restart smb
在这里插入图片描述
*匿名用户没有设置密码,系统提示输入密码时直接回车即可
5 访问hello目录访问成功,但是mnt目录不允许匿名访问

[root@shenzhen ~]# smbclient //172.25.254.127/hello -U guest
Enter guest's password: 
Domain=[HELLO] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
  .                                   D        0  Fri Feb 22 17:53:50 2019
  ..                                  D        0  Mon Feb 25 16:24:56 2019

		10473900 blocks of size 1024. 7065952 blocks available
smb: \> quit

在这里插入图片描述

[root@shenzhen ~]# smbclient //172.25.254.127/mnt -U guest
Enter guest's password: 
Domain=[HELLO] OS=[Windows 6.1] Server=[Samba 4.4.4]
tree connect failed: NT_STATUS_ACCESS_DENIED

在这里插入图片描述
6 再次编辑配置文件,重启服务
给mnt目录末尾添加guest ok = yes
[root@shenzhen ~]# vim /etc/samba/smb.conf
[root@shenzhen ~]# systemctl restart smb
在这里插入图片描述
在这里插入图片描述
7 mnt目录也可以匿名访问

[root@shenzhen ~]# smbclient //172.25.254.127/mnt -U guest
Enter guest's password: 
Domain=[HELLO] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
  .                                   D        0  Mon Feb 25 16:48:25 2019
  ..                                  D        0  Mon Feb 25 16:24:56 2019
  file1                               N        0  Mon Feb 25 16:48:25 2019
  file2                               N        0  Mon Feb 25 16:48:25 2019
  file3                               N        0  Mon Feb 25 16:48:25 2019
  file4                               N        0  Mon Feb 25 16:48:25 2019
  file5                               N        0  Mon Feb 25 16:48:25 2019

		10473900 blocks of size 1024. 7065976 blocks available
smb: \> quit

在这里插入图片描述
5.共享目录的管理参数

writable = yes ##所有用户可写
write list = westos/+westos ##只有westos用户可写,有+或者@表示westos组的用户都可写
valid users = westos/+westos ##只有westos用户可以登陆,有+或者@表示westos组的用户可以登陆
browseable = no ##隐藏共享目录
admin user = westos ##登陆之后的管理员是westos,共享的超级用户指定

+ @都表示组成员
隐藏文件夹但是可以使用

(1)所有用户可写writable=yes
1 在配置文件中添加,退出保存后重启服务
在这里插入图片描述
在这里插入图片描述
2 当前主机挂载,切换到挂载点目录,创建文件hhh1,没有权限
在这里插入图片描述
3 先卸载,查看samba用户读写的开关,是关着的
在这里插入图片描述
在这里插入图片描述
4 打开开关,再次挂载创建文件,仍然失败
在这里插入图片描述
在这里插入图片描述
5 查看共享目录westos的权限,其他用户对它没有写的权限,给westos目录满权限
在这里插入图片描述
6 再次创建,创建成功
在这里插入图片描述
7 删除,卸载
在这里插入图片描述
8 使用westos用户登录,创建文件
在这里插入图片描述
9 删除,卸载
在这里插入图片描述
(2)注释所有可写控制,添加指定用户可写的列表
1 编辑配置文件,退出保存后重启服务
在这里插入图片描述
在这里插入图片描述
2 haha用户挂载,创建文件,创建失败,卸载
在这里插入图片描述
3 westos用户挂载并创建文件,创建成功,卸载
在这里插入图片描述
4 编辑配置文件,使westos用户组可写,保存退出后重启服务
在这里插入图片描述
在这里插入图片描述
5 haha用户挂载,创建文件失败
在这里插入图片描述
6 将haha用户加入到westos用户组
在这里插入图片描述
7 再次创建,创建失败,卸载挂载刷新之后创建成功,再次卸载
在这里插入图片描述
8 将haha用户从westos用户组删除
在这里插入图片描述
(3)指定用户可登录(挂载)
1 编辑配置文件,退出保存后重启服务
在这里插入图片描述
在这里插入图片描述
2 haha用户挂载失败
在这里插入图片描述
3 westos用户挂载成功
在这里插入图片描述
4 编辑配置文件,设置westos用户组可登录
在这里插入图片描述
在这里插入图片描述
5 haha用户挂载失败
在这里插入图片描述
6 将haha用户加入到westos组
在这里插入图片描述
7 haha用户登录成功
在这里插入图片描述
(4)隐藏共享目录
browseable默认值是yes表示不隐藏
1 编辑配置文件,退出保存后重启服务
在这里插入图片描述
在这里插入图片描述
2 列出共享目录,可以看到
在这里插入图片描述
3 编辑配置文件,设置隐藏共享目录
在这里插入图片描述
在这里插入图片描述
4 共享目录被隐藏
在这里插入图片描述
(5)共享的超级用户指定
1 编辑配置文件,将隐藏目录的设置还原,添加samba用户的管理员,设置所有用户可写
在这里插入图片描述
在这里插入图片描述
2 haha用户挂载,创建文件,查看文件的所有人和所有组
在这里插入图片描述
3 westos用户登录,创建文件,文件的所有人是root用户
在这里插入图片描述
6.samba多用户挂载
没有自己的共享帐号就无法访问共享目录
将共享目录改为匿名不可访问,否则会影响实验结果

客户主机得到端口的时候需要分配
客户主机的挂载需要被允许
1 客户端登录,可以查看到所有文件
在这里插入图片描述
2 编辑配置文件,将samba用户管理员注释掉
在这里插入图片描述
3 客户端挂载成功
在这里插入图片描述
4 查看文件的所有人和所有组(服务端用户的uid在客户端存在时会显示对应的uid下的用户名,若是没有,就显示uid
在这里插入图片描述
5 切换到普通用户,依旧可以查看
在这里插入图片描述
6 超级用户删除所有文件,卸载
在这里插入图片描述
1 安装软件
在这里插入图片描述
2 编辑一直smb用户的认证文件,将用户名和密码编辑进去
vim /root/smbpass
在这里插入图片描述
3 给文件设置权限

chmod 600 /root/smbpass

4 再次挂载,切换到student用户,查看失败
在这里插入图片描述
在这里插入图片描述
5 采用认证之后可以查看目录中的内容,创建文件创建成功,student用户退出,可以在挂载点看到新建的文件
在这里插入图片描述
6 修改本地认证文件中的内容,将用户名改为westos,再次刷新之后普通用户无法查看

vim /root/smbpass

在这里插入图片描述
在这里插入图片描述
7 普通用户smd认证,可以查看,可以创建文件,退出卸载,创建的文件的所有人和所有组是认证的samba用户的所有人和所有组(这里所有人是root是因为samba配置文件中设置了westos用户是samba的超级用户,即管理员用户)
在这里插入图片描述
8 在samba配置文件中注视samba用户的管理员的设置,超级用户再次登录,切换到普通用户,student用户认证,可以查看
在这里插入图片描述
9 创建文件,文件的所有人和所有组是登录时使用的用户(当前主机没有这个用户占用这个uid时就会直接显示uid)
在这里插入图片描述
总结:
每一次挂载卸载之后都需要重新认证
挂载(登录)时用的谁的认证信息创建的文件就属于谁

猜你喜欢

转载自blog.csdn.net/qq_44224894/article/details/88047158