在Ubuntu桌面上,包含多个帐户,我想限制GUI登录数量。
在任何时候,应该只有一个帐户可以使用本地 GUI 登录。 (第一个帐户必须先注销,其他帐户才能登录。当计算机被某个帐户锁定时,同一帐户可以解锁计算机以继续现有会话,但不能再次登录以创建另一个会话。)
同时,任何帐户都应该能够通过 SSH 登录。
我尝试添加
* - maxsyslogins 1
到文件“/etc/security/limits.conf”
并发 GUI 登录被阻止,但它也完全阻止 SSH 登录。
有办法实现这个目标吗?
答案1
session required pam_limits.so
最简单的方法是从 中注释掉/etc/pam.d/sshd
。
这将在 ssh 登录期间跳过限制。请注意,您指定的任何其他限制也不适用。
另一种方法是pam_exec.so
在 GUI 的配置中运行脚本,该脚本将出现在etc/pam.d
目录中。您可以检查用户当前是否正在使用 GUI,然后根据结果允许或拒绝登录。limits
如果存在其他限制,这将允许跨所有类型的登录工作。
它看起来像这样。下面的代码和更改未经测试。
#!/bin/bash
if [ $(ls /tmp/.X11-unix/ | wc -l) -gt 0 ]; then
exit 1
else
exit 0
fi
将以下行添加到 GUI 的 pam 配置中。对于 gnome,它是/etc/pam.d/gdm-password
。不确定其他人的情况。
auth [success=ok default=die] pam_exec.so /path/to/script
查看这里有关 PAM 的更多信息。