web-dev-qa-db-ja.com

*と!の意味/ etc / shadowの2番目のフィールドで?

私の知る限り、/ etc/shadowの2番目のフィールドはユーザーの暗号化されたパスワードです。しかし、一部のユーザー、例えばdaemonユーザーは*フィールドで、私の環境で(Ubuntu 12.04)root have ! 現場で。

私が想定し !は、「すべてのパスワードが無効です。このユーザーではログインできません。」のような意味です。しかし、そのためのドキュメントが見つかりませんでした。

どういう意味 *および!シャドウファイルにありますか?

20
ironsand

「!」そして「!!」本質的に同じことを意味しますが、異なるツールはどちらか一方を使用します。たとえば、passwd -lは一対の感嘆符を使用します。一方、usermod -Lは1つだけを使用します。

通常、「*」の付いたアカウントにはパスワードが設定されていません(同様に、常にログインが無効になっています)。これは、パスワードハッシュエントリがまったくないアカウントとは異なります。この場合、パスワードは不要であり(多くの場合、プロンプトも表示されません)、ほとんどの場合、BADです。

ハッシュが無効な場合(「*」、「!」、「!!」はすべてハッシュです)、アカウントを効果的にロックし、そのアカウントへのログインを禁止します。多くの場合、これは/ etc/passwdファイルでアカウントのシェルを/ bin/falseまたは/ sbin/nologinのようなものに設定することでさらに促進されます

以前に有効なパスワードを設定した後でユーザーのアカウントがロックされている場合、そのパスワードハッシュの前に感嘆符が付いていることがよくあります。これにより、アカウントがロック解除されると、パスワードが再び機能し始めます。

23
Sirex