1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。
Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择
Samba服务程序的配置方法
[root@zhang ~ ]# yum install samba
处理配置文件
[root@zhang ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak [root@zhang ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf [root@zhang ~]# cat /etc/samba/smb.conf
第1步:创建用于访问共享资源的账户信息,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
[root@zhang ~]# pdbedit -a -u zhang
第2步:创建用于共享资源的文件目录,授权(SELinux),并立即生效
[root@zhang ~]# mkdir /home/database
[root@zhang ~]# chown -Rf zhang:zhang /home/database
[root@zhang ~]# semanage fcontext -a -t samba_share_t /home/database
[root@zhang ~]# restorecon -Rv /home/database/
第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录
[root@zhang database]# setsebool -P samba_enable_home_dirs on
第4步:编辑Samba服务程序的主配置文件。
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes
第5步:Samba服务程序的配置工作基本完毕。接下来重启smb服务(Samba服务程序在Linux系统中的名字为smb)并清空iptables防火墙
[root@zhang database]# systemctl restart smb
[root@zhang database]# systemctl enable smb
[root@zhang database]# iptables -F
[root@zhang database]# service iptables save
第6步: 验证
window端 win+r 输入\\192.168.10.10
输入账号后进入database目录中。完成配置
Linux系统
Linux客户端 需要安装支持文件共享服务的软件包(cifs-utils)
yum install cifs-utils
在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写:
[root@service ~]# vim auth.smb
username=zhang
password=zhang
domain=MYGROUP
[root@service ~]# chmod -Rf 600 auth.smb
在Linux客户端上创建一个用于挂载Samba服务共享资源的目录
[root@service ~]# mkdir /database
[root@service ~]# echo "//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0 " >> /etc/fstab
[root@service ~]# mount -a
完成Linux客户端成功地挂载了Samba服务的共享资源
NFS网络文件系统
客户端部署NFS服务来共享文件。NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件
RHEL 7系统中默认已经安装了NFS服务
清空NFS服务器上面iptables防火墙的默认策略,以免默认的防火墙策略禁止正常的NFS共享服务。
[root@zhang ~]# iptables -F
[root@zhang ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
第2步:在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
[root@zhang ~]# mkdir /nfsfile
[root@zhang ~]# chmod -Rf 777 /nfsfile
[root@zhang ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme
第3步:NFS服务程序的配置文件为/etc/exports
[root@zhang ~]# vim /etc/exports
/nfsfile 192.168.10.*(rw,sync,root_squash)
第4步:启动和启用NFS服务程序。由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中。
[root@zhang ~]# systemctl restart rpcbind
[root@zhang ~]# systemctl enable rpcbind
[root@zhang ~]# systemctl restart nfs-server
[root@zhang ~]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
服务端配置完毕,接下来是客户端
[root@service ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile 192.168.10.*
创建挂载目录
[root@service /]# mkdir /nfsfile
[root@service /]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
[root@service /]# echo "192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0" >> /etc/fstab
配置完毕,此时客户端 /nfsfile 目录就与服务端/nfsfile 目录共享了(连接上了)--不知道怎么形容了
AutoFs自动挂载服务
无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费
autofs自动挂载服务可以帮我们解决这一问题。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统
第一步:安装autofs服务
[root@zhang ~]# yum install autofs
第二步:编辑配置文件 按照“挂载目录 子配置文件”的格式进行填写
[root@zhang ~]# vim /etc/auto.master
/media /etc/iso.misc
挂载目录 子配置文件 建议以.misc结尾
第三步:编辑子配置文件
[root@zhang iso]# vim /etc/iso.misc
iso -fstype=iso9660,ro :/dev/cdrom
可将挂载目录写为iso,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称
第四步:重启autofs服务
[root@zhang media]# systemctl restart autofs
[root@zhang media]# systemctl enable autofs
完成
当我们进入media目录中发现没有任何文件或文件夹,但是我们可以cd /media/iso