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

题目描述

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

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

操作过程

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认证考试:配置您的系统以使用默认存储库

虽然 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 用户可以对挂载的该远程目录做写入操作,满足题目要求。

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

参考资料

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