アカウントを完全に無効にするにはどうすればよいですか?


48

アカウントを完全に無効にするにはどうすればよいですか?passwd -lパスワードを使用してアカウントにログインすることは誰にも許可されませんが、秘密/公開鍵を介してログインすることはできます。アカウントを完全に無効にするにはどうすればよいですか?クイックフィックスとして、ファイルの名前をに変更しましたauthorized_keys_lockme。別の方法はありますか?


3
最終的には再び有効にする予定ですか?システムのロックダウン?そうでない場合は、単にアカウントを削除します。
ケン

回答:


59

による正しい方法usermod(8)は次のとおりです。

usermod --lock --expiredate 1970-01-02 <username>

(実際には、への引数--expiredateは、形式の現在の日付より前の任意の日付にすることができますYYYY-MM-DD。)


説明:

  • --lockユーザーのパスワードをロックします。ただし、他の方法(公開鍵など)によるログインは引き続き可能です。

  • --expiredate YYYY-MM-DD指定された日にアカウントを無効にします。man shadow 51970-01-01によると、あいまいな値であり、使用されません。

私は自分のマシンでこれをテストしました。このコマンドを実行した後、パスワードまたは公開キーを使用したログインはできません。


後でアカウントを再度有効にするには、次を実行します:

usermod --unlock --expiredate '' <username>

7
/ etc / shadow expirationフィールドを0に設定するため、1970-01-01を使用しないでください。shadow(5)値0は、有効期限のないアカウントまたは有効期限として解釈されるため、使用しないでください。 1970年1月1日。usermod
Marcus Maxwell 14

4
この操作を逆にする方法も提供できれば素晴らしいと思います。usermod --unlock --expiredate '' usernameそれを行うように見えます。
ボブ14年

3
@MarcusMaxwellが書いたことに追加:のmanページはusermod言う:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
なぜ--expiredate 1それだけでは不十分ですか?
トーマスジェンセン

しかし、sudo su username別のアカウントを使用して動作するようです。
xuhdev

10

パスワードをロックし、シェルをに変更します/bin/nologin

sudo usermod --lock --shell /bin/nologin username

(または、より簡潔に、sudo usermod -L -s /bin/nologin username。)


「シェルを/ bin / nologinに変更する」方法

5
@mattdmこれは完全な解決策ではありません。ユーザーは実行するコマンドを指定できるためです。たとえばssh username@hostname /bin/bash、デフォルトのシェルに関係なく、ユーザーにbashプロンプトを表示します。
プネヘヘ

4
@phunehehe —試したことはありますか?ログには、「シェル/ bin / nologinが存在しないため、ユーザー[ユーザー名]は許可されていません」と表示されます。
mattdm

2
私の知る限り、無効なシェルの動作は実際には文書化されていません。一方、マニュアルページには、パスワードが先頭にある場合は!! Linuxでは、アカウントはロックされたものとして扱われますが、実際には機能しません。したがって、とにかく、ドキュメントと現実は近似一致にすぎません。:)
mattdm

2
sudo chsh -s /bin/nologin/etc/passwd手で編集するよりも良いでしょう。また、一部のシステムでは、/sbin/nologinです。
ミケル

3

別の簡単な方法を次に示します。期限切れのユーザーアカウントを設定できます。これにより、アカウントのパスワードベースのログインとsshキーベースのログインの両方が防止されますが、パスワードは変更されませ

アカウントをロックするには:

# chage -E 0 username

ユーザーアカウント 'username'はシステムでロックアウトされます。ユーザーアカウントを再度有効にするには、次の手順を実行します。

アカウントのロックを解除するには:

# chage -E -1 username

ユーザーアカウント 'username'は、以前と同じパスワードを使用してシステム再度有効になります。'chage'バイナリは、Red Hat Linuxのshadow-utilsパッケージ、またはDebian Linuxのpasswdパッケージの一部です。


3

Legateの答えにコメントするのに十分な担当者がいませんが、この答えが別のユースケースに役立ったことを共有したいと思いました。

1.)問題のアカウントは、エンドユーザーアカウントではなく、アプリケーションを実行しているローカルサービスアカウントです。

2.)エンドユーザーが自分でsshしsudo /bin/su <user>、サービスアカウントが直接ログインできない監査証跡要件により、ユーザーになり、アプリケーションを管理します。

3.)サービスアカウントは、(有効なシェルを持っている必要があり/bin/bash、ない/sbin/nologinエンタープライズスケジューリングプラットフォーム(ローカルルートとして、エージェントの実行が)することができなければならないので、)su - <user>と持っていないsu -s /bin/bash <user>、完全なシェルがないという能力を、リモートジョブを実行するために必要とされます複数のサーバーとデータベースを含む大規模なバッチ操作用。


だから...

passwd -l <user>
公開鍵認証はPAMをバイパスし、直接ログインを許可するため、制約を満たしません。

usermod -s /sbin/nologin <user>
エンタープライズスケジューラが破損するため、制約を満たさない

usermod --lock --expiredate 1970-01-01 <user>
これが私たちの勝者です。リモートログインは無効になっていますがsu <user>、他のユーザーも同様にrootができるsudoため、スケジューラが適切に機能し、承認されたエンドユーザーが必要に応じてターゲットサービスアカウントになります。

解決策をありがとう!


1

完全に削除するには、を使用しますuserdel

アカウントを削除すると、そのユーザーIDがファイルシステムでどこかで使用され、同じユーザーIDでアクセスした場合、新しいユーザーがそれらのファイルの所有権を継承するリスクがあることに注意してください。

削除されたユーザーが所有しているファイルの所有者を変更する必要があります。

ユーザーを後で追加し直したい場合は、その行を/etc/passwd(およびSolaris上で/etc/shadow)などの一時ファイルに保存します/etc/passwd_deleted

そのように追加して戻すと、同じユーザーIDと同じパスワード(上記のファイルのいずれかで暗号化されます)を使用できます

免責事項:私は自分でUNIXを学んだので、ユーザーを一時的に無効にするより良い方法があれば驚かないでしょう。実際、私があなたが話している秘密/公開鍵が何であるかさえ知りません。またfind、その所有者のユーザーIDを持つファイルを検索するために使用できるコマンドがあると確信しています


1
google authorized_keysまたはこのeng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.htmlを読んでみてください。基本的にパスワードを使用する代わりに、そのファイルにpublucキーを入れ、sshで接続すると自動的にログインします公共の一つは、あなたの現在の秘密鍵と一致した場合

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.