1. samba
1.1 samba服务简介
smb:Server Message Block
cifs:Common Internet File System Miscrosoft
Windows使用smb协议系统共享文件
Linux使用cifs协议共享文件
1.2 samba基本信息
信息 | 说明 |
---|---|
smb.service | 服务启动脚本 |
/etc/samba | 主配置目录 |
/etc/smb.conf | 主配置文件 |
samba_share_t | 安全上下文 |
139 445 | 端口 |
samb-common | 安装包 |
1.3 samba的安装和启用
企业的存储分离机制
samba的作用:Linux和Windows可以实现数据的互通
1.3.1 Windows共享文件
- Windows共享文件
高级共享:配置权限
运行:查看共享
- Linux访问共享的数据
安装samba 的客户端
smbclient -L //192.168.0.6
smbclient -L //192.168.0.6/自己设置的下载项 -U LENOVO
挂载:
1.3.2Linux共享文件
1.3.2.1 启用samba服务
getenforce
enforcing
安装samba服务端,samba测试端(用于最后测试)
dnf search samba
dnf install samba.x86_64 samba-common.noarch samba-client -y
samba用户必须是本地用户
添加yao用户,westos用户
smbpasswd -a yao
smbpasswd -a westos
列出用户
pdbedit -L
删除用户
pdbedit -x yao
重启服务并测试
systemctl restart smb.service
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
smbclient -L 192.168.0.18
smbclient -L 192.168.0.18 -U yao
1.3.2.2 samba用户访问家目录
selinux是enforcing时,不允许访问用户的家目录
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
smbclient //192.168.0.18/yao -U yao
smb: \>ls
1.3.2.3 访问自己创建的目录
mkdir /westos
touch /westos/file{1..10}
生成新的配置文件
cd /etc/samba
mv smb.conf smb.conf.bak //备份操作
mv smb.conf.example smb.conf
semanage fcontext -a -t samba_share_t '/westos(/.*)?'
restorecon -RvvF /westos
编辑配置文件
写入315行:
[WESTOS] //共享名称
comment = local dir westos //共享说明
path = /westos //共享路径
vim /etc/samba/smb.conf
systemctl restart smb.service
测试
smbclient -L //192.168.0.18 -U yao
smbclient -L //192.168.0.18/WESTOS -U yao
1.3.2.4 共享系统级别的目录
编辑配置文件
写入319行:
[MNT]
comment = /mnt dir
path = /mnt
vim /etc/samba/smb.conf
systemctl restart smb.service
检查安全上下文
ls -Zd /mnt
mnt的上下文不能轻易改,可能会造成只有smb可以访问,其他人不能访问
samba开启所有读的功能
getsebool -a | grep samba
setsebool -P samba_export_all_ro on
测试
smbclient //192.168.0.18/MNT -U yao
1.4 samba访问控制
客户端,服务端都安装samba-client
默认情况下,samba允许任何人访问资源
1.4.1全局配置
- 白名单
添加91行:hosts allow = 192.168.0.18
只允许18主机访问samba的资源
18可以进行挂载访问
19不能访问
vim /etc/samba/smb.conf
systemctl restart smb.service
- 黑名单
(先注释白名单)
添加92行:hosts deny=192.168.0.18
只有18主机不能访问samba的资源
mnt和wesros在19号主机(其他主机)可以访问
vim /etc/samba/smb.conf
systemctl restart smb.service
1.4.2 局部配置
(只针对个别共享)
在 [WESTOS] 下添加:hosts allow = 192.168.0.18
共享目录westos可以在18访问
共享目录westos不可以在19访问,但是可以访问共享目录mnt
vim /etc/samba/smb.conf
systemctl restart smb.service
(注意:我共享的是系统目录mnt,现在再次共享mn,t挂载到mnt下,会出现问题,可以挂载media下)
1.4.3基于用户的访问控制
设定哪个用户可以访问共享
- 用户
在 [MNT] 下添加:valid users = yao
只有yao可以访问mnt共享目录
username是yao,可以访问
username是westos,不可访问mnt
vim /etc/samba/smb.conf
systemctl restart smb.service
- 用户组
在 [MNT] 下添加:valid users = +yao
yao的组成员可以访问该资源
vim /etc/samba/smb.conf
systemctl restart smb.service
1.5 samba命令参数
所有设定在服务端成生效
chmod 777 /westos
- 读写权限
yao和westos用户对/westos目录不可写,两人属于other
samba不允许写
开启写的功能
在 [WESTOS] 下添加:writeable=yes
(注意:samba虽然可写,但还是要参考本地文件权限)
vim /etc/samba/smb.conf
systemctl restart smb.service
客户端
mount -o username=yao,password=westos //192.168.0.18WESTOS /mnt
cd /mnt
touch file
- 设定用户身份
上面的实验使用的是用户yao创建文件,但是,在客户端查看到的依旧是root用户
在 [WESTOS] 下添加:write list =westos
(服务器用户的yao)
只有用户yao可写
vim /etc/samba/smb.conf
systemctl restart smb.service
客户端
mount -o username=yao,password=westos //192.168.0.18WESTOS /mnt
cd /mnt
touch file
- 设定用户组身份
在 [WESTOS] 下添加:write list=@yao
,只有yao组的成员可写
write list=+yao
vim /etc/samba/smb.conf
systemctl restart smb.service
客户端
mount -o username=yao,password=westos //192.168.0.18WESTOS /mnt
cd /mnt
touch file
- 浏览权力
在 [WESTOS] 下添加:browswable=no
,共享隐藏(即改即生效)
用户无法浏览共享资源
vim /etc/samba/smb.conf
systemctl restart smb.service
客户端
smbclient -L //192.168.0.18
- 匿名用户登陆权限
在 [WESTOS] 下添加:gust ok=yes
(匿名用户可以访问)
在[GLOBAL]下添加:map to guest = bad user
(必须写到global全局119行,否则不生效)
匿名用户可以直接使用共享
匿名用户:smbclient //192./WESTOS
vim /etc/samba/smb.conf
systemctl restart smb.service
客户端
mount -o username=guest,password="" //192.168.0.18WESTOS /mnt
df
smbclient //192.168.0.18/WESTOS
1.6 samba客户端的多用户认证
(每个人的认证都是独立的)
- 服务端
简化配置文件(此时,共享不可写)
- 客户端
登陆的westos用户是samba下发的账号,和主机上的westos用户不同
其他人应该使用自己的samba账号
cd /media
touch file
chmod 777 /media(客户端挂载后)
客户端漏洞:
此时登陆的westos是没有认证samba的用户
理论上可以对/media中的资源进行访问,但是不合理;
原则应该是,只有认证的用户才可以去查看samba的资源
该主机只有root用户注册了samba,但是,没有认证的westos系统账号依然可以看见samba的资源
su - westos
cd /media
ls
漏洞策略:对挂载安全设定
在客户端安装samba认证安全插件
dnf install cifs-utils -y
要求:
有挂载参数;
将密码账号写到文件里(隐藏密码);
设置多用户认证方式(让每个用户认证完,自己去挂载)
vim /root/smb_auth
username=yao
password=westos
chmod 600 /root/smb_auth
设定认证方式
sec=ntlmssp(3.8以上的版本)
mount //192.168.0.18 /WESTOS /media -o credentials=/root/smb_auth,multiuser,sec=ntlmssp
su - westos
cifscreds add -u westos 129.168.0.18 //认证,输入18的主机密码
cd /media
ls
如果上一次密码输入有误,需要clear一次
cifscreds clear -u westos 192.168.0.18
cifscreds add -u westos 192.168.0.18
现在wesros可以使用自己的账号查看文件内容
2. NFS
2.1 安装并启用NFS
NFS是Linux和unix之间共享
服务端:
安装并启用
dnf install nfs-utils -y
systemctl enable --now nfs-server
showmount -e 192.168.0.18 //查看18号主机的共享
rpcbind分配端口,用端口去找mountd去查找有没有资源可以访问,
如果有,则去指引寻找nfs,没有的话,mountd会拒绝
火墙添加策略
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
firewall-cmd --permanent --add-service=mount
firewall-cmd --reload
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
客户端:
showmount -e 192.168.0.18
2.2 nfs服务的基本共享方式
(和samba的不同是,不需要认证,用到的用户都是nfs)
服务端:
在/etc/exports文件中写入:/westos *(ro)
vim /etc/exports
exportfs -rv
客户端:
showmount -e 192.168.0.18
mount 192.168.0.18:/westos /media //互联网远程目录的表示方式,远程目录挂载到/media
cd /media
ls
2.3 nfs配置中的常用参数
- 写权限
无法创建文件touch
服务端:
在/etc/exports文件中写入:/westos *(rw)
vim /etc/exports
exportfs -rv
客户端
mount 192.168.0.18:/westos /media
cd /media
touch file
ls
- 修改用户身份
服务端查看客户端创建的新文件的用户和用户组是nfs:nobady
注意,系统本身目录的权限:chmod 777 /westos
服务端
设定客户端创建文件的用户身份是超级用户root
在/etc/exports文件中写入:/westos *(rw,no_root_squash)
vim /etc/exports
exportfs -rv
客户端
cd /media
touch file
- 指定用户身份
服务端
在/etc/exports文件中写入:/westos *(rw,anonuid=1001)
vim /etc/exports
exportfs -rv
客户端
cd /media
touch file
- 组身份的转换
服务端
在/etc/exports文件中写入:/westos *(rw,anongid=1001)
vim /etc/exports
exportfs -rv
客户端
cd /media
touch file
- async:实时同步数据到服务器
- sync:更改生成后同步数据到服务器
3. autofs自动挂载文件系统服务的部署
自动挂载,自动卸载
客户端
安装软件
dnf install autofs -y
systemctl enable --now autofs.service
ls -ld /net
cd /net/192.168.0.18/westos
ls
- 修改默认等待时间
默认等待300秒才可以卸载
修改配置文件的15行:timeout=5
vim /etc/autofs.conf
systemctl restart autofs
cd /net/192.168.0.18/westos //自动挂载
cd //自动卸载
- samba的挂载策略
(在一个相同的目录下,不能写2个挂载点)
(将2者samba和nfs写到一个文件里)
添加/etc/auto.master
主挂载策略文件的14行:/media /etc/auto.nfs
vim /etc/auto.master
systemctl restart autofs.service
建立文件/etc/auto.nfs
:
nfs 192.168.0.18:/westos
samba -fstype=cifs,username=lee,password=westos //192.168.0.18/WESTOS /media/samba //用这些参数将设备挂载到samba目录/media
vim /etc/auto.nfs
systemctl restart autofs.service
cd /media
ls //没有内容,但是可以cd samba
cd samba //自动挂载
cd nfs
df
4. iscsi磁盘共享服务的部署
以上实验共享的是文件系统
18:服务端
19:客户端
18中有5G 的硬盘,进行磁盘分区
fdisk /dev/sdb
udevadm settle
4.1 iscsi设备部署
服务端:
安装插件
dnf install targetcli -y
systemctl enable --now target.service
targetcli //进入新的环境
/> ls
建立共享的设备
/> /backstores/block create westos_storage /dev/sdb1
建立共享名称
/> /iscsi create iqn.2021-02.org.westos:storage
关联设备
/> /iscsi/iqn.2021-02.org.westos:storage/tpg1/luns create /backstores/block/westos_storage
设置密码
/> /iscsi/iqn.2021-02.org.westos:storage/tpg1/acls create iqn.2021-02.org.westos:westoskey
ls
exit //退出
设置火墙策略(端口3260)
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
客户端:
安装客户端软件
dnf search iscsi
vim /etc/iscsi/initiatorname.iscsi
systemctl restart iscsid
iscsiadm -m discovery -t st -p 192.168.0.18
iscsi -m node -T iqn.2021-02.org.westos:storage -p 192.168.0.18 -l
fdisk -l
man iscsiadm
-m:操作模式node结点认证
;
-l 登陆
;
-p设备IP端口
;
-T:设备名称
;
-t:发现设备的类型
;
4.2 iscsi设备删除
客户端
如果挂载了iscsi设备,就要先卸载umount
iscsiadm -m node -T iqn.2021-02.org.westos:storage -p 192.168.0.18 -u //退出登录
iscsiadm -m node -T iqn.2021-02.org.westos:storage -p 192.168.0.18 -o delete //删除认证信息
tree /var/lib/iscsi/
服务端
targetcli
/> ls
/> /iscsi delete iqn.2021-02.org.westos:storage
/> clearconfig confirm=True //永久删除所有的设定
/> ls