如何限制并发GUI登录,但允许多个SSH登录?

如何限制并发GUI登录,但允许多个SSH登录?

在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 的更多信息。

相关内容