在 Ubuntu 12.04 中,我有一些用户的主目录是通过自动挂载 NFS 挂载的。所有 NFS 和自动挂载配置都是正确的。对于一个非常特殊的用例,我需要“手动”将一些与这些用户相对应的行添加到 /etc/passwd。保存 passwd 文件后,所有用户的主目录都会立即通过自动挂载挂载。我不希望发生这种情况。我认为很明显,某个进程正在监视 passwd 文件并访问所有用户的主目录。如果我卸载它们并添加另一行,那么所有主目录都会再次挂载。
我尝试了很多方法试图猜测发生了什么,但都没有成功。我认为这与 Gnome 有关,因为我们使用另一台运行基于 Ubuntu 内核的自制发行版的 Linux 机器,并运行 Gnome,同样的事情发生了。
任何想法?
答案1
您能详细说一下吗?为什么要修改或修改什么?可能有更简单的方法可以解决这个问题。
首先,您应该在启用日志记录的情况下重新启动自动挂载,以便了解哪个进程触发了挂载。您应该能够在 /var/log/daemon.log 中跟踪。查看自动挂载手册页了解详细信息。
其次,我不知道这是否重要,但自动挂载应该在一定时间不活动后卸载该主目录。
另外,您只是以 root 身份编辑 /etc/passwd 还是使用 vipw 或类似的东西?
答案2
谢谢你,etherfish。正如我在问题中所说,我只是修改了 /etc/passwd(不是使用编辑器,而是通过编辑脚本)。
我已经使用自动挂载多年,并且非常了解它,但您给了我一个线索:“哪个进程触发了挂载”。我以为自动挂载无法访问此信息,而我的自动挂载版本,即使带有 -d 选项,也没有记录该信息。我已经安装了最新版本,它确实记录了!
监视 /etc/passwd 的变化并访问所有主目录的程序是 gdm 的欢迎程序,它寻找面部图标(版本 2.30.1,文件 /gdm/gui/simple-greeter/gdm-user-manager.c)。
GDM 有一个 Exclude 选项,用于列出您不想监视其主页的用户,但这只是逗号分隔的列表!如果您有数百个用户,它就没用了。另一个配置选项是 IncludeAll。如果将其设置为 false,则文件 /etc/passwd 将不受监视,这正是我需要的。
甚至还有另一种选择:拥有未包含在文件 /etc/shells 中的登录 shell 的用户也不会看到他们的主目录被挂载。