当 /etc/nologin 存在时,我可以允许非 root 用户登录吗?

sus*_*att 9 shutdown users login not-root-user

假设具有 sudo 权限的非 root 用户执行延迟关闭(shutdown +10或其他)并注销。然后,在关闭发生之前,他想重新登录并取消关闭。问题是,shutdown创造/etc/nologin,并login只允许root身份登录时,该文件存在于...是有可能创造从这个异常的用户?

如果没有,让用户启动延迟关闭,然后登录并在稍后取消它的最佳方法是什么?

Gil*_*il' 15

如果您的系统使用PAM,则/etc/nologinpam_nologin模块会在存在时触发登录拒绝。

您可以跳过对pam_nologin匹配特定条件的用户的调用pam_succeed_if。例如,如果您希望adm组中的用户即使/etc/nologin存在也可以登录文本控制台,请将以下行添加到/etc/pam.d/login带有 的行之前auth requisite pam_nologin.so

auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm
Run Code Online (Sandbox Code Playgroud)


小智 9

Vesa K 版本的 Ryan Novosielski 答案对我有用,但内容如下:

/etc/pam.d/sshd
Run Code Online (Sandbox Code Playgroud)

不是:

/etc/pam.d/login
Run Code Online (Sandbox Code Playgroud)

就我而言,我只想允许 Ubuntu 14.04 LTS 下的 UID 1000 通过 SSH 登录。

# Disallow non-root logins when /etc/nologin exists.
account [success=1 default=ignore] pam_succeed_if.so quiet uid eq 1000
account    required     pam_nologin.so
Run Code Online (Sandbox Code Playgroud)


roz*_*acz 1

我不确定是否可以在/etc/nologin没有肮脏技巧的情况下覆盖创建/使用。但出于您的目的,您可以使用如下函数:

off () { 
   touch /tmp/GOING-DOWN
   sudo sh -c "sleep ${1-1} && [ -f /tmp/GOING-DOWN ] && /sbin/poweroff"
}
Run Code Online (Sandbox Code Playgroud)

重新登录后,删除该文件/tmp/GOING-DOWN将阻止关机。

编辑:添加了取消关闭的简单方法。