我被迫(呃)将几台 Linux 机器加入到一个域中。我目前正在使用 debian stable,并且正在使用我编写的连接脚本(位于https://rbmj.github.io/join.sh以供参考)。该设置使用领域和 sssd 进行所有连接魔法,并使用 pam_mkhomedir 来创建主目录。机器是 debian 稳定的。
getent passwd $USER
显示正确的 uid/gid 和主目录设置为/home/$DOMAIN/$USER
应有的样子。
问题是登录时 pam_mkhomedir.so 在正确的位置 ( /home/$DOMAIN/$USER
) 创建主目录,但登录尝试chdir()
进入/home/$USER
。
我当前使用的解决方法是符号链接/home/$DOMAIN
到/home
,其中是一个丑陋的符号链接循环,但它现在已经完成了工作。一旦我弄清楚这一点,迁移应该相当简单,因为只有一两个系统帐户,所以我可以通过脚本移动其余的帐户。
由于这是一台最近安装的 debian 稳定机器,我认为这是一个 systemd 问题,因为我相信标准登录守护进程已被 systemd-logind 或类似的 cruft 取代。我认为这是某个地方的错误,因为登录应该尝试将目录更改为 nsswitch 指示的用户正确的主目录,但我不是专家。
答案1
systemd 在这里出错的可能性极小。 Logind 不执行任何与主目录相关的操作(它负责为本地登录授予访问本地硬件的权限,而不为远程登录授予访问本地硬件的权限,这样通过 SSH 登录的人就无法偷看您的网络摄像头)。
相反,更有可能的是你没有把每件事都做对。
运行脚本后,请显示 PAM 配置文件的内容。最有可能的是,你错过了一点。
尝试禁用nscd
,以确保这不是缓存问题。
检查你的/etc/skel
;确保它不包含对 的硬编码引用/home/$USER
。