/run/nologinが存在するときにスケジュールされたシャットダウンをリモートでキャンセルできますか?

/run/nologinが存在するときにスケジュールされたシャットダウンをリモートでキャンセルできますか?

次の状況を考えてみましょう。

  1. ユーザーはsshシステムに入り、必要なタスクを実行します。
  2. shutdown次に、以下を使用する準備をします。

    sudo shutdown -h +1
    
  3. 最後に、SSHセッションを閉じます。

これ/run/nologinで作成されたため、誰もログインできませんが、問題が発生してクラッシュするssh前にシステムに戻りたいと思います。

ログインが許可されなくなった場合は、スケジュールされたシャットダウンをリモートでキャンセルできますか?

ベストアンサー1

新しい接続を確立するために「root」アカウントを使用する代わりに、ssh実際にPAMを使用して特定のユーザーまたはグループがログインできるようにすることができます。

sshd次のPAM構成は、/etc/pam.d/sshdあなたが探しているものを担当します。

このファイルを編集して使用すると、ファイルがコンピュータにある場合でも、特定のpam_succeed_if.soユーザーまたはグループがログインできるようになります。/run/nologin

pam_succeed_if.so は、認証対象ユーザーに属するアカウント属性または他の PAM エントリの値に基づいて認証の成功または失敗を決定するように設計されています。 1つの用途は、このテストに基づいて他のモジュールをロードするかどうかを選択することです。

pam_nologin.soしたがって、これを使用して、ユーザー名またはユーザーグループに基づいてどのモジュールをロードする必要があるかを検出します。

目的のテキストエディタを使用してファイルを開きます。

$ sudo vi /etc/pam.d/sshd

次の行を探してください。

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

その間に次の行を追加してください。

account  [default=1 success=ignore] pam_succeed_if.so quiet user notingroup sudo

今行は次のようになります。

# Disallow non-root logins when /etc/nologin exists.
account  [default=1 success=ignore] pam_succeed_if.so quiet user notingroup sudo
account  required     pam_nologin.so

sudoこれで、グループ内のユーザーが/run/nologin存在してもログインできます。

特定のユーザーを許可します。

account [default=2 success=ignore] pam_succeed_if.so quiet user != username

より柔軟な支払い条件が必要な場合:

man pam_succeed_if

おすすめ記事