sus*_*att 9 shutdown users login not-root-user
假设具有 sudo 权限的非 root 用户执行延迟关闭(shutdown +10或其他)并注销。然后,在关闭发生之前,他想重新登录并取消关闭。问题是,shutdown创造/etc/nologin,并login只允许root身份登录时,该文件存在于...是有可能创造从这个异常的用户?
如果没有,让用户启动延迟关闭,然后登录并在稍后取消它的最佳方法是什么?
Gil*_*il' 15
如果您的系统使用PAM,则/etc/nologin该pam_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)
我不确定是否可以在/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将阻止关机。
编辑:添加了取消关闭的简单方法。