听起来可能与我在使用 NIS 时遇到的问题相同,我在启动后一天左右都无法登录。为了深入了解它,我必须:
- strace -f gdm
- 发现它的 gdm-session-worker 子从 dbus-daemon 收到 FileNotFound 错误
- 用 strace 发现 dbus-daemon 只是从另一个 UNIX 域套接字获取它
- 使用 sudo ss -anp 从 systemd-logind 中查找
- strace -s1000 找到它,就在它查看 yp 绑定文件之后但在它使用 FileNotFound 执行 sendmsg 之前,它得到:
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = -1 EAFNOSUPPORT (Address family not supported by protocol)
......想想“嗯,这到底怎么会失败?” 并尝试使用 Google 搜索“logind nis”。显然,通过网络查找用户组或登录在此处所做的任何事情是不安全的,至少在没有一些单独的锁定守护程序的情况下是不安全的。你可能认为它被认为足够重要,值得一个合理的错误消息,但我想这可能是 nscd 或 nss-nis 或其他东西的错。从那里开始,一帆风顺:
https://wiki.archlinux.org/index.php/NIS#Attention_on_Systemd_V235_since_10/2017_(and_V239_since_06/2018)
...然后调整他们的答案:
sudo mkdir /etc/systemd/system/systemd-logind.service.d/
sudo tee /etc/systemd/system/systemd-logind.service.d/open_network_interface.conf <<EOF
[Service]
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6
IPAddressAllow=any
EOF
sudo systemctl daemon-reload
sudo systemctl restart systemd-logind
该 wiki 上关于 IPAddressAllow=any 不覆盖默认值的警告似乎不适用于今天的 Debian Buster。您会认为只需执行守护程序重新加载,但不是。nscd 也被列为那里的解决方案,但我们已经安装了它,我尝试在之前立即登录不同的 VT 并保持登录状态 - 没有骰子。据推测,它有时会在一天或其他任何时间后起作用。