RHEL7--第十二章-Samba
使用 Samba或 NFS实现文件共享
- Samba文件共享服务
微软:SMB(Server Messages Block)服务器消息块协议,为了解决局域网的文件的共享问题;
linux:基于 SMB协议上开发了 Samba服务程序,是linux与windows之间共享文件的最佳选择;
配置Samba服务程序,先安装 samba组件;
# yum install -y samba
Samba 主配置文件路径;
/etc/samba/smb.conf
由于配置文件中 #,;这两个符号内容太多,使用 grep -v 反向选择把配置文件精简;
# cd /etc/samba
# grep -v "#" /etc/samba/smb.conf > samba.conf.bak
# grep -v ";" /ect/samba/smb.conf.bak | grep -v "^$" > smb.conf
^$:表示对空白行进行反选过滤;
配置文件参数:

1:配置共享资源
与Apache一样,分为全局与区域配置参数;
参数:

例:
创建用于访问共享资源的账户信息,RHEL7中,samba服务默认使用的是用户口令认证模式(user);
备注:
a:在创建samba账户数据库后,才能使用用户口令认证模式;
b:创建samba数据库前,账户必须在当前系统中已经存在,否则日后会有各种错误;
相关命令:
pdbedit:管理smb服务程序的账户信息数据库;
参数:

A:查看samba数据库账户,是否已存在当前系统中;
# id centos
# pdbedit -a -u centos
输入centos 在samba数据库中的密码;

B:创建共享资源的文件目录;
# mkdir /home/database
# chown -Rf centos:centos /home/database
# semanage fcontext -a -t samba_share_t /home/database
# restorecon -Rv /home/database
解析:
1)共享的文件目录,需要考虑文件读写权限的问题;
2)由于共享目录在 /home下,牵扯到SELinux安全上下文带来的限制;相关限制权限在 samba配置文件注释信息中有描述;
C:设置SElinux服务与域策略,使其允许通过 samba服务程序访问普通用户家目录;
# getsebool -a | grep samba
# setsebool -P samba_enable_home_dirs=on
D:在 samba主配置文件中,写入共享信息;
# vi /etc/samba/smb.conf

E:重启 Samba服务,并设置开机自启;清空防火墙,并保存设置;
# systemctl restart smb
# systemctl enable smb
# systemctl stop firewalld
# systemctl disable firewalld
2:windows挂载目录共享
运行窗口输入 192.168.10.10 samba服务器地址即可
3:Linux挂载目录共享
需要在linux客户端上安装 支持文件共享服务的软件包:cifs-utils
# yum install -y cifs-utils
按照 samba服务的用户名,密码,共享域的顺序将相关信息写入到一个认证文件,并修改文件权限为600;
# vim auth.smb

# chmod -Rf 600 auth.smb
在客户端上创建一个挂载 samba服务共享资源的目录sharetest,并把挂载信息写入 fstab文件内;
# mkdir /sharetest
# vim /etc/fstab

测试结果即可;查看window建立的文件,是否能看到;
- NFS网络文件系统
NFS服务可以将远程 Linux系统上的文件共享资源挂载到本地主机目录上,使得本机主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源一样;
系统默认已经安装 NFS服务;
# yum install -y nfs-utils
NFS的配置文件:
/etc/exports 默认没有任何内容;
配置格式:
共享目录路径 允许访问的NFS客户端(共享权限参数);
参数:

例:服务器端
A:清空NFS服务器上的防火墙策略,并关闭;
# systemctl stop firewalld
# systemctl disable firewalld
B:在 NFS服务器上建立用于 NFS文件共享的目录nfstest,并设置权限确保其他人也有写入权限;
# mkdir /nfstest
# chmod -Rf 777 /nfstest
# echo "hi" > /nfstest/aaa.txt
C:/nfstest目录共享给192.168.10.0/24网段内的所有主机,拥有读写权限等;以及把来访客户端root映射为本地的匿名用户等;编辑NFS的配置主文件 /etc/exports
# vi /etc/exports

/nfstest 192.168.10.* (rw,sync,root_squash)
D:启动NFS服务程序;
# systemctl restart rpcbind
# systemctl enable rpcbind
# systemctl start nfs-server
# systemctl enable nfs-server
解析:
由于使用NFS服务进行文件共享前,需要使用 RPC(remote procedure call,远程过程调用)服务将NFS服务器的IP地址和端口信息发给我客户端;所以优先重启 rpcbind 服务;再重启 NFS服务;
例:客户端
命令:
showmount 查询NFS服务器的远程信息;
参数:

A:先使用 showmount命令 查询NFS服务器的远程共享信息;
# showmount -e 192.168.10.10
B:创建一个挂载目录;并挂载;
# mkdir /nfsaaa
# mount -t nfs 192.168.10.10:/nfstest /nfsaaa
或
# mount 192.168.10.10:/nfstest /nfsaaa
# vim /etc/fstab
192.168.10.10:/nfstest /nfsaaa nfs defualts 0 0
解析:
mount -t:指定要挂载的文件系统类型,后面跟IP地址;
- AutoFS 自动挂载服务
autofs服务程序是linux系统的守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统;
优点:只有在用户需要使用该文件系统时才去动态挂载,节约网络资源;
autofs主配置文件:
/ect/auto.master
子配置文件:
建议后缀名为.misc,用户可以自定义;
主配置的格式:
挂载目录 子配置文件
/mnt/autofs /etc/autotest.misc
子配置文件格式:
挂载目录 挂载文件类型及权限:设备名称
sdbtest -fstype=ext4,ro,nosuid,nodev :/dev/sdb1
例:
分区挂载测试
A:配置autofs主配置文件;创建挂载目录 autofs;
# mkdir /mnt/autofs
# vi /etc/auto.master

解析:
自定义 子配置文件路径及名称:/etc/autotest.misc
B:配置子配置文件;
# vim /etc/autotest.misc

解析:
sdbtest:表示子配置文件中的挂载目录,后面使用 cd命令进入挂载分区;
-fstype=:挂载的文件系统类型;
ro,nosuid,nodev:挂载目录的权限;
dev/sdb1:表示挂载的设备名称;
C:重启 autofs服务及开机自启;
# systemctl restart autofs
# systemctl enable autofs
D:测试结果;
# df -h
# cd sdbtest
# df -h
浙公网安备 33010602011771号