我负责一个小型 nfs 网络,我想设置机器根据登录的用户执行不同的挂载。这可能吗?
例如,如果用户 A 登录,我希望他们只看到 /home/users,而如果用户 B 登录,我希望他们看到 /home/users 和 /home/penguins。
我知道我可以使用组权限来做到这一点,但为了增加安全性,如果用户 A 登录时根本无法挂载 /home/penguins,我会感兴趣。
答案1
看一下libpam 安装. 它基本上执行用户会话的挂载任务(当挂载点文件夹被统计时,自动挂载就会挂载)。
从项目页面:
这个模块针对的是具有中央文件服务器的环境,用户希望在登录时挂载并在注销时卸载这些服务器,例如许多用户可以登录的(半)无盘站,并且从服务器静态挂载整个 /home 存在安全风险,或者在 /etc/fstab 中列出所有可能的卷是不可行的。
通常我建议使用 autofs,并从 LDAP 加载挂载表,或者在您的情况下使用有些生疏的 NIS。但是,由于您不希望为特定的多个用户挂载东西,而是依赖于权限,因此 autofs 不适合您(尽管很有可能)。
此外,我想指出的是,仅仅不增加出口并不能算是一种安全措施。
答案2
你的问题定义不太好,因为在登录定义不太明确。用户可以随时启动和停止进程(例如从cron
)。多个用户可以同时登录 - 在这种情况下应该使用哪些挂载?
我怀疑您真正想要的是以不同用户身份运行的进程看到不同的文件系统挂载,即使这些进程同时运行。
Linux 可以使用绑定文件系统。
- 将所有文件系统挂载到某处(独立于用户),而不授予相关用户访问权限
- 用于
bindfs
将它们重新挂载到用户可以访问的位置(取决于用户)
答案3
您不需要自动挂载。只需在 fstab 中设置相关行,允许用户挂载相关挂载(user
fstab 中的选项)。然后,编辑每个用户的~/.profile
挂载命令。这样,每次用户登录时,都会挂载正确的驱动器。
如果要使用自动挂载,可以将其设置为挂载在每个用户的主目录中。然后,当用户登录并访问其 $HOME 时,autofs 将挂载驱动器、分区或您正在挂载的任何内容。
答案4
如果在每个用户的 .profile 中使用手动“mount”命令,那么看起来就相当简单了。这样当特定用户使用其 ID 和密码登录时,就可以激活单独关注的挂载。