Ⅲ第六章学习博客(网络文件系统之samba,nfs,iscsi)

Linux修炼之旅第六章!

本章介绍了网络文件系统,对主流的软件samba,nfs和isscsi都有比较详细的使用说明和操作步骤。
快来看看吧



实验开始前先准备两台实验主机
这里我们开启两台虚拟机
node1(126)
node2(226)

一、samba服务简介

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

二、samba的安装与启用

samba的安装
dnf install samba samba-common samba-client -y
samba服务启用

systemctl enable --now smb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

请添加图片描述
测试
smbclient-L //172.25.254.100
当要输入密码时直接回车
请添加图片描述

三、samba用户的建立

samba用户必须是被地存在的用户
添加用户
smbpasswd -a westos
请添加图片描述
不存在的用户会创建失败
请添加图片描述
必须先去建立用户
请添加图片描述
然后就可以正常创建了
密码单独设置,与系统启动时的密码没有关系
请添加图片描述
查看用户列表
pdbedit -L
删除用户
pdbedit -x shy
请添加图片描述测试
smbclient -L //172.25.254.100 -U westos
请添加图片描述

以用户身份访问
smbclient //172.25.254.100 -U westos
请添加图片描述

四、samba服务中对于selinux属性的调试

在访问用户家目录时会出现无法访问的情况
这是因为selinux的影响
遇到的问题效果
请添加图片描述

如何解决这个问题呢?

vim /etc/samba/smb.conf
文件中有一行
setsebool -P samba_enable_home_dirs on

请添加图片描述

将这一行复制出来运行
消除限制
就可以正常使用了

共享目录

在共享文件时也会遇到类似的问题
先新建一个分享目录
mkdir /westos_share
并查看权限信息
请添加图片描述
编辑文件
vim /etc/samba/smb.conf
在最后输入

315         [westos_share]
316         comment = westos share
317         path = /westos_share

请添加图片描述

重启服务
systemctl restart smb.service
此时我们去访问共享目录
smbclient -L //172.25.254.100 -U westos
就可以看到共享目录了
请添加图片描述
但是登陆进去以后并不能访问
请添加图片描述
可以看到报错与selinux有关系
怎么解决呢?
用户自己建立的目录如果需要通过smb共享,那么安全上下文必须指定
semanage fcontext -a -t samba_share_t '/westos_share(/.*)?'
restorecon -RvvF /westos_share/
请添加图片描述
然后就可以正常访问了
请添加图片描述

共享系统目录

共享系统目录如遇到问题并且报错时
需要在安全上下文中设定开启读/读写权限
请添加图片描述
开启读权限
setsebool -P samba_export_all_ro on
开启写权限
setsebool -P samba_export_all_rw on

五、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 #指定此共享的超级用户身份呢

白名单

编辑主配置文件
vim /etc/samba/smb.conf
插入
hosts allow = 172.25.254.200
允许200这台主机访问
重启服务
systemctl restart smb.service
打开200主机访问测试
请添加图片描述
可以访问
再试试别的主机
请添加图片描述
可以看到访问被拒绝

黑名单

与白名单类似
在主配置文件中
vim /etc/samba/smb.conf
输入
hosts deny = 172.25.254.200
请添加图片描述

重启服务
systemctl restart smb.service
再去200主机中测试
请添加图片描述
发现不可以访问了

但是在另一台主机上
请添加图片描述
本来不可以,现在可以了。

单独配置

前面的黑白名单是针对全局的,单独目录的设置如何操作?
首先将前面的实验记录注释掉
然后在主配置文件中最下面增添内容
vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         hosts allow = 172.25.254.200

重启服务后,只对westosshare目录生效

隐藏资源

与上一部分步骤类似
vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         browseable = no

重启服务
systemctl restart smb.service
再去200主机中测试请添加图片描述
可以看到被隐藏了
如果把配置文件中的no改为yes,就是显示
请添加图片描述
请添加图片描述

用户的设定

限定谁来登陆
实验中
此共享只能通过samba用户westos用户登陆访问
vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         browseable = yes
320         valid users = westos

请添加图片描述
重启服务
systemctl restart smb.service
再去不同主机中用westos用户登陆测试
请添加图片描述
请添加图片描述
都可以登陆
但是切换到shy用户
请添加图片描述
就不可以登陆了

用户组成员访问

如果在主配置文件中配置如下
vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         browseable = yes
320         valid users = @westos

请添加图片描述

就代表时组westos中的成员可以访问
重启服务后再进行测试
systemctl restart smb.service
将shy用户加入westos组
请添加图片描述
刚才不能使用的shy用户就可以登陆了
请添加图片描述注意:虽然用户与系统中的用户不是一个概念
但是用户组是一个概念

使分享目录可写

在文件层面让所有用户都对westosshare目录可写
步骤:
注释掉上一步的内容
在客户端中挂载分享目录到mnt中
mount //172.25.254.100/westos_share /mnt/ -o username=shy,password=shy
请添加图片描述

尝试测试写文件
可以发现即使是满权限也会被拒绝

这时该怎么办呢?

首先卸载掉挂载
更改配置文件,使分享文件可写
vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         browseable = yes
320 #       valid users = @westos
321         writeable = yes

重启服务
systemctl restart smb.service
再去客户主机中测试
mount //172.25.254.100/westos_share /mnt/ -o username=shy,password=shy
touch /mnt/file
可以看到这次成功了
请添加图片描述在服务主机中也可以看到创建的文件
请添加图片描述

共享目录的写权限

与之前用户的设定中类似
编辑主配置文件

vim /etc/samba/smb.conf

316         [westos_share]
317         comment = westos share
318         path = /westos_share
319         browseable = yes
320 #       valid users = @westos
321         writeable = yes
322         write list = shy

请添加图片描述让文件只对shy用户可写
重启服务
systemctl restart smb.service
在客户端主机测试
分别用root和westos用户身份挂载
mount //172.25.254.100/westos_share /mnt/ -o username=westos,password=westos
mount //172.25.254.100/westos_share /mnt/ -o username=shy,password=shy
分别测试在mnt目录中创建文件
请添加图片描述
可以看到westos用户挂载时不可写,但是shy用户可写。
用户组的配置与用户组成员访问完全相同,在此就不多做赘述。

匿名用户

默认情况下匿名用户不能使用samba共享资源
如何操作让匿名用户可以访问挂载呢?
首先
这时把没有用户身份的用户都映射为guest账号

117         security = user
118         passdb backend = tdbsam
119         map to guest = bad user

请添加图片描述

在最后加上

323         guest ok = yes

请添加图片描述
写完以后重启服务
systemctl restart smb.service
在客户主机中测试
匿名用户访问
smbclient //172.25.254.100/westos_share
请添加图片描述
匿名用户挂载
mount //172.25.254.100/westos_share /mnt/ -o username=guest
请添加图片描述

六、samba服务与客户端的资源挂载优化

本实验在客户端去做
如果手动挂载samba共享到客户端的某个目录,当没有向服务器写入数据或浏览数据时这个挂载依然存在,在闲置时依然使用服务器资源,这就是资源浪费,我们现在应该设定客户端在使用时自动挂载,不用时自动卸载,这样才能最大化使用服务器。
步骤:
首先安装autofs,实现自动挂载和卸载
dnf install autofs -y
然后编辑主配置文件
vim /etc/auto.master
加上
/shy /etc/auto.share
请添加图片描述

后面的auto.share是自己命名的,修改这个文件
vim /etc/auto.share
写入

samba           -fstype=cifs,username=shy,password=shy  ://172.25.254.100/westos_share

请添加图片描述

就会自动生成一个目录shy
虽然看不见shy中的任何文件目录
但是可以直接进入shy中的samba
cd /etc/samba
这时就自动挂载上了
请添加图片描述
此时自动推出会自动卸载,但是默认时间为300s比较长
请添加图片描述为了方便看到测试效果
修改时间为3s
vim /etc/autofs.conf

请添加图片描述
测试效果
请添加图片描述

七、samba的多用户挂载

在客户端如果用普通的挂载方式
没有用过用户验证的人也可以访问samba服务
如何解决这个问题呢?
首先安装cifs-utils
dnf install cifs-utils -y
然后编辑文件
vim /root/smbpass
username=westos
password=westos
请添加图片描述

只有当有正确用户密码的用户才可以正常访问
然后用如下命令进行挂载
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.100/westos_share /mnt
其中
credentials=/root/smbpass
指定认证文件
sec=ntlmssp
指定认证类型
multiuser
支持多用户
测试效果
请添加图片描述
只有root用户可以访问已经挂载的mnt目录
如果切换到别的用户
可以输入如下内容解决

cifscreds add -u westos 172.25.254.100

输入这条指令需要输入正确的密码
测试效果
请添加图片描述
可以看到输入了正确用户密码的westos用户也可以正常访问mnt目录了。

八、NFS

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样,也就是说客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。
nfs-utils #安装包
nfs-server #服务脚本
/etc/exports #共享配置文件

nfs的启用

[root@westos_storage ~] dnf install nfs-utils.x86_64
[root@westos_storage ~] systemctl start nfs-server
[root@westos_storage ~] firewall-cmd --permanent --add-service=rpc-bind
success
[root@westos_storage ~] firewall-cmd --permanent --add-service=mountd
success
[root@westos_storage ~] firewall-cmd --permanent --add-service=nfs
success
[root@westos_storage ~] firewall-cmd --reload
success

测试
在客户端主机
showmount -e 172.25.254.100
请添加图片描述识别成功
但由于还未放任何东西,所以无法列出。

nfs配置参数

anonuid=1000,anongid=1000 #指定用户身份
sync #更改生成后同步数据到服务器
async #时时同步数据到服务器
rw #读写
ro #只读
no_root_squash #root用户挂载不转换身份

nfs共享目录及客户端

nfs的共享
创建一个共享目录
mkdir /westosdir
使实验效果更直观
进行赋权操作
chmod 777 /westosdir/
编辑共享策略文件
vim /etc/exports
/westosdir *(ro,sync)
请添加图片描述
重启服务
exportfs -rv
创建一个测试文件
touch /westosdir/file
然后去客户端主机开始测试

showmount -e 172.25.254.100 #查看能否列出
mount 172.25.254.100:/westosdir /mnt/ #挂载共享目录

可以看到共享目录成功列出
挂载后文件也能成功读取
请添加图片描述

管理共享目录

让客户端可写
共享资源使用方式
vim /etc/exports

/westosdir              *(ro,sync) 172.25.254.200(rw,sync)

请添加图片描述
然后重启服务
exportfs -rv
打开客户端测试

mount 172.25.254.100:/westosdir /mnt/
touch /mnt/westosfile

再回到服务主机查看

ls /westosdir/ -l

可以看到有文件
但是用户和组都是nobody
请添加图片描述
这是因为
当客户端挂载共享到本地目录后,使用到的用户身份时服务器上的nobody
如何改?
指定客户端在挂载时,使用的用户为1000,不是默认的nobody
vim /etc/exports

westosdir              *(ro,sync) 172.25.254.200(rw,sync,anonuid=1000,anongid=1000)                                                                              

然后再重新刷新
exportfs -rv
再去客户端主机测试

umount /mnt
mount 172.25.254.100:/westosdir /mnt/
touch /mnt/westosfile1

此时再在服务端主机查看权限,就可以发现可以显示到了
请添加图片描述
在客户端使用超级用户进行nfs资源挂载后沿用超级身份到服务
就将上个实验中
文件中的anonuid=1000,anongid=1000
更改为no_root_squash
其余操作步骤都一样

nfs和autonfs的自动挂载优化

在客户端安装自动挂载服务
dnf install autofs -y
编辑主挂载策略文件
vim /etc/auto.master
加上
/westos /etc/auto.nfs
编辑子策略文件,默认此文件不存在,需要自行建立
[root@westoslinux ~]# vim /etc/auto.nfs
输入
nfs -rw 172.25.254.100:/westosdir
然后就可以测试效果了
cd /westos/nfs
自动挂载
推出自动卸载
请添加图片描述

九、iscsi

实验开始之前先在服务主机中添加一块硬盘
分出来2G
请添加图片描述

iscsi的启用及客户端激活设备过程

首先安装服务
dnf install targetcli -y
开启服务
systemctl enable --now target
编写共享策略
targetcli
蓝色为目录
紫色为目录中的命令
请添加图片描述依次输入

/backstores/block create westos:storage1 /dev/vdb1
/iscsi create iqn.2021-12.org.westos:storage1
iscsi/iqn.2021-12.org.westos:storage1/tpg1/luns create /backstores/block/westos:storage1 
iscsi/iqn.2021-12.org.westos:storage1/tpg1/acls create iqn.2021-12.org.westos:westoskey
exit

调整火墙

firewall-cmd --permanent  --add-port=3260/tcp
firewall-cmd --reload

在客户端主机中
安装服务
dnf install iscsi-initiator-utils-iscsiuio.x86_64 -y
然后编辑文件
vim /etc/iscsi/initiatorname.iscsi
写入
InitiatorName=iqn.2021-12.org.westos:westoskey
重启服务
InitiatorName=iqn.2021-12.org.westos:westoskey
再输入

iscsiadm  -m node -T iqn.2021-12.org.westos:storage1 -p 172.25.254.100 -l

就可以看到分配到的硬盘了
请添加图片描述

客户端的永久挂载

先对上个实验得到的硬盘进行分区和格式化

mkfs.xfs /dev/sda1

请添加图片描述
然后将硬盘挂载到mnt上
用命令查看uuid,用于永久挂载防止出错

mount /dev/sda1 /mnt
blkid

请添加图片描述
编辑文件
vim /etc/fstab
写入

UUID=ccde34e8-5120-4a11-8753-fc485f7c5834 /mnt                    xfs     defaults,_netdev  0 0

请添加图片描述
这样就完成了永久挂载

iscsi的删除

首先在客户端中
1.删除 /etc/fstab 中的内容
2.tree /var/lib/iscsi/
查看信息
请添加图片描述
对照中间的浅蓝色信息
先登出,再删除

iscsiadm -m node -T iqn.2021-12.org.westos:storage1 -p 172.25.254.100 -u
iscsiadm -m node -T iqn.2021-12.org.westos:storage1 -p 172.25.254.100 -o delete

再查看就没有了
tree /var/lib/iscsi/
请添加图片描述在服务端
targetcli
进入界面后输入ls查看
请添加图片描述

然后再输入清除指令
clearconfig confirm=True
就全部删除了
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值