/ etc / nologinが存在する場合、非rootユーザーにログインを許可できますか?


8

sudo特権を持つ非rootユーザーが遅延シャットダウン(shutdown +10またはその他)を実行してログアウトするとします。次に、シャットダウンが発生する前に、再度ログインしてシャットダウンをキャンセルしたいと考えています。問題はそれがあるshutdown作成し/etc/nologin、そしてloginそれはユーザーのために、このからの例外を作成することが可能です...唯一のルートは、そのファイルが存在する場合にログインすることができますか?

そうでない場合、ユーザーが遅延シャットダウンを開始し、ログインして後でキャンセルするのに最適な方法は何ですか?


一つは、おそらく使用することができshutdown nowat、回避策として、スケジューラ。
jw013、2011

回答:


14

システムが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

2

上記のGillesの回答は非常に優れていますが、「タイプ」を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

今日ライアンのルールを試してみましたが、ギルスとライアンの回答ボットには成功/デフォルトルールが「逆」になっていて、nologinはnxグループのみをブロックすることがわかりました。これが私がこのルールを実装した方法です(nxグループはnologinによってブロックされません)。

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.