私はこのコマンドを使用してユーザーのログインを防ぐことができると著者が言ったビデオを見ました。
useradd -ms `which false` u2
以下は私のテストです。
[root@192 ~]# tree -dL 1 /home
/home
├── u1
└── user1
2 directories
[root@192 ~]# useradd -ms `which false` u2
[root@192 ~]# tree -dL 1 /home
/home
├── u1
├── u2
└── user1
3 directories
[root@192 ~]# passwd u2
Changing password for user u2.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@192 ~]# logout
[u1@192 ~]$ whoami
u1
[u1@192 ~]$ logout
[user1@192 ~]$ whoami
user1
[user1@192 ~]$ su - u2
Password:
[user1@192 ~]$ whoami
user1
[user1@192 ~]$ su - u2
Password:
Last login: Tue Apr 19 11:22:01 PDT 2022 on pts/0
[user1@192 ~]$ whoami
user1
[user1@192 ~]$
私の考えにはエラーがなく、ユーザーが正常にログインできるような気がします。ご覧のとおり、もう一度ログインしようとすると、最後のログイン時間までお知らせします。ユーザーが接続するとすぐに接続が切断されるだけです。これは本当ですか?以下で正確に何が起こりましたか?
答え1
オプション-s
(useradd
マニュアルページ)例:
-s
、--shell SHELL
ユーザーのログインシェル名。
そして、`which false`
コマンドへのパスだけが与えられると、false
シャットダウンのみが行われます(エラーは発生しますが関係ありません)。
したがって、ほとんどの場合、ユーザーはうまく機能します。ただシェルが実行されていないため、実際には何もできません。
おそらくそうすべきでしょう。いいえパスワードを作成してから、次のものを使用してくださいusermod -L u2
。マニュアルページ)アカウントパスワードのロックまたはchage
(マニュアルページ)使用したい操作に応じてアカウントの有効期限が切れます。
/etc/shadow
(カーネルに関する限り、パスワードをロックしたり、アカウントが期限切れになるようにすることはまったく何もしません。ログインなどに関連するさまざまなツールやライブラリだけです。その内容をご覧ください。)