需要服务端和客户端两台主机。
1.samba服务
smb=Server Message Block Sum cifs=Common Internet File System Microsoft Windows共享文件时用到的协议smb
2.samba基本信息
服务启动脚本:smb.service 主配置目录:/etc/samba 主配置文件: /etc/smb.conf 安全上下文:samba_share_t 端口:139 445 安装包: samba samba-common
3.samba的安装与启用
samba的安装:
dnf install samba -y
dnf install samba-client -y
dnf install samba-common.noarch -y #安装samba服务主体,用到的配置文件和客户端
systemctl enable --now smb.service #开启服务
firewall-cmd --permanent --add-service=samba #允许通过火墙
firewall-cmd --reload
4.添加samba用户
必须是本地真实存在的用户
[root@westos_storage samba]smbpasswd -a westos
New SMB password:
Retype new SMB password:
Added user westos. ##添加samba用户,密码为登陆密码,和westos登录系统密码无关
添加不存在的用户需要先新建用户,否则会添加失败:
useradd -s /sbin/nologin zhang -M
smbpasswd -a zhang
pdbedit -L #查看smb用户
pdbedit -x zhang #删除smb用户
smbclient -L //172.25.254.136 -U zhang #登陆访问samba用户
登陆速度慢的话可以做本地解析:
vim /etc/hosts.conf
///
172.25.254.103 westos_storage.westos.org
///
5.selinux对samba服务的影响
cd /etc/samba/
cp smb.conf.example smb.conf -p #重新生成配置文件
smbclient //172.25.254.103/westos -U westos #因为selinux所以用户不能浏览自己的家目录
setsebool -P samba_enable_home_dirs on #调整selinux中的sam波尔值使用户可以访问家目录
mkdir /westos_share
ls -ld /westos_share #建立共享目录并查看权限
vim /etc/samba/smb.conf
///
315 [westos_share]
316 comment = westos share
317 path = /westos_share
///
system restart smb.service #重启服务
[root@westos_storage samba]# smbclient -L //172.25.254.136 -U westos
Enter MYGROUP\westos's password:
Sharename Type Comment
--------- ---- -------
westos_share Disk westos share ####共享成功
IPC$ IPC IPC Service (Samba Server Version 4.11.2)
westos Disk Home Directories
SMB1 disabled -- no workgroup available
touch /westos_share/file{1..3} #最后访问到这些文件代表成功
用户自己建立的目录要通过smb共享时安全上下文必须指定为:samba_share_t
semanage fcontext -a -t samba_share_t '/westos_share(/.*)?'
restorecon -RvvF /westos_share/
测试:
[root@westos_storage samba]# smbclient //172.25.254.136/westos_share -U westos
Enter MYGROUP\westos's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue Aug 10 12:01:47 2021
.. D 0 Tue Aug 10 11:44:17 2021
file1 N 0 Tue Aug 10 12:01:47 2021
file2 N 0 Tue Aug 10 12:01:47 2021
file3 N 0 Tue Aug 10 12:01:47 2021 #表示成功分享
查看selinux对samba的限制
[root@westos_storage samba]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off #selinux将不再对samba服务访问文件时的安全上下文进行限制
samba_export_all_rw --> off #selinux将不再限制samba对文件写的安全上下文进行限制
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
6.samba的访问控制
vim /etc/samba/smb.conf
///
91 hosts allow 172.25.254.236 #当写到单独共享时只对此共享生效,此时只有172.25.254.236可以访问
或 hosts deny #当写到global时对整个samba整体生效
///
###此位置设定的访问控制为全局访问控制,影响本台smb服务的所有共享
7.samba的常用配置参数
writable = yes #可写 write list = westos #指定用户可写 write list = +westos #指定组的成员可写 write list = @westos valid users = zhang #指定访问用户 valid users = +zhang|@zahng #指定访问组 browseable = yes|no #是否隐藏共享
vim /etc/samba/smb.conf
///
315 [westos_share]
316 comment = westos share
317 path = /westos_share
318 hosts allow =172.25.254.236 #表示westos_share这个目录只能被236主机访问,此访问设定只有 westos_share
319 browseable = no #隐藏共享目录
320 valid users = westos #此共享只能通过samba用户westos登陆
///
匿名挂载:
vim /etc/samba/smb.conf
///
118 map to guest = bad user #把没有身份的用户映射为guest账号
318 browseable = yes
319 guest ok = yes #此共享允许guest用户访问
///
systemctl restart smb.service
客户端: smbclient //172.25.254.136/westos_share #建立访问 mount //172.25.254.136/westos_share /mnt/ -o username=guest #匿名挂载 ###### 8.samba的自动挂载 客户端:dnf install autofs -y
vim /etc/auto.master
///
8 /westos /etc/auto.share
///
vim /etc/auto.share
///
samba -fstype=cifs,username=westos,password=westos ://172.25.254.136/westos_share
#挂载点的相对路径 #挂载参数 #挂载服务器ip及资源共享
///
vim /etc/autofs.conf
///
15 timeout = 5 #设置挂载资源在5秒以上无任何程序使用则自动卸载 默认是300秒
///
[root@westoslinux ~]# cd /westos/samba
##退出目录5秒钟后会自动卸载
9.samba的多用户挂载
在客户端如果用普通挂载方式,没有通过用户认证的人可以访问samba服务
dnf install cifs-utils -y
mount //172.25.254.136/westos_share /mnt/ -o username=zhang,password=westos
#如果用户挂载smb资源时需要输入账号和密码,如果直接书写密码可以通过历史被其他人看到,所以我们写到文件中并设定安全权限
vim /root/sabpass ##认证文件
///
username=westos
password=westos
///
chmod 600 /root/smbpass
mount -o credentials=/root/smbpass,multiuser,sec=ntlmssp //172.25.254.136/westos_share /mnt/
credentials=/root/smbpass #指定认证文件
multiuser #支持多用户,当挂载时添加此参数,没有通过认证的用户不可以使用smb上的资源
sec=ntlmssp #指定认证类型,即用户使用到的认证方式
chmod 660 /root/smbpass
[root@westoslinux ~]# su - westos
Last login: Tue Aug 10 16:20:27 CST 2021 on pts/1
[westos@westoslinux ~]$ ls /mnt
ls: cannot access '/mnt': Permission denied
[westos@westoslinux ~]$ cifscreds add -u westos 172.25.254.136
Password:
[westos@westoslinux ~]$ ls /mnt
ls: cannot access '/mnt': Permission denied ###当密码输入错误时,访问仍然被拒绝,此时需要清空密码认证
[westos@westoslinux ~]$ cifscreds clearall
[westos@westoslinux ~]$ cifscreds add -u westos 172.25.254.136 #重新访问
Password:
[westos@westoslinux ~]$ ls /mnt
file1 file2 file3
10.nfs+autofs
在服务机中:
dnf install nfs-utils.x86_64 -y
systemctl enable --now nfs-server.service
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind #安装与启用
firewall-cmd --reload
nfs配置:
vim /etc/exports
///
/westosdir *(ro,sync)
///
exportfs -rv #使共享策略生效
测试: 客户端:
[root@westoslinux ~]# showmount -e 172.25.254.136
Export list for 172.25.254.136:
/westosdir *
服务端:
vim /etc/exports
///
/westosdir *(ro,sync) 172.25.254.236(rw,sync,anonuid=1000,anongid=1000)
///
表示客户端在挂载时使用的用户为id1000,而不是默认的nobody 测试:
客户端:
[root@westoslinux ~]touch /mnt/file4
服务端:
[root@westos_storage ~]ls -l /westosdir/
-rw-r--r--. 1 westos westos 0 Aug 11 10:15 file4
vim /etc/exports
///
/westosdir *(ro,sync) 172.25.254.236(rw,sync,no_root_squash)
///
#172.25.254.236(rw,sync)表示除236以外的主机只读共享,对236主机读写共享 no_root_squash表示当客户端使用超级用户进行nfs资源挂载后沿用自己的root用户身份到服务器中
客户端:[root@westoslinux ~]# touch /mnt/file5
服务端:
[root@westos_storage ~]# ls -l /westosdir/
-rw-r--r--. 1 root root 0 Aug 11 10:17 file5
客户端自动挂载:
dnf install autofs -y #在客户端安装自动挂载服务
vim /etc/auto.master #编辑主挂载策略文件
///
9 /westos /etc/auto.nfs
///
vim /etc/auto.nfs #编辑子策略文件,不存在,需自行建立
///
nfs -rw 172.25.254.136:/westosdir
///
systemctl restart autofs.service
cd /westos/nfs
df
会显示挂载成功:
11.iscsi
设备共享 服务端: 给服务端添加一个硬盘:virt-manager–>Add Hardware–>storage–>设定大小为5G–>finish 在shell中 fdisk -l 查看:
dnf install targetcli -y
systemctl enable --now target
targetcli
/backstores/block create westos:storage1 /dev/vdb #设定/dev/vdb在此软件中的别名
/iscsi create iqn.2021-08.org.westos.starage1 #建立对外的共享名称,iqn的命名方式,iscsi的限定名称
iscsi/iqn.2021-08.org.westos.starage1/tpg1/luns create /backstores/block/westos:storage1 #把共享名称和内部指定设备关联
iscsi/iqn.2021-08.org.westos.starage1/tpg1/acls create iqn.2021-08.org.westos:westoskey #为共享设备设定访问key
exit
在客户端:
dnf install iscsi-initiator-utils.x86_64 -y
systemctl enable --now iscsi
iscsiadm -m discovery -t st -p 172.25.254.136 #执行此命令在服务端火器中需要开启3260 端口
vim /etc/iscsi/initiatorname.iscsi #在此文件中指定共享key
///
InitiatorName=iqn.2021-08.org.westos:westoskey #此处为服务其中设定的共享key
///
iscsiadm -m node -T iqn.2021-08.org.westos.starage1 -p 172.25.254.136 -l #挂载共享设备
此时子系统中会出现一个新的硬盘,大小等于服务其中共享设备的大小,即共享成功。 磁盘永久挂载: 客户端: 网络设备因为网络通信的缘故可能发生名称变化,所以推荐挂载时使用设备的id进行设备指定 blkid 查看id 当挂载网络设备时/etc/fstab文件的挂载策略是优选与网络启动和iscsi服务的,但是网络设备必须在网络和iscsi服务启动后才能识别,所以系统无法识别系统导致启动失败 所以在指定设备在挂载时先启动网络和iscsi服务后生效
vim /etc/fstab
///
UUID=d0c3d997-f8b8-4ec9-af2e-9b8e0b0195c9 /mnt xfs defaults _netdev 0 0
///
重启之后df,自动挂载成功
驱除iscsi : 客户端:
vim /etc/fstab #删除设备自动挂载信息
umount /mnt
tree /var/lib/iscsi/ #在客户端读取到的服务器的所有数据存放目录
iscsiadm -m node -T iqn.2021-08.org.westos.starage1 -p 172.25.254.136 -u #退出登录设备就消失了,但是数据还在,重启iscsi就会自动出现
iscsiadm -m node -T iqn.2021-08.org.westos.starage1 -p 172.25.254.136 -o delete #删除客户主机中此网络设备的数据
systemctl restart iscsid.service
此时共享设备已不存在
服务器中删除:
targetcli
ls
clearconfig confirm=True
清除成功
|