3-5 网络文件系统
########搭建实验环境#########
搭建两台虚拟机 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/westosdirsystemctl 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=leemount -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资源 ##