目录
一、samba服务简介
作用:不同操作系统及平台之间文件共享的协议。
smb = Server Message Block IBM
cifs = Common Internet File System Miscrosoft
windows系统共享文件时用到的协议smb
二、samba的安装与启用
#在服务器端
dnf install samba samba-common samba-client -y #安装samba服务、配置文件、访问客户端
#在客户端
dnf install samba-client -y #安装samba访问客户端
systemctl enable --now smb #samba服务启动
firewall-cmd --permanent --add-service=samba #允许samba服务通过火墙
服务器端安装完成后,配置好火墙,并从<etc/samba/smb.conf.example>复制配置文件模板为<etc/samba/smb.conf>
三、samba用户的建立
注意:samba用户必须是在已存在用户的基础上建立的,所以建立samba用户前必须先建立新用户,然后赋予该用户samba用户的身份。
useradd -s /sbin/nologin lee #建立非交互式新用户lee
smbpasswd -a lee #为用户lee添加samba用户身份
pdbedit -L #查看用户列表
pdbedit -x lee #删除用户
四、samba用户访问家目录
第一步:更改samba所共享目录的安全上下文及权限
第二步: 客户机测试
五、samba服务共享目录
1、指定共享目录
在<vim /etc/samba/smb.conf>配置文件中可以指定共享目录的名称。这里共享目录的名称为“westos_smb”,实际上对应的共享目录为“/samba_share”。
2、客户端访问共享目录的方式
方法1:直接访问(普通用户和匿名用户)
ambclient -L //172.25.254.150 #默认访问root用户
ambclient -L //172.25.254.150 -U lee #指定访问用户lee
方法2:直接访问(交互式,普通用户和匿名用户)
方法3:挂载访问
六、samba的IP访问控制
1、用户IP允许<hosts allow>
在配置文件</etc/samba/smb.conf>中第90行左右设定允许访问samba的客户端IP,意思是除了名单中的IP之外,其他的IP都会被禁止访问。
注意:实测<hosts allow>和<hosts deny>位置会影响结果,所以建议就放在这几行附近。
2、用户IP禁止<hosts deny>
在配置文件</etc/samba/smb.conf>中第90行左右设定禁止访问samba的客户端IP,意思是除了名单中的IP之外,其他的IP都会被与允许访问。
注意:将以上两个参数放在共享目录外,则会对全局生效。如果将以上两个参数放在共享目录内,则只会对设定的共享目录生效。
七、samba的常用配置参数
writable = yes | 可写 |
write list = westos | 指定用户可写 |
write list = +westos write list = @westos | 指定组可写 |
valid users = lee | 指定访问用户 |
valid users = +lee|@lee | 指定访问组 |
browseable = yes|no | 是否隐藏共享,yes不隐藏,no隐藏 |
map to guest = bad user guest ok = yes | (写到全局设定中) 允许匿名用户访问 |
admin users = lee | 指定此共享的超级用户身份 |
(1)<writable = yes>:可写。
在服务器端的samba配置文件没有加这个参数时,默认无法写操作,加上以后可以创建文件了。
(2)<write list = lee>:指定用户可写
服务器端的samba配置文件中只允许用户lee写,所以在客户端用用户westos创建文件显示创建失败。
(3)<write list = +lee>:指定用户及组内成员可写
服务器端samba的配置文件修改为组内成员可写后,用户westos属于用户组lee,所以在客户端测试,可以看到通过用户westos和用户lee登录都可以创建文件。
(4)<valid users = lee>:指定访问用户
(5)<valid users = +lee>:指定访问组
更改为用户组lee的成员可访问后,将用户westos加入用户组lee,再次测试,就可以访问samba目录了。
(6)<browseable = yes|no>:是否隐藏共享,yes不隐藏(默认),no隐藏
隐藏后再次查看时将无法查看共享目录,只能看到用户的家目录。
(7)<map to guest = bad user>+<guest ok = yes>:允许匿名用户访问
在没有开启匿名用户访问时,用匿名用户可以登录成功,但是没有访问权限;开启匿名用户访问时,用户登陆成功后,也可以查看共享目录下的内容。
(8)<admin users = lee>:指定此共享的超级用户身份。
这里在服务器端指定用户lee可以使用超级用户身份,所以在客户端用lee用户创建的文集的所有人为root用户,所有组为lee用户。(在客户端查看所有人和所有组将会显示所有文件的所有人和所有组都为root用户,如下图所示。所以不要在客户端查看,应该在服务器端查看)
八、samba的多用户挂载
假设有这样的需求:客户端的某个用户已经把samba挂载到指定目录下,但是客户端的其他用户也想访问;所以为了让客户端的多个用户都可以访问samba共享目录,但是每个人都必须持有合法的samba认证帐号。这就是samba多用户挂载的由来。
先测试:可以看到其他用户仅能看,不能增删,这是因为客户端的westos用户没有经过认证。
为了解决上述需求,可以在客户端对samba进行多用户挂载操作
第一步:安装软件
dnf install cifs-utils -y #安装samba多用户挂载的软件
第二步:编写密码认证文件
第三步:更改文件权限并挂载,可以看到命令中不用明文密码就可以挂载了。
第四步:切换到普通用户,没有挂载也能访问,很不安全。
第五步:在root用户的挂载命令下加上这个参数,就可以避免上述的问题。
第六步:挂载时加上允许追加认证的参数
注意:其他用户访问samba都是在root用户访问samba的基础上进行的。
加上“sec=ntlmssp”参数是允许其他不能访问samba的用户可以在root用户挂载后,在挂载目录里追加对samba的认证,从而达到可访问samba的目的。
第七步:追加用户认证
客户端在root用户下已经使用用户lee挂载上samba,切换到用户westos中,由于用户westos本身没有samba的认证,所以使用<cifscreads>追加认证,这里用到的samba认证用户为westos(注意:这个westos是samba服务器中认证过的用户,而非客户机中的westos用户),
第八步:在服务器中看到,这两种情况下创建的文件分别属于samba服务器端的用户lee和用户westos
第九步:清除追加认证时可以按以下命令:
九、samba+autofs
autofs:在客户端实现自动挂载和卸载的软件
实验环境:在客户机中安装<autofs>软件。
dnf install autofs.x86_64 -y #安装autofs服务
第一步:创建挂载目录(这里由于目录已存在,就不重新创建了)
第二步:编辑<autofs>服务的主配置文件,在其中添加“挂载点”和“子策略文件”,如下图所示:
第三步:编辑子策略文件
第四步:重启autofs服务
systemctl restart autofs.service #重启autofs服务
第五步:测试
注意:<autofs>服务在设备不用时默认的等待时间是300秒,如果觉得等待时间过长的话,可以更改</etc/autofs.conf>配置文件中的等待时间。更改完成后重启服务,那么设备会在停止使用的3秒后自动取消挂载。(实际在企业中时间不可能这么短,一般都是几分中无操作才会退出)
十、nfs+autofs
nfs是另一种共享本地目录方式,相对samba来说,使用更方便一些。
1、nfs参数设置
sync | 更改结束后同步数据到服务器 |
async | 实时同步数据到服务器 |
rw | 读写 |
ro | 只读 |
anonuid=1000,anongid=1000 | 指定用户身份 |
no_root_squash | root用户挂载不转换身份 |
在服务器的</etc/exports>文件中令151号客户机新建文件所有人ID为1000,所有组为1000,在客户端测试,新建文件<file2>,在服务器中看到文件file2的所有人所有组是westos用户。
在服务器的</etc/exports>文件中令新建的文件用户为root用户,在客户端测试,新建文件<file3>,在服务器中看到文件file3的所有人所有组都是root用户
2、nfs实现目录共享
第一步:在服务器上安装并启用nfs
dnf instal nfs-utils #安装nfs软件
systemctl enable --now nfs-server #启用nfs
#允许火墙通过nfs的服务
firewall-cmd --permanent --add-service==nfs
firewall-cmd --permanent --add-service==mountd
firewall-cmd --permanent --add-service==rpc-bind
第二步:服务器上配置
在服务器的</etc/exports>配置文件中做如下配置,表示的意思是:</mnt>目录<172.25.254.>网段的所有用户只读,<172.25.254.151>用户可读可写。<*(ro)>表示所有用户可读等等。关于此配置文件的内容及参数会在后边详细介绍。
重新载入配置文件。
第三步:客户端测试
先用<showmount -e 172.25.254.150>命令寻找在150号服务器上的共享目录
再用客户端挂载后可以看到nfs共享的文件了。而且客户端也可以直接在服务器的共享目录中创建文件。
第四步:为了实现自动挂载,可以使用autofs配置
配置完成后重启autofs服务,会自动在根目录下新建一个目录</nfs>。
第五步:autofs+nfs测试
进入对应的目录下</nfs/mnt>,可以看到会自动执行挂载命令。
十一、iscsi
1、什么是iscsi?
iscsi是一种直接将服务器硬盘共享出去的软件
2、实验环境
服务器:新加一块硬盘,安装软件
客户端:安装服务
3、服务器配置
第一步:安装<targetcli>软件
dnf install targetcli -y #安装targetcli软件
第二步:新加硬盘,并分好区
第三步:直接进入targetcli
第四步: 重启服务并更改火墙配置
允许客户机通过3260端口访问到硬盘。
4、客户端配置
第一步:安装软件并启动服务
systemctl enable --now iscsid.service #启动iscsid服务
第二步:填写客户端的认证密钥
认证密钥在服务器创建这个共享设备的时候指定的。如果客户端密钥输入错误,将导致认证失败。
第三步: 重启服务
第四步:寻找150号机共享的网络硬盘
iscsiadm -m discovery -t st -p 172.25.254.150 #寻找网络贡献硬盘
第五步:
iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -P 172.25.254.150 -l
#添加网络共享硬盘
第六步:查看硬盘
第七步:给硬盘分区并挂载
注意:如果要开机自动挂载的话,需要编写<etc/fstab>配置文件。
如下图所示:推荐使用硬件标识符,因为名称可能会改变,但硬件标识符是唯一的。设备类型参数应加上“_netdev”,告诉计算机这是一个网络设备,防止网络设备不存在时系统启动失败。
5、网络设备的退出登录与删除
退出登录:
但是重启iscsi以后,网络硬盘又出现了。
这是因为使用命令<tree>可以查看到,登出后,认证文件中仍有该设备的记录。
永久删除:
注意:必须先退卸载且退出登录,后永久删除,直接删除将会导致删除失败。
iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -P 172.25.254.150 -u
#临时卸载网络硬盘
iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -P 172.25.254.150 -o delete
#永久删除网络硬盘
永久删除后,重启服务网络硬盘不会再出现了。
十二、本章总结
~~~~~~~~~~~~~未完待续~~~~~~~~~~~~