passwd -dを使用する理由/いつ?

passwd -dを使用する理由/いつ?

man passwd利用可能な情報によると:

-d, --delete
 Delete a user's password (make it empty).
 This is a quick way to disable a password for an account.
 It will set the named account passwordless.

実験目的でテストユーザーを作成した後、sudo adduser testuser次のコマンドを実行しました。

  • sudo passwd -d testuser

su - testuser期待どおりにパスワードを要求せずに機能します。

そのような方法が存在する場合は、少なくともそれを実装する理由があるかどうか疑問に思います。だから

質問

  • なぜ/いつ使用するのですpasswd -dか?

答え1

次の3つの方法でアカウントを「パスワードなしで」作成できます。

  • /etc/passwdまたは/etc/shadowに空の(0サイズ)ハッシュパスワードがある可能性があります。この場合、他の禁止事項がないと、ログイン名を入力した後にパスワードプロンプトは表示されません。 (これがpasswd -dすることです)
  • 無効なハッシュパスワード(たとえば、*または!)がある可能性があります。その場合、パスワードは機能せず、パスワードプロンプトが表示されます。ログインプロンプトは、無効なログインに対しても同様に機能します。 (同様にpasswd -l、前に1つを追加するとハッシュを削除せずに実際に!無効化されます。)
  • ハッシュパスワードは、空のパスワードのハッシュ値に設定できます。この場合、パスワードの入力を求められますが、プロンプトに何も入力せずにEnterキーを押すとログインが許可されます。 (文字通りゼロサイズの空白のパスワードが有効です。)

2番目のシナリオ(有効なパスワードなし)は、ログインする意図がないアカウントに一般的です。

他の2つのケースはほとんど(常にそうではない)有用ではなく、場合によっては危険な場合があります(たとえば、セキュリティホールです)。 SSHなどのネットワークアクセスプログラムは、この状態でアカウントログインを明示的に許可しないことを選択できますが、ローカルログイン(たとえばsu)は依然として可能です。

安全でない可能性のある用途は、シェルを持つnologinアカウントです。

関連情報