一、samba服务简介
1、smb协议
smb(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
2、ftp 服务 与 samba 服务对比
(1)ftp 的优缺点:
优点:文件传输、应用层协议、可跨平台
缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件
(2)Samba 的特性:
使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件
作用:
windows系统共享文件时用到的协议smb
smb是由miscrosoft+sun
Linux 系统用到的是cifs
CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文本传输协议和超文本传输协议的一个实现
二、samba基本信息
samba 的基本信息
服务启动脚本 | smb.service |
主配置目录 | /etc/samba |
主配置文件 | /etc/samba/samba.conf |
安全上下文 | samba_share_t |
端口 | 139 445 |
安装包 | samba samba-common |
由于/etc/samba/ samba.conf 中内容较少,配置文件不是很完整
所以cp smb.conf.example smb.conf 使配置文件完整
三、samba的安装与启用
samba的安装:
dnf install samba samba-common samba-client -y
samba服务启动:
systemctl enable --now smb
samba服务启用
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
测试:
smbclient -L //172.25.254.101 ##当要输入root密码时请直接回车
三、samba用户的建立
1.samba用户必须是本地存在的用户
2.samba用户的建立
smbpasswd -a westos ##添加用户
pdbedit -L ##查看用户列表
pdbedit -x westos ##删除用户
四、samba用户访问加目录
当selinux开启时:
setsebool -P samba_enable_home_dirs on
(1)windows下:
\\172.25.254.20 ##访问
net use ##查看访问记录
net use * /del ##删除访问记录
(2)在linux下:
smbclient //172.25.254.101/westos -U westos
验证:
五、samba服务共享目录
mkdir /westosdir
touch /westosdir/westosfile{1..5}
semanage fcontext -a -t samba_share_t '/westosdir(/.*)?'
restorecon -RvvF /westosdir/
vim /etc/samba/smb.conf
systemctl restart smb
[westos_share] ##共享名称
comment = westos dir ##共享说明
path = /westosdir ##共享路径
没有设置安全上下文的情况:
设置安全上下文之后情况:
如果共享目录为系统目录:例如/mnt
[westos_share]
comment = westos dir
path = /mnt
因为系统文件不能随便给权限或者设置其安全上下文,所以需要开启下面这个服务samba_export_all_ro
getsebool -a | grep samba
setsebool -P samba_export_all_ro on
验证:
六、samba的访问控制
hosts allow 172.25.254.1 172.25.254. ##当写到单独共享时之对此共享生效
hosts deny ##当写到【GLOBAL】时对samba整体生效
测试:
七、samba的常用配置参数
writable = yes | 可写 |
write list = lee | 指定用户可写 |
write list = +westos | 指定组可写 |
write list = @westos | 指定组可写 |
valid users = lee | 指定访问用户 |
valid users = +lee|@lee | 指定访问组 |
browseable = yes|no | 是否隐藏共享 |
测试:(此时的测试可以将这个共享目录挂载之后进行写入)
vim /etc/samba/smb.conf
writable = yes ##可写
systemctl restart smb.server
chmod 777 /westosdir 为了方便实验,所以给这个目录777权限
mount -o username=westos,password=westos //172.25.254.101/westos_share /mnt
vim /etc/samba/smb.conf
write list = lee 指定lee 可写
systemctl restart smb.service
usermod -G westos lee
vim /etc/samba/smb.conf
writ list = +westos westos组可写
systemctl restart smb.service
mount -o username=lee,password=westos //172.25.254.101/westos_share /mnt
touch file1
vim /etc/samba/smb.conf
valid users = lee ##指定访问用户
systemctl restart smb.service
mount -o username=westos,password=westos //172.25.254.101/westos_share /mnt
mount -o username=lee,password=westos //172.25.254.101/westos_share /mn
指定访问组和上面一个道理,这里不进行测试
vim /etc/samba/smb.conf
browseable = yes|no ##是否隐藏共享
systemctl restart smb.service
smbclient -L //172.25.254.101
map to guest = bad user | 写到全局设定中(118行) |
guest ok = yes | 允许匿名用户访问 |
admin users = lee | 指定此共享的超级用户身份呢 |
vim /etc/samba/smb.conf
map to guest = bad user ##写到全局设定中(118)
guest ok = yes ##允许匿名用户访问
systemctl restart smb.service
mount -o username=guest //172.25.254.101/westos_share /mnt
八、samba的多用户挂载
在客户端如果用普通的挂载方式
没有用过用户验证的人也可以访问samba服务
dnf install cifs-utils -y
vim /root/smbpass
username=westos
password=westos
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.101/westos_share /mnt
#credentials=/root/smbpass 指定认证文件
#sec=ntlmssp 指定认证类型
#multiuser 支持多用户
root@client ~]# su - westos
[westos@client ~]$ cd /mnt
[westos@client mnt]$ ls ##客户端主机的westos用户没有通过认证
ls: cannot open directory '.': Permission denied
[westos@client mnt]$ ls
ls: cannot open directory '.': Permission denied
[westos@client mnt]$ cifscreds add -u westos 172.25.254.101
Password:
[westos@client mnt]$ ls ##通过认证可以显示
file1 file2 file3
[westos@test /]$ cifscreds add -u lee 172.25.254.101
Key search failed: Key has expired ##当遇到此报错信息
[westos@test /]$ cifscreds add -u lee -d 172.25.254.101
Password:
[westos@test ~]$ cifscreds clearall ##执行以上两条命令解决报错
autofs+samba
autofs:在客户端实现自动挂载卸载的软件
下载:dnf install autofs.x86_64
配置方式:
vim /etc/auto.master
最终挂载点的上层目录 自动以子策略文件
/mnt /etc/auto.samba
vim 自动以子策略文件(/etc/auto.samba)
最终挂载点 挂载参数 挂载资源
samba -fstype=cifs,username=westos,password=westos ://172.25.254.101/westos_share
systemctl restart autofs
测试:
cd /mnt/samba
df
cd /root
等待资源闲置超时 ##默认300秒 vim /etc/autofs.conf ---->Timeout=3
df
挂载资源自动卸载
NFS
Net File System
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。
工作原理:
NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。文件通常以块为单位进行传输。其大小是8KB(虽然它可能会将操作分成更小尺寸的分片)。NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。
特点:
(1)提供透明文件访问以及文件传输;
(2)容易扩充新的资源或软件,不需要改变现有的工作环境;
(3) 高性能,可灵活配置。
nfs基本信息
nfs-utils | ##安装包 |
nfs-server | ##服务脚本 |
/etc/exports | ##共享配置文件 |
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
测试:
[root@server ~]# showmount -e 172.25.254.101
Export list for 172.25.254.101:
nfs配置
vim /etc/exports ##此文件更改后生效exportfs -rv
共享目录 共享给谁(共享参数)
/westosdir *(ro)
测试:
nfs配置参数
anonuid=1000,anongid=1000 | 指定用户身份 |
sync | 更改生成后同步数据到服务器 |
async | 时时同步数据到服务器 |
rw | 读写 |
ro | 只读 |
no_root_squash | root用户挂载不转换身份 |
测试:
mount 172.25.254.101:/westosdir /mnt/
nfs+autofs
参看autofs.samba章节内容
vim /etc/auto.master
/mnt auto.nfs
vim /etc/auto.nfs
nfs 172.25.254.101:/westosdir
systemctl restart autofs.service
cd /mnt/nfs
df
测试:
iscsi
iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:
功能:
iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。
iSCSI使用 TCP/IP 协议(一般使用TCP端口860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换SCSI命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。不像某些 SAN 协议,iSCSI 不需要专用的电缆;它可以在已有的交换和 IP 基础架构上运行。然而,如果不使用专用的网络或者子网( LAN 或者 VLAN ),iSCSI SAN 的部署性能可能会严重下降。于是,iSCSI 常常被认为是光纤通道(Fiber Channel)的一个低成本替代方法,而光纤通道是需要专用的基础架构的。但是,基于以太网的光纤通道(FCoE)则不需要专用的基础架构。
1.fdisk /dev/vdb -------> /dev/vdb1
2.dnf install targetcli -y
iscsi_server #服务端配置
targetcli #进入运行环境
/> /backstores/block create westos_storage1 /dev/vdb1 #将/dev/vdb变成网络磁盘
/> /iscsi create iqn.2020-08.com.westos:storage1 #创建一个人iqn 的表达方式的链
/> /iscsi/iqn.2020-08.com.westos:strage1/tpg1/luns create /backstores/block/westos_storage1 #将网络磁盘和链联系起来
/> /iscsi/iqn.2020-08.com.westos:strage1/tpg1/acls create iqn.2020-08.com.westos:westoskey1 #创建key 密码
/> exit #退出保存
iscsi_client #客户端
dnf install iscsi-initiator-utils.x86_64 -y
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2020-08.com.westos:westoskey1 <---- key check
systemctl restart iscsid
iscsiadm -m discovery -t st -p 172.25.254.101
iscsiadm -m node -T iqn.2020-08.com.westos:strage1 -p 172.25.254.101 -l ---> /dev/sda
fdisk /dev/sda ---> /dev/sda1
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt
iscsiadm -m node -T iqn.2020-08.com.westos:strage1 -p 172.25.254.101 -u删除/dev/sda
iscsiadm -m node -T iqn.2020-08.com.westos:strage1 -p 172.25.254.101 -o delete 删除树文件