欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

3-5 网络文件系统

程序员文章站 2022-03-11 16:09:07
...

########搭建实验环境#########

搭建两台虚拟机 westosa westosb

westosa:

hostname设置为:westos_storage

配置网络仓库
 

vim westos.repo

[AppStream]
name=AppStream
baseurl=http://172.25.254.72/rhel8/AppStream
gpgcheck=0

[BaseOS]
name=BaseOS
baseurl=http://172.25.254.72/rhel8/BaseOS
gpgcheck=0

westosb同westosa(不改主机名)

###### 1. samba服务简介 ########

作用:

存储分离:将系统和储存分离开(网络共享出去,或磁盘共享出去)
目的:使得其他人也可以访问到存储的信息,方便共享信息

smb = Server Message Block      Sum     ##windows系统共享文件时用到的协议 smb
cifs = Common Internet File System  Miscrosoft   ##Linux系统共享文件时用到的协议 cifs
windows系统共享文件时用到的协议smb
smb是由miscrosoft+sun

Linux cifs

######2.samba基本信息######

服务启动脚本:smb.service
主配置目录:/etc/samba
主配置文件:/etc/smb.conf
安全上下文:samba_share_t
端口:139 445
安装包:samba samba-common

######2.samba的安装与启用######

samba的安装:

dnf install samba samba-common samba-client -y  ##common服务配置文件 client客户端

samba服务启动:

systemctl enable --now smb

samba服务启用:

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload 

测试:

smbclient -L //172.25.254.100   ##当要输入root密码时直接回车(因为没有密码)

###### 3.samba用户的建立 #############

1.samba用户必须是被地存在的用户
2.samba用户的建立

smbpasswd -a lee    ##添加用户 lee必须是本地真实存在的用户
pdbedit -L        ##查看用户列表
pdbedit -x lee        ##删除用户

useradd -s /sbin/nologin lee -M   ##建立真实用户lee

smbpasswd -a lee   ##建立samba用户并设定密码
smbclient -L //172.25.254.100 -U lee  ##samba启用用户lee并列出
Enter SAMBA\lee's password: 

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.11.2)
	lee             Disk      Home Directories
vim /etc/hosts    ##如若显示过慢进行地址解析,并重新加载
172.25.254.100 westos_storage.westos.org

#######4.samba用户访问家目录######

当selinux开启时:
setsebool  -P samba_enable_home_dirs on   ##selinux访问限制打开,则samba用户可以访问自己家目录(因为selinux,samba用户不能直接访问自己家目录)

windows下
\\172.25.254.20        ##访问
net use            ##查看访问记录
net use * /del        ##删除访问记录

 在linux下:
smbclient  //172.25.254.20/westos -U westos   ##进行访问

 #######5.samba服务共享目录 #######

mkdir/westos  _share   ##只对root用户可写
touch /westos_share/westosfile{1..5}   
semanage fcontext -a -t samba_share_t '/westos  _share(/.*)?'  ##如果
restorecon -RvvF /westos_share

vim /etc/samba/smb.conf
[westos_share]            ##共享名称
    comment = westos share    ##共享说明
    path = /westos_share    ##共享路径

systemctl restart smb     ##重新加载

测试:

smbclient  //172.25.254.20/westos_share -U lee   ##共享就显示了

 cd /etc/samba/      ##samba服务的配置目录
ls
lmhosts  smb.conf  smb.conf.example   ## smb.conf smb的主配置文件 smb.conf.example smb服务的配置文件模板
cp smb.conf.example smb.conf -p   ##重新生成配置文件
setsebool -P samba_enable_home_dirs on  ##使得selinux中,samba用户可以使用自己的家目录
mkdir /westos_share
ls -ld /westos_share/   ##只有root用户可以对其读写
drwxr-xr-x. 2 root root 6 Aug 10 12:01 /westos_share/
vim /etc/samba/smb.conf
systemctl restart smb
    314 [westos_share]
    315         comment= westos share
    316         path=/westos_share

smbclient -L //172.25.254.100 -U lee

 touch /westos_share/westosfile{1..3}   ##最后可以访问到这些文件代表成功
smbclient //172.25.254.100/westos_share -U lee   ##访问共享时和还会出现selinux的报错

semanage fcontext -a -t samba_share_t '/westos_share(/.*)?'   ## 用户建立的目录如果需要通过smb共享,那安全上下文必须设定为 samba_share_t
restorecon -RvvF /westos_share/
smbclient //172.25.254.100/westos_share -U lee   ##查看,如若显示则共享成功

Enter MYGROUP\lee's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Aug 10 12:05:26 2021
  ..                                  D        0  Tue Aug 10 12:01:23 2021
  westosfile1                         N        0  Tue Aug 10 12:15:06 2021
  westosfile2                         N        0  Tue Aug 10 12:15:06 2021
  westosfile3                         N        0  Tue Aug 10 12:15:06 2021

		17814528 blocks of size 1024. 14410328 blocks available

共享系统级目录不成功时则

共享系统级目录时,因为selinux问题导致访问不了则打开

getsebool -a | grep samba
samba_export_all_ro --> off   ##打开,selinux不再对samba服务访问文件时的上下文进行限制
samba_export_all_rw --> off   ##打开,selinux不再对samba服务访问文件时的上下文进行限制

##### 6.samba的访问控制######

全局设定:

hosts allow    172.25.254.30 172.25.254.        ##白名单设定 当写到单独共享时之对此共享生效
hosts deny                    ##黑名单设定 当写到【GLOBAL】时对samba整体生效

 

ip:100
vim /etc/samba/smb.conf
    91 hosts allow = 172.25.254.200   ##只允许200这台主机来访问当前的samba服务器
systemctl restart smb

ip:72
smbclient -L //172.25.254.100 -U lee
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE  ##被拒绝

       hosts deny = 172.25.254.200   ##拒绝200这台主机来访问当前的samba服务器

ip:200
smbclient -L //172.25.254.100 -U lee
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE ##被拒绝
ip:100
vim /etc/samba/smb.conf
    317 hosts allow = 172.25.254.200   ##westos_share这个共享,只能被200主机访问,只针对westos_share
systemctl restart smb

ip:72
smbclient //172.25.254.100/westos_share -U lee   ##访问westos_share被拒
Enter SAMBA\lee's password:
tree connect failed: NT_STATUS_ACCESS_DENIED

 #### 7.samba的常用配置参数#####

writable = yes        ##可写
write list = westos    ##指定用户可写
write list = +westos    ##指定组可写
write list = @westos
valid users = lee    ##指定访问用户
valid users = +lee|@lee    ##指定访问组
browseable = yes|no    ##是否隐藏共享

map to guest = bad user    ##写到全局设定中
guest ok = yes        ##允许匿名用户访问
admin users = lee    ##指定此共享的超级用户身份呢

browseable = yes|no    ##是否隐藏共享


ip:100
vim /etc/samba/smb.conf
317         browseable = no      ## browseable=no 隐藏共享目录
systemctl restart smb

ip:200
smbclient -L //172.25.254.100 -U lee      ##共享目录被隐藏
Unable to initialize messaging context
Enter SAMBA\lee's password: 

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server Version 4.11.2)
	lee             Disk      Home Directories

valid users = lee    ##指定访问用户
valid users = +lee|@lee    ##指定访问组

writable = yes        ##可写
write list = westos    ##指定用户可写
write list = +westos    ##指定组可写

map to guest = bad user    ##写到全局设定中
guest ok = yes        ##允许匿名用户访问

318         valid user = westos   ##此共享只能通过samba用户 westos 登陆

318         valid user = @westos  ##表示 westos 中的组成员可以共享
usermod -G westos lee     ##添加 lee 到 westos 组中 则 lee 可以使用(添加的组成员,必须是samba成员)

ip 100
chmod 777 /westos_share/    ##指定权限为满权限
ls -ld /westos_share/
drwxrwxrwx. 2 root root 63 Aug 10 12:05 /westos_share/
vim /etc/samba/smb.conf
319         writable = yes    ##westos_share 以读写方式共享

ip:200
mount //172.25.254.100/westos_share /mnt/ -o username=lee,password=westos  ##挂载samba共享资源到/mnt中,挂载后,在200测试机的目录中建立文件真实存储文件的位置为samba共享出来的westos_share目录中
touch /mnt/file     ##即可在westos_share里建立文件

#########################
320         write list = lee    ##只针对于lee用户可写

ip:200
mount //172.25.254.100/westos_share /mnt/ -o username=westos,password=westos
touch /mnt/file1
touch: cannot touch '/mnt/file1': Permission denied   ##则使用 westos 用户建立被拒绝

320         write list = +lee    ##表示对于lee组成员可写

############################
默认情况下,匿名用户不可以使用samba共享资源
设置匿名用户可以使用samba共享资源

vim /etc/samba/smb.conf
118         map to guest = bad user     ##把没有用户身份的用户都映射为guest账号
321          guest ok = yes             ##此共享允许guset用户访问

ip:72
[[email protected] ~]# smbclient //172.25.254.100/westos_share   ##匿名用户可以直接访问
Enter SAMBA\root's password:       ##不需要输入密码
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Aug 10 23:31:13 2021
  ..                                  D        0  Tue Aug 10 12:01:23 2021
  westosfile1                         N        0  Tue Aug 10 12:15:06 2021
  westosfile2                         N        0  Tue Aug 10 12:15:06 2021
  westosfile3                         N        0  Tue Aug 10 12:15:06 2021
  file                                A        0  Tue Aug 10 23:31:13 2021

		17814528 blocks of size 1024. 14385736 blocks available


 

######autofs+samba#########

autofs:
在客户端实现自动挂载卸载的软件


配置方式:
vim /etc/auto.master
最终挂载点的上层目录    自动以子策略文件
/mnt            /etc/auto.samba


vim 自动以子策略文件(/etc/auto.samba)
最终挂载点    挂载参数    挂载资源
samba        -fstype=cifs,username=westos,password=lee    ://172.25.254.20/westosdir

systemctl restart autofs

测试:
cd /westos/samba
df
cd /root
等待资源闲置超时    ##默认300秒 vim /etc/autofs.conf ---->Timeout=3
df
挂载资源自动卸载

 //172.25.254.100/westos_share     /westos/samba           在/westos/samba底下,实现自动挂载和卸载westos_share

dnf install autofs -y    ##在客户端安装 autofs 实现自动挂载和卸载
 vim /etc/auto.master    
        /westos /etc/auto.share     ##/westos 最终挂载点的上层目录,etc/auto.master 子挂载策略文件,此文件名称自定义,并且在系统中默认不存在
vim /etc/auto.share
        samba   -fstype=cifs,username=westos,password=westos   ://172.25.254.100/westos_share        ##samba最终挂载点的相对路径  
systemctl enable --now autofs.service
ls -ld /westos
cd /westos/samba    
df           ##自动挂载
vim /etc/autofs.conf  
        timeout = 5     ##autofs的配置文件,设置自动挂载等待时间为 5s                
systemctl restart autofs
cd     ##转到非挂载路径
 df    ##不显示挂载
cd /westos/samba    ##转到挂载路径等待5s
 df     ##自动挂载

####8.samba的多用户挂载#####

在客户端中root用户用自己的samba账户挂载了服务器的资源,自己时可以浏览使用的。
但没有用过samba验证的其他人也可以访问samba服务,这样客户端就出现了很严重的越级漏洞。

dnf install cifs-utils -y   ##安装多用户的安全插件
man mount.cifs         ##查看安全插件的用法

vim /root/smbpass
username=westos
password=lee

mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.20/westosdir /mnt

#credentials=/root/smbpass    指定认证文件
#sec=ntlmssp            指定认证类型 用户使用到的认证方式
#multiuser            多用户认证参数,当挂载时添加此参数,没有通过认证的用户不可以使用                                   smb上的资源

dnf install cifs-utils -y   ##安装多用户的安全插件
man mount.cifs   ##查看安全插件的用法
vim /root/smbpass    
     username=lee
     password=westos
chmod 600 /root/smbpass  ##当用户挂载smb资源时需要书写账号密码,如果直接书写,那账号密码用过历史则被其他人看到,所以要写到文件中,并设定安全权限

mount -o credentials=/root/smbpass //172.25.254.100/westos_share /mnt ##用credentials参数指定文件,密码将被隐藏
umount /mnt

mount -o credentials=/root/smbpass,multiuser //172.25.254.100/westos_share /mnt  ##multiuser 多用户认证参数,当挂载时加此参数,没有通过认证的用户不可以使用smb上的资源
su - westos
ls /mnt
ls: cannot access '/mnt': Permission denied
umount /mnt


mount -o credentials=/root/smbpass,multiuser,set=ntlmssp //172.25.254.100/westos_share /mnt   ##set=ntlmssp用户使用的认证方式
su - westos
cifscreds add -u lee 172.25.254.100   
Password:                           ##当输入密码错误时
ls /mnt
ls: cannot access '/mnt': Permission denied   ##访问依然被拒绝
cifscreds --help
Usage:
	cifscreds add [-u username] [-d] <host|domain>
	cifscreds clear [-u username] [-d] <host|domain>
	cifscreds clearall 
	cifscreds update [-u username] [-d] <host|domain>

cifscreds clearall    ##清空添加的密码

cifscreds add -u lee 172.25.254.100    
Password:             ##输入正确密码
ls /mnt                         
westosfile1  westosfile2  westosfile3  ##用户可以使用smb资源         ##