1. 概要

このチュートリアルでは、Linuxでユーザーログインをブロックするために使用されるさまざまな方法とその違いについて説明します。

2. nologinコマンド

nologinコマンドを使用して、ユーザーがログインできないようにすることができます。 メッセージを出力し、失敗を示すゼロ以外のステータスコードで終了します。 usermodコマンドの-sフラグを使用して、ユーザーのログインシェルを変更できます。

例として、baeldungというユーザーがログインできないようにするために使用してみましょう。

$ sudo usermod baeldung -s /sbin/nologin
$ sudo su - baeldung
This account is currently not available.

ここで、 su を使用してアカウントにログインしようとすると、ログインが無効になっていることを示すエラーが表示されます。

/etc/nologin.txtファイルを変更してエラーメッセージを変更することもできます。

$ echo "Hi, logins have been disabled for your account. Please contact your system administrator for more information" | sudo tee /etc/nologin.txt
$ su - baeldung
Hi, logins have been disabled for your account. Please contact your system administrator for more information

3. falseコマンド

false コマンドは、失敗を示すゼロ以外のステータスコードを返すために使用する単純なコマンドです。 それを実行して、そのステータスコードを確認しましょう:

$ false
$ echo $?
1

falseはtrueコマンドの反対であり、常にゼロのステータスコードを返し、成功を示します

$ true
$ echo $?
0

これらをBashwhile ステートメントで使用して、コードを繰り返し実行できます。

while false; do
    echo "This code will never run!"
done

while true; do
    echo "This code will run forever!"
done

false は常に失敗を示し、 true は常に成功を示すため、最初のコードブロックは実行されません。

$ ./script
This code will run forever!
This code will run forever!
This code will run forever!
...

false コマンドの主な目的ではありませんが、 nologin コマンドの場合と同様に、ユーザーのログインを防ぐために使用できます。 ただし、falseはエラーメッセージを出力せず、すぐにシェルを終了するため、混乱が生じる可能性があります:

$ sudo usermod baeldung -s /bin/false  
$ sudo su - baeldung
$ echo $?
1

これは、前のセクションのnologinで行ったようにエラーメッセージをカスタマイズできないことを意味します。

4. passwdコマンド

passwdコマンドの-lフラグを使用して、ユーザーアカウントをロックし、ログインを防ぐことができます。

$ sudo passwd -l baeldung
passwd: password expiry information changed.
$ su - baeldung
Password:
su: Authentication failure

これで、ログインしようとすると、suはすべてのパスワードを無効として扱います。 sudo passwd-ubaeldungを使用してアカウントのロックを解除できます。 この方法は、 間違い説明メッセージを表示できないため、コマンド。

5. usermodコマンド

passwd コマンドと同様に、usermodコマンドを-Lまたは-Uフラグとともに使用して、ユーザーをロック/ロック解除できます。アカウント:

$ sudo usermod -L baeldung
$ su - baeldung
Password: 
su: Authentication failure
$ sudo usermod -U baeldung
$ su - baeldung
Password: 
$ echo $? # Success
0

6. 結論

この記事では、Linuxでユーザーのログインをブロックするために使用されるさまざまなコマンドとその違いについて学びました。 通常、 nologin コマンドは、アカウントがロックされた理由を説明するカスタムメッセージを設定できるため、falsepasswdなどの他の方法よりも優先されます。