web-dev-qa-db-ja.com

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

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

49
user4069

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

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

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


説明:

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

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

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


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

usermod --unlock --expiredate '' <username>
61
Christoph Wurm

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

Sudo usermod --lock --Shell /bin/nologin username

(またはもっと簡潔に言うと、Sudo usermod -L -s /bin/nologin username。)

10
mattdm

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

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

# chage -E 0 username

ユーザーアカウント「username」はシステムでロックアウトされます。ユーザーアカウントを再度有効にするには、次の操作を行います。

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

# chage -E -1 username

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

4
miklosq

Legateの回答にコメントするのに十分な担当者がいませんが、この回答が別の使用例に役立つことを共有したいと思います。

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

2.)エンドユーザー自身がsshでログインし、Sudo /bin/su <user>がユーザーになってアプリケーションを管理します。これは、サービスアカウントに直接ログイン機能を持たせることができないという監査証跡の要件によるものです。

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


そう...

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

usermod -s /sbin/nologin <user>
エンタープライズスケジューラを壊すため、制約を満たしていません

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

解決策をありがとう!

3
user1880028

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

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

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

後でユーザーを追加する場合は、/etc/passwd(Solarisでは/etc/shadow)から/etc/passwd_deletedなどの一時ファイルにその行を保存します。

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

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

1
Bryan Field

誰かがssh_config経由でそれをやってみましたか?多分これは役立つかもしれません http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86

また、PasswordAuthenticationもnoに設定されていることを確認して、すべてのログインで強制的に公開鍵を使用するようにします。

0
icasimpan