题目描述
配置 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:
接着,在本机创建指定的挂载目录:
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