本章实验需要两台主机:nodea、nodeb。nodea作为服务端;nodeb作为客户端
1. samba服务简介
作用:
smb = Server Message Block Sum
cifs = Common Internet File System Miscrosoft
windows系统共享文件时用到的协议smb
smb是由miscrosoft+sun
2.samba基本信息
服务启动脚本: smb.service
主配置目录: /etc/samba
主配置文件: /etc/smb.conf
安全上下文: samba_share_t
端口: 139、445
安装包: samba 工具包:samba-common 客户端:samba-client
3.samba的安装与启用
1)samba的安装:
dnf install samba samba-common samba-client -y
2)samba服务启动:
systemctl enable --now smb
3)samba服务启用
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
测试:smbclient -L //172.25.254.170 ##当要输入root密码时直接回车
3.samba用户的建立
1)samba用户必须是被地存在的用户
2)samba用户的建立
smbpasswd -a lee ##添加用户
pdbedit -L ##查看用户列表
pdbedit -x lee ##删除用户
4.samba用户访问加目录
当selinux开启时:
setsebool -P samba_enable_home_dirs on
在linux下: smbclient //172.25.254.170/westos -U westos
5.samba服务共享目录
在服务器端
mkdir /westos #建立共享目录
touch /westosdir/westosfile{1..5}
semanage fcontext -a -t samba_share_t '/westosdir(/.*)?' #修改共享目录的安全上下文
restorecon -RvvF /westosdir/ #刷新
vim /etc/samba/smb.conf #编辑主配置文件添加共享目录
[westosshare] ##共享名称(名称可以随便起,但一定要记住共享目录名称)
comment = westos dir ##共享说明
path = /westosdir ##共享路径
systemctl restart smb #重启服务
测试:smbclient //172.25.254.170/westosshare -U lee
在客户端访问共享目录文件:
smbclient //共享文件服务器的主机ip/共享名称 -U #列出指定ip提供的共享文件
mount -o username=samba用户名,password=密码 //共享文件主机ip/共享名称 /挂载目录samba服务共享目录实验
在nodea中: mkdir /westos cd /etc/samba/ pwd ls mv smb.conf smb.conf.bak ls cp smb.conf.example smb.conf ls getenforce #查看selinux的状态 vim smb.conf #编辑主配置文件。添加共享目录 [westosshare] ##共享名称 comment = westos dir ##共享说明 path = /westos ##共享路径 systemctl restart smb #重启服务 semanage fcontext -a -t samba_share_t '/westos(/.*)?' #修改共享目录的安全上下文 restorecon -RvvF /westos/ #刷新 ls -Zd /westos/ #查看目录的安全上下文 touch /westos/file{1..10} ls -Z /westos/ #查看文件安全上下文
在客户端检测:
在nodeb中检测刚才共享的目录: mount -o username=lee,password=westos //172.25.254.170/westosshare /mnt/ #挂载 df ls /mnt/ umount /mnt/
6.samba的访问控制
hosts allow 172.25.254.30 172.25.254. ##当写到单独共享时之对此共享生效
hosts deny ##当写到【GLOBAL】时对samba整体生效vim /etc/samba/smb.conf 添加:hosts deny = 172.25.254.200 #这个ip的主机不可以访问 systenctl restart smb
在nodeb中测试:
实验做完恢复之前实验数据
7.samba的常用配置参数
writable = yes ##可写服务器端(nodea)编写主配置文件
测试:在客户端
write list = westos ##指定用户可写
write list = +westos ##指定组可写【+也可换成@】
valid users = lee ##指定访问用户
valid users = +lee ##指定访问组
browseable = yes|no ##是否隐藏共享
map to guest = bad user ##写到全局设定中
guest ok = yes ##允许匿名用户访问
admin users = lee ##指定此共享的超级用户身份呢
8.samba的多用户挂载
在客户端如果用普通的挂载方式。没有通过用户验证的人也可以访问samba服务
dnf install cifs-utils -y
vim /root/smbpass
username=westos
password=lee
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.20/westosdir /mnt
#credentials=/root/smbpass 指定认证文件
#sec=ntlmssp 指定认证类型
#multiuser 支持多用户实验:客户端nodeb中:
dnf install cifs-utils -y 下载服务 vim .smbauth #建立一个隐藏文件 username=lee password=westos chmod 600 .smbauth #给隐藏文件可读可写权限 mount -o credentials=/root/.smbauth //172.25.254.170/westosshare /mnt/ #挂载,指定认证文件(不用把密码裸露到外边) ls l /mnt/ #可以列出文件信息 su - westos #切换普通用户身份 ls -l /mnt/ #普通用户westos登陆也可以列出文件信息 exit #退出普通用户 umount /mnt/ #卸载 mount -o credentials=/root/.smbauth,multiuser //172.25.254.170/westosshare /mnt/ #挂载,支持多用户 ls -l /mnt/ #超级用户身份可以列出文件信息 su - westos #切换普通用户身份 ls -l /mnt/ #普通用户westos登陆不能列出文件信息 exit #退出普通用户 umount /mnt/ #卸载 mount -o credentials=/root/.smbauth,multiuser,sec=ntlmssp //172.25.254.170/westosshare /mnt/ ls -l /mnt/ #挂载 指定认证类型 su - westos #进入westos用户身份 ls -l /mnt/ #普通用户不能列出文件 cifscreds --help cifscreds add -u westos 172.25.254.170 #输入密码,输入成功后就可以列出文件信息 ###输入密码不成功的话输入:cifscreds clearall 清除原来信息,之后再次执行cifscreds add -u westos 172.25.254.117命令,输入正确密码,就可以列出文件信息了 ls -l /mnt/ #普通用户westos也可以列出文件信息 exit umoubt /mnt/
自动挂载卸载实验:
nodeb中dnf install autofs-1:5.1.4-40.el8.x86_64 -y #下载服务 systemctl enable --now autofs.service vim /etc/auto.master #编辑文件 /samba /etc/auto.samba #/samba是自动挂载目录的上级目录。/etc/auto.samba是子配置文件 vim /etc/auto.samba #编辑子配置文件 westos -fstype=cifs,credentials=/root/.smbauth,multiuser,sec=ntlmssp ://172.25.254.170/westosshare #westos是最终挂载点。中间是挂载参数。冒号后是挂载资源 systemctl restart autofs.service #重启服务 cd /samba/ cd westos df #可以看到进入/samba/westos目录中会自动挂载 等待资源闲置超时会自动卸载,默认时间为300秒。 vim /etc/autofs.conf #在主配置文件中修改默认卸载时间 timeout = 3 #修改默认自动卸载时间为3秒 systemctl restart autofs.service cd /samba/ #进入目录 cd westos #进入/samba/westos目录 df cd #退出/samba/westos目录到根目录 df #等待3秒可以看到自动卸载
9.NFS
1)nfs基本信息:
nfs-utils ##安装包
nfs-server ##服务脚本
/etc/exports ##共享配置文件
2)nfs的启用
systemctl start nfs-server
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
在客户端检测:
showmount -e 172.25.254.170
Export list for 172.25.254.170:
3)nfs配置
vim /etc/exports ##此文件更改后生效exportfs -rv
共享目录 共享给谁(共享参数)
/westos *(ro) #*代表所有
测试:mount 172.25.254.30:/westos /mnt/实验:
在nodea(服务端)中
dnf install nfs-utils -y systemctl enable --now nfs-server showmount -e 172.25.254.170 #查看nfs服务器共享信息 Export list for 172.25.254.170: firewall-cmd --permanent --add-service=nfs #在火墙中永久开启nfs设定 firewall-cmd --permanent --add-service=rpc-bind #开启rpc设定 firewall-cmd --permanent --add-service=mountd #开启mountd设定 firewall-cmd --reload mkdir /westosnfs #创建共享目录 chmod 777 /westosnfs/ #修改目录权限 vim /etc/exports /westosnfs *(rw) exportfs -rv #刷新
在nodeb(客户端)中检测:
dnf install nfs-utils -y showmount -e 172.25.254.170 =Export list for 172.25.254.170: /westosnfs * mount 172.25.254.170:/westosnfs /mnt/ #把172.25.254.170:/westosnfs 挂载到/mnt/ cd /mnt/ touch file{1..10} ll #可以看出建立文件的所有人和所有组都是nobody
nfs配置参数
anonuid=1000,anongid=1000 ##指定用户身份
sync ##更改生成后同步数据到服务器
async ##时时同步数据到服务器
rw ##读写
ro ##只读
no_root_squash ##root用户挂载不转换身份实验:
在nodea中: id westos #查看westos用户的id vim /etc/exports /westosnfs *(anonuid=1000,anongid=1000,rw) #指定建立文件的用户身份【所有人和所有组都是westos】 exportfs -rv 在nodeb中检测: mount 172.25.254.170:/westosnfs /mnt/ cd /mnt/ rm -rf * touch file1 #file1文件的拥有者和拥有组都是westos
在nodea中: vim /etc/exports /westosnfs *(anonuid=1000,anongid=1000,rw,sync) #在nodeb中写的文件退出保存后才会同步到nodea这台服务器中 exportfs -rv #刷新 在nodeb中: vim test #在编写完文件退出保存后才会同步到nodea中(效果不明显)
在nodea中: vim /etc/exports /westosnfs *(rw,sync,no_root_squash) #root用户挂载不转换身份【挂载后建立的文件所有人和所有组都是root】 exportfs -rv #刷新 在nodeb中: touch file2 #file2文件的所有人和所有组都是root umount /mnt/ #卸载的时候一定要退出mnt目录
nodeb中的自动挂载和卸载
实验
vim /etc/auto.master /nfsshare /etc/auto.nfs vim /etc/auto.nfs westosnfs -rw 172.25.254.170:/westosnfs systemctl restart autofs.service cd /nfsshare #进入挂载目录的上级目录 cd westosnfs #进入到挂载目录 df #查看已经挂载了 cd #退出目录到根目录 df #等待三秒看已经自动卸载了
iscsi
实验:在nodea中:
dnf install targetcli -y fdisk -l #查看磁盘分区,没有第二块磁盘的话重新建立一个 【5g大小就够用】 fdisk /dev/vdb #建立磁盘分区【一个分区就可以,大小为2G,记得wq退出保存】 fdisk -l #查看分区是否建立成功 targetcli > ls >backstores/block create westos:storage1 /dev/vdb1 >/iscsi create iqn.2021-11.org.westos:storage1 >/iscsi/iqn.2021-11.org.westos:storage1/tpg1/luns create /backstores/block/westos:storage1 >/iscsi/iqn.2021-11.org.westos:storage1/tpg1/acls create iqn.2021-11.org.westos:westoskey1 >ls >exit firewall-cmd --permanent --add-port=3260/tcp firewall-cmd --reload firewall-cmd --list-all
在客户端:nodeb中
dnf search iscsi dnf install iscsi-initiator-utils.x86_64 -y iscsiadm -m discovery -t st -p 172.25.254.170 iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -p 172.25.254.170 -l #不成功 vim /etc/iscsi/initiatorname.iscsi #编写文件 InitiatorName=iqn.2021-11.org.westos:westoskey1 #从nodea中把钥匙复制粘贴过来 systemctl restart iscsid fdisk -l iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -p 172.25.254.117 -l #登陆成功 fdisk -l #查看分区同步成功 fdisk /dev/sda #在建立一个分区【直接点回车(大小默认)】 mkfs.xfs /dev/sda1 #格式化 mount /dev/sda1 /mnt/ #挂载 df #查看挂载是否成功
永久挂载:
实验:(客户端中)
blkid #查看(复制最后一行的uuid) vim /etc/fstab UUID=70f0bd48-6bba-4955-b610-711e28cc3278 /mnt xfs defaults,_netdev 0 0 reboot #重启 df #再次查看挂载,挂载成功 fdisk -l #查看磁盘分区情况【有刚才建立的sda1分区】
永久删除【在nodeb中】
***做实验之前一定要看下iscsid、iscsi这两个服务开机前是否启动,没有的话一定要设置开机前启动
systemctl enable --now iscsid systemctl enable --now iscsi systemctl restart iscsi umount /mnt/ vim /etc/fstab #删掉刚才添加的呢一行 tree /var/lib/iscsi/ #查看目录的树结构 iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -p 172.25.254.170 -u #退出登陆 systemctl restart iscsi #再次重启服务 fdisk -l #可以看到之前的分区 iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -p 172.25.254.170 -u #退出登陆 iscsiadm -m node -T iqn.2021-11.org.westos:storage1 -p 172.25.254.170 -o delete #永久删除 【若不执行永久删除命令,iscsi重启后又会重新同步】 fdisk -l #查看不到分区了 tree /var/lib/iscsi/ #树结构里也没有刚才建立的东西了