SSHを含むサーバーのユーザーアカウントを完全にロックします。

SSHを含むサーバーのユーザーアカウントを完全にロックします。

可能であれば、ホームページを混乱させずに一部のユーザーアカウントをロックする必要があります。

一般的な方法は、usermod -L user公開鍵認証(通常はこのサーバーで使用されます)を使用してSSHログインを開いたままにすることです。

私はできることmv /home/user/.ssh /home/user/_sshを知っています。しかし、これは正しい方法ですか?

私は何を見逃していますか?

ベストアンサー1

このマニュアルはman usermod推奨ソリューションを提供します。

-L--lockユーザーのパスワードをロックします。これにより、!暗号化されたパスワードの前に1つが配置され、パスワードが効果的に無効になります。このオプション-pはまたはで使用できません-U

注:アカウントをロックするには(パスワードを使用してアクセスするのではなく)EXPIRE_DATEに設定する必要があります1

それから

-e--expiredate EXPIRE_DATEユーザーアカウントが無効になる日付。日付は形式で指定されますYYYY-MM-DD

EXPIRE_DATEのパラメータはアカウントの有効期限を無効にします。

それでは実際のケースに変えてみてください

usermod -L -e 1 someuser     # Lock
usermod -L -e '' someuser    # Unlock

デフォルトの有効期限を設定した場合は、/etc/default/useraddロック解除プロセスにその値(存在する場合)を含めることができます。

usermod -U -e "$( . /etc/default/useradd; echo "$EXPIRE")" someuser

cronロックされたアカウントを持つユーザーだけでなく、期限切れのアカウントを持つユーザーに対してもスケジュールされた操作は無効になります。エラーメッセージには、journalctl -u cron期限切れのユーザーのアカウント名が表示されます(この場合test2)。

Apr 30 11:47:01 pi CRON[26872]: pam_unix(cron:account): account test2 has expired (account expired)
Apr 30 11:47:01 pi cron[472]: Authentication failure
Apr 30 11:47:01 pi CRON[26872]: Authentication failure

スケジュールされたジョブはatまだ試行されていません。 (期限が過ぎると実行されるかはわかりませんが、経験上そうではないようです。)

ロックされ、期限切れのアカウントですでに実行されている他のプロセスは、影響を受けずに実行され続けます。

おすすめ記事