第12章:使用 Samba 或 NFS 实现文件共享
比较文件传输和文件共享这两种资源交换方式的差异;介绍SMB协议和Samba服务程序的发展过程;部署Samba文件共享服务;如何配置网络文件系统(Network File System,NFS)服务来简化 Linux 系统之间的文件共享工作?如何在多台Linux系统之间部署NFS服务?如何使用autofs自动挂载服务?深刻理解在 Linux 系统之间共享文件资源,以及在 Linux 系统与 Windows 系统之间共享文件资源的工作机制,并彻底掌握相应的配置方法。
一、使用 Samba 实现文件共享服务
1、文件共享服务及Samba程序的诞生背景?
FTP 文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP 协议的本质是传输文件,而非共享文件。
1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。
1991 年,当时还在读大学的 Tridgwell 为了解决 Linux 系统与 Windows 系统之间的文件共享问题,基于 SMB 协议开发出了 SMBServer 服务程序(即Samba程序)。这是一款开源的文件共享软件,经过简单配置就能够实现 Linux 系统与 Windows 系统之间的文件共享工作。
Samba 服务程序现在已经成为在 Linux 系统与 Windows 系统之间共享文件的最佳选择。
Samba2、安装 Samba 服务程序及其 主配置文件
安装Samba服务程序:
yum install samba
查看Samba主配置文件:
cat /etc/samba/smb.conf
去掉Samba服务主配置文件中的注释行等无效信息:使用 cat 命令读入主配置文件,再在 grep 命令后面添加-v 参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用(^$)参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
重定向Samba主配置文件中的常用字段及其含义如下图示:
Samba服务这些配置参数分为两类,分别是全局参数和区域参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。
3、创建并配置Samba共享资源
创建共享资源的方法很简单,只要把下图中的参数写入到 Samba主配置文件中,然后重启该服务即可。
创建共享资源1)创建用于访问共享资源的账户信息。
RHEL 7 系统中,Samba 服务程序默认使用的是用户口令登录模式,且用户必须在当前系统中存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,其常用参数如下:
pdbedit 创建Samba账户2)创建用于Samba共享资源的文件目录,并修改该目录的读写权限,同时解决SELinux安全上下文对Samba资源目录的限制。
创建用于Samba共享资源的文件目录3)设置SELinux策略,使其允许Samba服务程序访问普通用户的家目录。
执行 getsebool 命令,筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可。
修改SELinux策略4)配置Samba服务。
在Samba主配置文件中,[homes]参数用于来访用户的家目录共享信息,[printers]参数用于共享的打印机设备。如果后续工作中不需要它们,可以手动删除即可。
vim /etc/samba/smb.conf
配置Samba服务
5)Samba配置完成后,重启smb服务(Samba 服务程序在 Linux 系统中的服务名称为 smb)。并同时清空 iptables 防火墙,即可开始测试Samba文件共享服务了。
重启smb服务4、在Windows客户机上访问Samba文件共享服务
无论 Samba 共享服务是部署 Windows 系统上还是部署在 Linux 系统上,通过 Windows系统进行访问时,其步骤和方法都是一样的。(注意,在连接Samba服务前,请先清空防火墙的默认策略)
在Windows中连接Linux机器上的Samba服务。只需在 Windows 的“运行”命令框中输入两个反斜杠,然后再加上Samba服务器的 IP 地址即可:
\192.168.10.105、在Linux客户机上访问Samba文件共享服务
1)在Linux客户机上安装支持文件共享服务的软件包(cifs-utils)。
yum install cifs-utils
2)在Linux客户机上,按照 Samba 服务的用户名、密码、共享域的顺序把相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅 root 管理员才能够读写:
vim /root/auth.smb
chmod 600 auth.smb
auth.smb
3)在Linux客户机上创建一个用于挂载Samba共享资源的目录,并把挂载信息写入到/etc/fstab 文件中去,以确保Samba共享资源的挂载在当前Linux客户机重启后依然生效。
mkdir -p /root/smbroot
vim /etc/fstab
mount -a
/etc/fstab
通过以上步骤,即使用Samba服务完成了两台Linux机器之间的文件资源共享。
二、使用 NFS 实现文件共享服务
1、什么是NFS?有什么用?
NFS(网络文件系统)服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。
使用NFS,可以简化部署文件共享服务的复杂度。安装NFS软件包:
yum install nfs-utils
2、实验前的准备工作
使用两台 Linux 主机,一台充当 NFS服务器,一台充当 NFS 客户端。使用nmtui 命令设置前者的 IP 为 192.168.10.10,设置后者的IP 为 192.168.10.20。
同时先清空 NFS服务器机器上的防火墙默认策略,以名默认的防火墙策略禁止正常的NFS共享服务。
iptables -F
service iptables save
3、开始实现NFS文件资源共享
1)在NFS服务器(192.168.10.10)机器上,创建用于NFS文件共享的目录,并设置足够的权限以确保其它用户也有写入权限。
mkdir /home/nfsfile
chmod -Rf 777 /home/nfsfile
echo "welcome to 192.168.10.10" > /home/nfsfile/readme.txt
2)在NFS服务器上配置NFS(其配置文件为 /etc/exports,该文件默认是没有任何内容的)。常用的配置参数如下:
/etc/exportsvim /etc/exports
把上述配置参数写入到 /etc/exports 配置文件中并保存后退出。
3)在NFS服务端,启动、启用NFS服务程序。
由于在使用 NFS 服务进行文件共享之前,需要使用 RPC(Remote Procedure Call,远程过程调用)服务将 NFS 服务器的 IP 地址和端口号等信息发送给客户端。因此,在启动 NFS 服务之前,还需要顺带重启并启用 rpcbind 服务程序,并将这两个服务一并加入开机启动项中。
systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
4)在NFS客户端(192.168.10.20),使用 showmount
命令查询 NFS 服务器的远程共享信息。showmount的常用参数如下:
查看NFS服务端(192.168.10.10)上的共享资源列表:
showmount -e 192.168.10.10
5)在NFS客户端创建一个挂载目录,用于保存NFS服务端的NFS共享资源。
mkdir /home/nfsroot
临时挂载:
mount -t nfs 192.168.10.10:/home/nfsfile /home/nfsroot
永久挂载:
vim /etc/fstab
永久挂载
三、autofs 自动挂载服务
1、为什么需要 自动挂载服务?
无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。
autofs 自动挂载服务可以帮我们解决这一问题。
2、关于 autofs 自动挂载服务
与 mount 命令不同,autofs 服务程序是一种 Linux 系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,我们将挂载信息填入/etc/fstab 文件后,系统在每次开机时都自动将其挂载;而 autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
3、使用 autofs 服务程序
1)安装 autofs 服务程序
yum install autofs
2)配置 autofs 服务(其主配置文件为 /etc/auto.master)
处于生产环境中的 Linux 服务器,一般会同时管理许多设备的挂载操作。如果把这些设备挂载信息都写入到 autofs 服务的主配置文件中,无疑会让主配置文件臃肿不堪,不利于服务执行效率,也不利于日后修改里面的配置内容,因此在 autofs 服务程序的主配置文件中需要按照 “挂载目录 子配置文件” 的格式进行填写。
- 挂载目录是设备挂载位置的上一级目录。
- 子配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc 结束。
例如,光盘设备一般挂载到/media/cdrom 目录中,那么挂载目录写成/media 即可。示例如下:
/etc/auto.master进一步编写 autofs 服务的子配置文件 /etc/iso.misc 即可。配置完成后,重启 autofs 服务,并将其添加到开机自动启动项中去。
vim /etc/auto.master
vim /etc/iso.misc
systemctl start autofs
systemctl enable autofs
autofs 的子配置文件
3)测试autofs自动挂载服务是否生效
我们先查看当前的光盘设备挂载情况,确认光盘设备没有被挂载上,而且/media 目录中根本就没有 iso 子目录。但是,我们却可以使用 cd 命令切换到这个 iso 子目录中,而且光盘设备会被立即自动挂载上。我们也就能顺利查看光盘内的内容了。
查看系统当前的挂载情况:
df -h
进入/media/iso目录后,再次查看系统当前的挂载情况:
cd /media/iso
df -h
测试 autofs 动态挂载服务
本章复习题
复习题本章完 2019-01-09
网友评论