パスワードとシャドウファイルを介してユーザーログインをブロックする方法の違いは何ですか?

パスワードとシャドウファイルを介してユーザーログインをブロックする方法の違いは何ですか?

~からhttps://unix.stackexchange.com/a/314732/674

ユーザーアカウントとは異なり、サービスアカウントには通常「適切な」ログインシェルはありません。/usr/sbin/nologinログインシェル(または過去に戻って/空/偽)。さらに、サービスアカウントは通常ロックされています。つまり、ログインできません(既存の/etc/passwdおよび/etc/shadowの場合は、次の方法で達成できます)。パスワードハッシュを*やxなどの値に設定してください。)。

ユーザーがログインするのを防ぐいくつかの方法を提供しているようです。

  • /etc/passwd: nologin, /bin/false, /bin/true ,/dev/null` シェルフィールド;

  • パスワードフィールド/etc/shadow*またはx

彼らの目的の違いは何ですか?それらはすべて同じ目的に使用されますか?

ありがとうございます。

答え1

それらは多少異なります。何らかの方法でユーザーがパスワードなしでログインできるようにする場合(たとえば、SSHや認証キーを使用する場合)、「無効な」パスワードハッシュを持つユーザーはまだログインできます。しかし、有効なシェルがなければ、これは不可能です。

一方、場合によっては、シェルなしでユーザーに特定のアクセス権を付与することができます(IMAPまたはSMTPサーバーを考えています)。これにより、「良い」パスワードハッシュを持つユーザーは、有効なログインシェルがなくてもサービスを使用できます。

答え2

どんなことをする方法が多様であっても、本当の目的があるという意味ではありません。システムユーザーと一般ユーザーの間にはわずかな微妙な違いがあります。

/usr/sbin/nologinすぐにシャットダウンしてアクセスを拒否するように設計された単純な「シェル」です。すべてのプログラムは/ etc / shellsにリストされている限りシェルで実行できます。プログラムがすぐにシャットダウンすると、ユーザーはシステムへのアクセスを失います。そのため、同様のことも/bin/false機能します。

シャドウファイルでアスタリスクをパスワードとして使用することは、Linuxがロックされたアカウントパスワードを表すのとまったく同じです。ルートとして実行すると、passwd -l usernameこの方法を使用してアカウントがロックされます。

別の方法は、有効期限を 1 に設定してアカウントの有効期限を切ることです。これは、次のコマンドを実行することで実現できます。

usermod -L -e 1 username

関連情報