我创建并配置了 3 个虚拟机的测试环境:
- 提供 krb5 身份验证的 FreeIPA 服务器
- NFS 服务器使用服务器 1 来保护自身安全
- 从 nfs 服务器自动挂载主目录的客户端
问题是,当我将用户添加到我的 kerberos 域时(在本例中使用 FreeIPA webinterface),我仍然必须连接到文件服务器来为用户创建主目录。诚然,这是一个简单的过程,但它增加了用户创建过程的复杂性,并且使我无法将任务委托给非技术人员,因为我必须授予他们访问文件服务器的权限。
我的第一个想法是创建一个 cronjob,用于获取用户列表并创建缺失的主页。问题是,这会导致创建后的一段时间内帐户无法使用,这必然会造成麻烦。
TL;DR:在独立 NFS 服务器上自动创建用户特定目录(主目录)的最佳做法是什么?
答案1
这里有几种方法可以做到这一点,但我避免使用“最佳实践”一词。
- 计划任务 这会起作用 - 我以前做过。为什么不起作用?让它在工作时间内定期运行,并警告新用户他们的帐户将在 X 分钟后可供使用。
- 适当集中账户管理 创建一个使用 IPA 命令的脚本/界面,在安全管理服务器上添加主目录和其他内容(例如邮箱),而不是通过 GUI 手动执行。如果您有资源,我会建议使用此选项。
- 使用“首次登录”终端 创建一个专用的安全工作站(如果用户都在近距离)或服务器,供用户首次登录,使用 jordanm 的设置自动创建主目录。
答案2
解决此问题的一个方法是pam_mkhomedir
在首次登录系统时创建主目录。手册页中的描述:
The pam_mkhomedir PAM module will create a users home directory if it does not exist when the session begins. This allows users to be present in central database (such as NIS, kerberos or LDAP) without using a distributed file system or pre-creating a large number of directories. The skeleton directory (usually /etc/skel/) is used to copy default files and also sets a umask for the creation.
来自手册页的一个例子:
A sample /etc/pam.d/login file: auth requisite pam_securetty.so auth sufficient pam_ldap.so auth required pam_unix.so auth required pam_nologin.so account sufficient pam_ldap.so account required pam_unix.so password required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session required pam_unix.so session optional pam_lastlog.so session optional pam_mail.so standard