欢迎光临
我们一直在努力

【我的Linux,我做主!】基于autofs自动挂载服务实现“漫游用户”

目录:
(一)了解什么是自动挂载
(二)配置autofs
(三)autofs自动挂载NFS服务器
(四)结合LDAP实现“漫游用户”


(一)了解什么是自动挂载
(1.1)mount是用来挂载文件系统的,可以在系统启动的时候挂载,也可以在系统启动后挂载。对于本地固定设备,如硬盘可以使用mount挂载;而光盘、软盘、NFS、SMB等文件系统具有动态性,即需要的时候才有必要挂载。光驱和软盘我们一般知道什么时候需要挂载,但NFS和SMB共享等就不一定知道了,即我们一般不能及时知道NFS和SMB共享什么时候可以挂载。而autofs服务就提供这种功能,就像windows中的光驱自动打开功能,能够及时挂载动态加载的文件系统。免去我们手动挂载的麻烦。

(1.2)autofs与mount/umount的不同之处在于,它是一种守护程序。如果它检测到用户正试图访问一个尚未挂载的文件系统,它就会自动检测该文件系统,如果存在,那么autofs会自动将其挂载。另一方面,如果它检测到某个已挂载的文件系统在一段时间内没有使用,那么autofs会自动将其卸载。因此一旦运行了autofs后,用户就不再需要手动完成文件系统的挂载和卸载了。
(1.3)假设,在我们系统中存在这样的规则:把某设备/dev/cdrom和某个目录/mnt/cdromx联系在一起,不管现在是否挂载了,反正只要我们访问/mnt/cdromx的时候,那么系统就认为我现在是要访问/dev/cdrom了,此时不管这个目录和设备是否有挂载在一起,都会将其自动挂载起来提供服务。


(二)配置autofs
(2.1)我们在vms002主机上配置自动挂载,我们首先保证在vms002主机上没有挂载/dev/cdrom的光盘镜像,然后我们在vms002主机上安装autofs软件包。

(2.2)我们希望把光盘/dev/cdrom自动关联到/mnt/cdromx目录下,我们在/mnt目录下创建了相关的文件,并且确认了没有cdromx目录,接着我们编辑/etc/auto.master文件,我们指定/mnt目录和/etc/auto.aa文件进行关联(图2-3)。
# vim /etc/auto.master

(2.3)接着我们使用一个模板文件来构建auto.aa文件,我们在auto.aa文件中指定cdromx,并指定挂载的文件系统类型和读写类型,同时第三段中表示冒号左边指的是远端的主机(一般用IP地址表示),冒号右边指的是本地的设备名。此时我们便实现了将/mnt/cdromx和/dev/cdrom两个目录产生了联系的需求。接着我们将autofs服务重启并设置为开机自动启动(图2-6)。
# systemctl restart autofs
# systemctl enable autofs

(2.4)此时我们使用mount命令查看发现系统并没有挂载cdrom的相关条目,我们发现在/mnt目录下也没有产生任何的文件,但是我们使用进入cdromx的命令时,发现是可以正常的进入cdromx目录,并且能够查询到目录下的文件,而此时使用mount命令发现便可以正常的查询到cdrom挂载的相关条目了。

(2.5)需要注意的是,我们在auto.master里指定了父目录,所以此时我们父目录里原有的文件都会被隐藏,所以我们发现进入到/mnt目录下后原先图2-2中创建的aa.txt、bb.txt、cc.txt、dd.txt文件都看不到了。如果我们不希望将父目录中的文件被隐藏,则可以在/etc/auto.master文件中将父目录修改为“/-”,同时在/etc/auto.aa文件中修改关联的目录为/mnt/cdromx(图2-9)。此时我们将autofs服务重启后,发现/mnt目录下之前创建的aa.txt等文件都是存在的,并没有被隐藏,且系统目前没有产生任何关于光盘镜像的挂载信息,而当我们查询完/mnt/cdromx目录中的文件后发现此时系统已经自动产生了光盘镜像的挂载信息了(图2-10)。


(三)autofs自动挂载NFS服务器
(3.1)首先我们快速在vms001主机上搭建一个NFS服务器,默认情况下NFS服务器在系统中是安装好了的,我们直接启动就可以了。我们在vms001主机创建一个/zz目录,并且将/etc/hosts文件拷贝到/zz目录下。
# cp /etc/hosts .
# systemctl start nfs-server
# systemctl enable nfs-server
# vim /etc/exports

(3.2)接着我们在/etc/exports文件中写上如下一行条目,将/zz目录共享出去,且可读可写、异步传输,然后将NFS文件中的条目重新生效。

(3.3)然后我们在vms002主机上尝试自动挂载vms001主机的NFS服务器端目录,我们在vms002主机的/etc/auto.aa配置文件中设置设置本地的挂载目录为/mnt/nfs,挂载的数据源为vms001主机提供的/zz目录(图2-14)。
# showmount -e vms001
# mount | grep ‘zz’
# vim /etc/auto.aa

(3.4)接着我们将autofs服务重启一下,我们发现开始vms002主机上并没有挂载vms001主机上的任何目录信息,当我们查询“# ls /mnt/nfs/”后,此时便可以发现vms002主机上已经自动挂载了vms001主机上使用NFS服务共享的/zz目录了(图2-15)。
注意:我们也是可以在/etc/auto.master文件中定义多个挂载文件名,然后分类每个文件名对应不同的挂载项(图2-16)


(四)结合LDAP实现“漫游用户”
(4.1)我们在vms001主机上使用install.sh创建两台KVM虚拟机host和station。

(4.2)然后我们可以按照《【我的Linux,我做主!】曝光:网络用户–部署LDAP目录服务实战》文章中的“(二)搭建实验环境”和“(三)使用LDAP客户端”的操作步骤进行操作,使得我们station虚拟机可以正常的查看到host虚拟机上的网络用户ldapuser1
注意:host虚拟机的IP为192.168.122.10,host虚拟机的主机名为:host.rhce.cc;station虚拟机的IP为192.168.122.100,host虚拟机的主机名为:station.rhce.cc

(4.3)但是我们发现如果直接从station虚拟机登录式切换到网络用户ldapuser1时,由于本地没有家目录,所以无法正常的切换成功(图2-20)。而在host虚拟机中所创建的网络用户所有的家目录都是存放在/home/guests目录中的,所有这些网络用户都是在服务器上创建的,且他们的家目录都已经通过NFS共享出去了(图2-21)。

(4.4)之前我们是通过在LDAP客户端的本地创建网络用户的家目录,从而使得在station虚拟机切换到ldapuser1网络用户时,能够正常的登录,但是这样的操作十分的笨拙,当服务器的网络用户数量很大,且成员服务器的数量也很大时,此时通过人工创建网络用户的家目录的方式基本是不可能实现的。针对这个问题,我们的解决方案是在station虚拟机上安装autofs软件包(图2-22),然后我们在station虚拟机的/etc/auto.master中指明host虚拟机LDAP服务中网络用户的家目录,还要指明当前主机配置autofs的文件名(图2-23)。

(4.5)然后我们将模板文件/etc/auto.misc拷贝给/etc/auto.aa,同时我们需要在auto.aa文件中指定“客户端用户名,(文件系统类型、是否可读可写、版本),服务器端用户名”,当然当用户量很大时,我们可以使用通配符去进行用户名替换,这样可以大大的提高工作效率。
注意:“*”表示的是任意的字段,“&”表示的是不管任意的字段是什么,都保持和“*”字段一致

(4.6)此时我们将station虚拟机的autofs服务重新启动一下,此时我们发现station主机切换到网络用户ldapuser4时,自动在本地创建了家目录,所以才可以正常的登录(图2-25),同时这个时候我们也发现station虚拟机已经自动挂载了host虚拟机的guests目录(图2-26)。
注意:使用“# su – ldapuser4”时,我们加了横杠,表示登录式切换,会访问网络用户ldapuser4的家目录,而网络用户的家目录我们已经通过NFS服务共享出来了,所以在本地会自动创建网络用户的家目录
# systemctl restart autofs
# mount | grep -v auto | grep guests—查询station虚拟机是否有挂载host虚拟机的文件目录

(4.7)此时我们在station虚拟机上登录切换到ldapuser3用户,并使用ldapuser3用户创建了一个文件,这个文件其实是写到了host虚拟机上的,并且即使我们使用其他主机登录ldapuser3账户也是可以看到我们之前创建的这个文件的,这样我们在LDAP环境中便实现了“漫游用户”的需求。

—————— 本文至此结束,感谢阅读 ——————

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。