红帽RHCSA8认证考试:配置autofs自动挂载

题目描述

配置 autofs,以按照如下所述自动挂载远程用户的主目录:

  • materials.example.com (172.25.254.254) NFS 导出 /rhome 到您的系统。此文件系统包含为用户 remoteuser1 预配置的主目录
  • remoteuser1 的主目录是 materials.example.com:/rhome/remoteuser1
  • remoteuser1 的主目录应自动挂载到本地 /rhome 下的 /rhome/remoteuser1
  • 主目录必须可供其用户写入
    remoteuser1 的密码是 flectrag

核心命令

yum install autofs
mkdir -p /rhome/remoteuser1

vim /etc/auto.master
->
/rhome  /etc/auto.rhome

vim /etc/auto.rhome
->
remoteuser1 -rw materials.example.com:/rhome/remoteuser1

systemctl restart autofs.service
systemctl enable autofs.service

验证:
ssh remoteuser1@node1
->
pwd

操作过程

autofs 是一个可以根据需要自动挂载目录的程序:当需要访问指定目录并且该目录可以被访问时,autofs 会自动挂载该目录到本地,当该目录有一段时间不活跃之后,autofs 就会自动卸载该目录,这样做可以节省带宽等系统资源,提升系统的总体运行性能。

在 RedHat Linux 系统中需要 autofs 之前,我们需要确保 autofs 已经被安装,这时可以执行如下命令安装一下 autofs:

yum install autofs

如果返回类似如下信息,则表明本机已经安装过了 autofs:

Package autofs-1:5.1.4-40.el8.x86_64 is already installed.

如果本机没有安装 autofs, 则按照正常步骤安装即可。不过,在实验环境中需要我们已经正确配置了实验环境中要求的 YUM 源,如果未配置 YUM 源,可以参考荒原之梦网的这篇文章完成 YUM 源的配置后再安装 autofs:

红帽RHSCA认证考试:配置您的系统以使用默认存储库

接着,在本机创建指定的挂载目录:

mkdir -p /rhome/remoteuser1

此外,虽然 remoteuser1 这个用户只看名字是“远程用户 1”的意思,但是,remoteuser1 这个用户其实是位于本地的:我们以本机 ROOT 用户的身份执行 id remoteuser1 命令查看 remoteuser1 用户的 ID, 可以看到类似下面这样的返回信息,这表明该用户是位于本机的:

uid=1002(remoteuser1) gid=1002(remoteuser1) groups=1002(remoteuser1)

我们称每一个需要使用 autofs 自动挂载的远程目录为一个“装载点”,每个装载点的配置信息都需要由一个命名格式为 auto.[XX] 的映射文件指定。在这里,装载点映射文件 auto.[XX] 中,文件名 auto 必须这样写,但后缀 [XX] 这部分则可以根据需要命制(一般使用全部小写的英文字母)。不过,装载点映射文件 auto.[XX] 的所在位置需要在 autofs 的主配置文件 auto.master 中做一个声明。

为了在 auto.master 为我们的装载点映射文件 auto.[XX] 做声明,我们可以执行如下命令,打开 /etc 目录下的 auto.master 文件:

vim /etc/auto.master

之后,写入如下内容并保存退出(这里我们把装载点映射文件命名为了 auto.rhome):

/rhome  /etc/auto.rhome

注:

/rhome /etc/auto.rhome 的含义是:在 /rhome 目录下创建一个挂载点,该挂载点的信息则由位于 /etc 目录下的名为 auto.rhome 的装载点映射文件进行指定。

接着,我们在 /etc 目录下创建并打开编辑 auto.rhome 文件:

vim /etc/auto.rhome

写入如下内容并保存退出:

remoteuser1 -rw materials.example.com:/rhome/remoteuser1

注:

① 装载点映射文件 auto.[XX] 中配置信息的书写格式为 [mount point] [mount options] [location], 即 [挂载点] [挂载选项] [目录所在位置]. 由于在前面做声明的时候,我们已经在 auto.master 文件中声明了 auto.[XX] 文件映射的所有装载点所在的顶级目录(在本文环境中,这个“顶级目录”就是 rhome),所以,在配置文件的 [挂载点] 这里,我们只需要指定挂载点所在的目录名即可,不需要从根目录开始写出完整路径。此外,每条 [挂载选项] 都需要以 - 开头,如果都多个选项则要用 , 分隔;

remoteuser1 就是挂载点所在的本地目录的名称,在本文环境中,remoteuser1 这个目录位于 /rhome 目录下,完整路径为 /rhome/remoteuser1;

-rw 表示该目录可读可写,由于我们没有在 [挂载选项] 中没有特别指定拥有该目录的用户或组,因此,该目录可以被本机所有用户和组读写;

materials.example.com:/rhome/remoteuser1 就是要挂载到本地的远程目录所在的网络位置。

接着我们重启 autofs 服务:

systemctl restart autofs.service

并将 autofs 服务设置为开机自启动:

systemctl enable autofs.service 

最后,我们可以执行一些操作,验证一下上面的配置是否成功。

由于 su remodeuser1 只是将用户切换成 remodeuser1 用户,并不会跟随切换环境变量,因此,即使我们使用 su remodeuser1 命令将用户由当前的 root 切换成了 remodeuser1, 我们以 remodeuser1 用户的身份运行 pwd, 看到的仍然是 root 用户的家目录,而不是 remodeuser1 用户的家目录,类似如下:

[remoteuser1@node1 root]$ pwd
/root

因此,我们可以使用 SSH 登录本地的 remodeuser1 用户,命令如下:

ssh remoteuser1@localhost

输入题目中提供的 remoteuser1 用户的密码 flectrag 登录成功之后,再次使用 pwd 命令查看当前所在位置,默认就可以看到 remoteuser1 用户的家目录,类似如下:

[remoteuser1@node1 ~]$ pwd
/rhome/remoteuser1

之后,我们可以在 /rhome/remoteuser1 目录下使用 touch test.txt 命令创建一个文件,发现是可以正常创建的,这表明 remoteuser1 用户可以对挂载的该远程目录做写入操作,满足题目要求。

至此,我们就完成了本题。

整个过程中,我们并没有进行将用户 remoteuser1 与其位于 materials.example.com 上的远程目录进行关联的操作,这是因为这部分操作已经在红帽的实验环境中为我们预先配置完成了。

参考资料

[01]. Autofs
https://help.ubuntu.com/community/Autofs