我有一个计算机房,使用 libpam-pgsql 和 libnss-pgsql2 进行用户身份验证。目前,该系统与 Debian 8 客户端运行良好。
我想升级,并尝试设置 Debian 10 客户端以使用相同的设置,但它不起作用。
getent、id 和身份验证过程本身可以工作,但我无法获得 shell 或使用 sddm 的图形会话。使用 ssh 连接到 Debian 10 客户端之一,该客户端的用户存储在 PostgreSQL 数据库中,它会显示 MOTD(当天消息)和上次登录时间,但仅此而已。没有 shell,没有提示。以 root 身份从另一个终端运行 ps,我可以看到远程用户的 bash 进程,但用户无法执行任何需要交互的操作。
作为 root,我可以运行一些不需要 tty 的东西,例如
sudo -u 285803 touch /tmp/testfile
(285803 是存储在 postgresql 数据库中的用户),而且它可以工作。文件在那里,属于正确的用户和正确的组。
journalctl 显示:
oct 16 15:01:23 sala-puesto99 systemd-logind[1497]: Could not connect to database
oct 16 15:01:23 sala-puesto99 sshd[1793]: pam_systemd(sshd:session): Failed to create session: No such file or directory
当非 root 用户尝试访问 shadow DB 时,会出现“无法连接到数据库”的信息。我不知道这是怎么回事,因为 systemd-logind 是以 root 身份运行的。“没有这样的文件或目录”不可能与主路径有关,因为该路径存在且属于用户。
我认为它一定与 tty 访问、pam_systemd 或 systemd-logind 有关。
请问有什么帮助吗?
答案1
我会自己回答。也许这对其他人有用。
我发现当 nscd 运行时登录有效。
当 nscd 运行时,我可以完美登录。当 nscd 未运行时,它不起作用。
有一篇提到了类似的问题:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=279581这是 2004 年的一个错误,但补丁似乎是针对以前的版本 (1.3.1) 编写的,不能应用于当前版本 (1.4)