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


8

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

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


可以shutdown nowat调度程序用作一种解决方法。
2011年

Answers:


14

如果您的系统使用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

2

吉尔斯的上述回答非常好,但请注意,您必须将“类型”与pam_nologin.so的类型匹配。例如,在我的RHEL5系统上:

account [default=1 success=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so

...如果我使用auth,则按照其他要求,它将无法正常工作。


2

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

/etc/pam.d/sshd

不:

/etc/pam.d/login

就我而言,我只想允许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

1

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

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

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

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


0

我今天尝试了Ryan的规则,发现Gils和Ryan的答案机器人具有成功的/默认规则“颠倒了”,nologin仅阻止nx-group。这就是我实施此规则的方式(nlog组没有被nologin阻止)。

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.