我正在使用 CentOS 5.3 连接以使用 Kerberos 进行身份验证和使用 LDAP 获取用户信息。不幸的是,存储在 LDAP 中的所有用户的主目录是“/”。很亮!所以,这行不通。在没有访问 LDAP 的情况下,我需要弄清楚如何强制用户使用本地目录“/home/username”作为 HOME。
我已经尝试编辑 /etc/bashrc 但似乎那时设置 HOME 为时已晚。另外,我可能需要编辑用户的默认 shell,它也存储在 LDAP 中。更改本地 /etc/bashrc 似乎没有帮助,因为它甚至可能没有被加载!
那么,当使用这些组件时——Kerberos、LDAP、pam、autofs——我何时何地可以为我的用户指定环境,如果需要覆盖在 LDAP 中设置的环境?
蒂亚!!!1
警告:丑陋的入侵!最好的办法当然是更改 LDAP 服务器中的数据,省去你自己的麻烦,但这里是这样:
在 /etc/security/pam_env.conf 的末尾添加以下行:
这将覆盖用户 $HOME 变量以指向正确的目录。但是,这只是在登录后设置,因此您仍然会收到登录无法找到用户主目录的错误。丑陋黑客的第二阶段是在 /etc/profile 的末尾添加一个“cd ~”,这会将您的用户带到正确的主目录。希望在这个阶段您将能够使用自动挂载将主目录映射到正确的 NFS 服务器
我同意马克的观点,最好的办法是修改 LDAP 中的条目。
如果你不能这样做,我可以建议一些重大的黑客攻击,但可以完成工作:
不要直接对 LDAP 进行查找,而是使用nsscache从 LDAP 中提取用户数据。然后在将定期更新缓存的同一个 cron 作业中,添加一个脚本,将用户的主目录属性重写为您想要的。您也可以通过直接修改 nsscache 源来做到这一点。
您可以使用类似的方法来更改默认 shell。
这也将具有减少/主要消除对 LDAP 服务器的查询的良好副作用 :)
您是否已将 NSS 配置为直接与 LDAP 服务器通信,或者您是否正在通过代理,例如
nslcd
?如果是这样,请考虑配置代理以重写用户的主目录属性。例如,nslcd.conf
您可以声明:这是显而易见的事情。