本文共 7110 字,大约阅读时间需要 23 分钟。
作用:
windows系统共享文件时用到的协议smb smb是由miscrosoft+sun Linux cifsSamba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
服务启动脚本:
smb.service 主配置目录: /etc/samba 主配置文件: /etc/samba.conf 安全上下文: samba_share_t 端口: 139 445 安装包: samba samba-commonsamba的安装:dnf install samba samba-common samba-client -ysamba服务启动:systemctl enable --now smbsamba服务启用firewall-cmd --permanent --add-service=sambafirewall-cmd --reload 测试:smbclient -L //ip ##当要输入root密码时请直接回车
1.samba用户必须是被地存在的用户2.samba用户的建立smbpasswd -a lee ##添加用户pdbedit -L ##查看用户列表pdbedit -x lee ##删除用户
当selinux开启时:setsebool -P samba_enable_home_dirs on在linux下:smbclient //ip/westos -U westos
[root@localhost mnt]# cd /etc/samba/[root@localhost samba]# cp smb.conf.example smb.conf[root@localhost samba]# mkdir /westos[root@localhost samba]# semanage fcontext -a -t samba_share_t '/westos(/.*)?' [root@localhost samba]# restorecon -RvvF /westos/[root@localhost samba]# vim /etc/samba/smb.conf [LEE] ##共享名称 comment = westos dir ##共享说明 path = /westos ##共享路径[root@localhost samba]# systemctl restart smb.service [root@localhost samba]# systemctl enable smb.service [root@localhost samba]# mount -o username=linux,password=123 //ip/LEE /mnt/[root@localhost samba]# df
[root@node1 yum.repos.d]# dnf install autofs -y[root@node1 etc]# vim /etc/auto.master/mnt /etc/auto.samba[root@node1 etc]# vim /etc/auto.sambasamba -fstype=cifs,username=linux,password=westos ://ip/LEE[root@node1 etc]# systemctl enable --now autofs[root@node1 etc]# cd /mnt/[root@node1 mnt]# cd samba[root@node1 samba]# df//ip/LEE 7353344 4992264 2361080 68% /mnt/samba[root@localhost mnt]# vim /etc/autofs.conf timeout = 3[root@localhost mnt]# systemctl restart autofs[root@localhost samba]# cd .. ##取消挂载 [root@localhost mnt]# df
当需要共享系统目录时,例如要共享/mnt目录时,此时不可以更改系统目录的安全上下文,否则会导致系统其他部分出问题,需要更改其bool值。
[root@13 ~]# vim /etc/samba/smb.conf[LEE] comment = westos1 dir path = /mnt[root@13 ~]# getsebool -a | grep samba[root@13 ~]# setsebool -P samba_export_all_ro on[root@13 ~]# systemctl restart smb[root@13 ~]# smbclient //192.168.0.66/LEE -U linux
hosts allow 172.25.254.30 172.25.254. ##当写到单独共享时之对此共享生效hosts deny ##当写到【GLOBAL】时对samba整体生效
writable = yes ##可写write list = westos ##指定用户可写write list = +westos write list = @westos ##指定组可写[root@localhost samba]# usermod -G linux leevalid users = lee ##指定访问用户valid users = +lee|@lee ##指定访问组browseable = yes|no ##是否隐藏共享map to guest = bad user ##写到全局设定中 ** 任何没有身份的用户都被映射成用户名称**guest ok = yes ##允许匿名用户访问admin users = lee ##指定此共享的超级用户身份在服务端修改主配置文件admin users = westos 指定此共享的超级用户身份 以超级用户身份去管理共享文件在客户端的挂载目录下建立文件(用westos身份去挂载)显示为超级用户的身份,(在配置文件中如果不指定,admin users = westos 则在服务端看到的依然是westos用户身份的文件,用westos身份进行挂载)在服务端可以看到文件的用户身份是root
在客户端如果用普通的挂载方式,没有用过用户验证的人也可以访问samba服务。
需要安装插件 dnf search mount dnf install cifs-utilsvim /root/smbpassusername=westospassword=westoschmod 600 /root/smbpass 不是超级用户也无法查看此文件临时挂载mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.211/westos /mntcredentials=/root/smbpass 指定认证文件 (指定本次所使用到的用户和密码所在记录的文件)sec=ntlmssp指定认证类型(其他用户可以用自己持有的samba账号来完成认证)multiuser支持多用户:每个人用自己的身份进行挂载,用自己的samba用户认证 (切换到westos用户,则不能看到/mnt/目录里面的内容)在认证期间,所使用的认证策略测试su - westos[westos@test /]$ ls /mnt客户端主机的 wetos 用户没有通过认证ls: cannot access '/mnt': Permission denied[westos@test ~]$ cifscreds add -u lee172.25.254.211Password:[westos@test ~]$ ls /mnt/ 通过认证可以显示file file1111 file2 file22222[westos@test /]$ cifscreds add -u lee 172.25.254.211服务端的lee ,输入正确的密码后建立认证Key search failed: Key has expired ##当遇到此报错信息[westos@test /]$ cifscreds add -u lee -d 172.25.254.211Password:[westos@test ~]$ cifscreds clearall执行以上两条命令解决报错
Net File System(NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。)
nfs-utils ##安装包
nfs-server ##服务脚本/etc/exports ##共享配置文件
systemctl start nfs-serverfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --permanent --add-service=mountdfirewall-cmd --permanent --add-service=nfsfirewall-cmd --reload测试:[root@dns_node1 ~]# showmount -e ipExport list for ip:
servervim /etc/exports ##此文件更改后生效exportfs -rv共享目录 共享给谁(共享参数)/westosdir *(ro)测试:mount 172.25.254.30:/westosdir /mnt/cd /mnt/ 就可以看到服务端内容
anonuid=1000,anongid=1000 ##指定用户身份
sync ##更改生成后同步数据到服务器 async ##时时同步数据到服务器 rw ##读写 ro ##只读 no_root_squash ##root用户挂载不转换身份dnf install autofs -yvim /etc/auto.nfsmount -fstype=cifs,credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.211/westos systemctl restart autofs.servicesu leelee用户没有认证 cd /mnt/ 会自动挂载[lee@test /]$ cifscreds add -u lee 172.25.254.211认证后就可以看到/mnt下的信息vim /etc/auto.nfswestos 172.25.254.211:/westoscd /mnt/westsosdf 可以查看到自动挂载
共享磁盘设备:(通过网络直接进行共享,在客户端可以对服务端共享的磁盘设备进行写入)
安装targetcli,fdisk /dev/vdb 建立一块可以共享的分区/dev/vdb1在火墙策略中添加服务[root@localhost Desktop]# firewall-cmd --permanent --add-port=3260/tcp[root@localhost Desktop]# firewall-cmd --reloadsuccess1.fdisk /dev/vdb -------> /dev/vdb12.dnf install targetcli -y3.iscsi_servertargetcli ##共享设备/> /backstores/block create westos_storage1 /dev/vdb1 ## 创建共享设备的别名(westos_storage1)针对于真实的物理设备/dev/vdb1/> /iscsi create iqn.2020-08.com.westos:strage1 ## /iscsi create iqn.2020-08.com.westos:strage1对外共享,iqn的格式:全局限定名称有固定的格式:年月域名的反写strage:短名称/> /iscsi/iqn.2020-08.com.westos:strage1/tpg1/luns create /backstores/block/westos_storage1 ## 将对外共享与真实设备关联起来。对外共享真实设备/dev/vdb1/> /iscsi/iqn.2020-08.com.westos:strage1/tpg1/acls create iqn.2020-08.com.westos:westoskey1 ## 通过westoskey进行认证/> exit4.iscsi_clientdnf install iscsi-initiator-utils.x86_64 -yvim /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2020-08.com.westos:westoskey1 <---- key check## 做认证:指定用户key,重启iscsidsystemctl restart iscsidiscsiadm -m discory -t st -p 172.25.254.100 ## -m 动作 -t st :类型 -p ip:发现(不做认证也可以发现)iscsiadm -m node -T iqn.2020-08.com.westos:strage1 -p 172.25.254.100 -l ---> /dev/sda ## -l 登陆成功,则表示认证成功fdisk /dev/sda ---> /dev/sda1 ## 往/dev/sda1里面写东西,就是往对外共享的设备里写,即服务端/dev/vdb1mkfs.xfs /dev/sda1mount /dev/sda1 /mnt因为共享过来的设备/dev/sda是一块网络设备,每次开机重启设备会漂移,所以需要在永久挂载文件中以UUID的形式进行编辑。且因为挂载的分区/dev/sda1是网络设备,如果在写参数的时候没有写"_netdev",系统将无法重启[root@node1 yum.repos.d]# vim /etc/fstab ##开机自动挂载/dev/sda1 /mnt xfs defaults,_netdev 0 0
卸载挂载的共享设备(删除永久挂载文件/etc/fstab中的挂载信息)[root@localhost Desktop]# targetcli /> clearconfig confirm=true ##删除/> exit## 删除[root@node1 yum.repos.d]# iscsiadm -m node -T iqn.2020-12.org.westos:storage1 172.25.254.212 -u[root@node1 yum.repos.d]# iscsiadm -m node -T iqn.2020-12.org.westos:storage1 172.25.254.212 -o delete[root@node1 yum.repos.d]# tree /var/lib/iscsi/[root@node1 yum.repos.d]# systemctl restart iscsi
转载地址:http://unhzi.baihongyu.com/