パスワードログインを防ぐために、Linuxで/etc/passwdのパスワードを*に設定するのは安全ですか?

パスワードログインを防ぐために、Linuxで/etc/passwdのパスワードを*に設定するのは安全ですか?

AFAIK、/etc/passwdの2番目のフィールドは次のとおりです。

  • x:パスワードがシャドウにあります。
  • ハッシュされたパスワード

フィールドに8文字未満の文字列を入力するとどうなりますか?誰もこのアカウントのパスワードを使用したくありません。

ベストアンサー1

ファイルのパスワードハッシュフィールドが/etc/shadowある場合は使用しないでください。代わりに/etc/passwd同等のフィールドを使用する必要があります/etc/shadow

パスワードハッシュフィールドに無効な文字列を入力すると(使用中のフィールドがinであるか/etc/shadowoutであるかにかかわらず/etc/passwd)、パスワード認証は無効になります。しかし、標準の長さではない文字列を入れることは予期しないことです。パスワードハッシュ機能で使わない文字を使うほうがいいと思います。非標準長のパスワードハッシュ文字列は、パスワードファイルを一括編集するときにコピー/貼り付けエラーと見なすことができますが、標準セット外の文字を使用することは明らかに意図的です。

passwd -l意味が変わったことも知っておくべきです。

2008年8月以前は、このpasswd -l <username>コマンドは通常次のようになりました。

OLDPW="$(grep ^<username>: /etc/shadow | cut -d : -f 2)"
echo "<username>:!$OLDPW" | chpasswd -e
usermod --expiredate 1 <username>

具体的には、ソースパッケージpasswdのコマンドがshadowこのタスクを実行します。

8月22日から「アカウントロック」から「パスワードのみロック」に順番が変更されました。つまり、変更されたコマンドは次のような操作のみを実行します。

OLDPW="$(grep ^<username>: /etc/shadow | cut -d : -f 2)"
echo "<username>:!$OLDPW" | chpasswd -e

したがって、以前と同様に、暗号化されたパスワードの前に感嘆符が表示されますが、アカウント全体が無効になっているとは表示されません。

ソースパッケージは、shadow多くのデプロイメントコマンドのアップストリームソースであったため、passwd多くのデプロイメントで変更が発生しました。たとえば、RHEL 5には以前の動作がありますが、RHEL 6は新しい動作に従います。

Busyboxにはpasswdそのコマンド用の別々のコードベースがあるため、どのような動作に従うのかわかりません。BusyBoxのドキュメントをすばやく検索します。パスワード/アカウントの有効期限機能がまったく含まれていないようです。

ただし、実行時にpasswd -l <username>そのユーザーに対してSSHキー認証が無効になっている場合(以前の動作など)、パスワードハッシュ機能が生成できない値に設定してパスワードをロックできます。たとえば、次のようになります。

echo "username:!" | chpasswd -e

これは、ユーザーアカウントを「パスワードベースの認証のみ」状態に設定する非常に一般的な方法です。

比較的一般的な慣例は、ロックされたパスワードを表すために感嘆符(単独で、またはパスワードハッシュフィールドの以前の内容の接頭辞)を使用し、アスタリスク(パスワードハッシュフィールドの内容全体を置き換えます)を使用して表示するようです。ロックされたパスワード。アカウントをシステムアカウントとして使用しないでくださいpasswd -u。ただし、パスワードハッシュフィールドに無効な値が含まれていても、他の認証メカニズム(SSHキーなど)は機能する可能性があります。

おすすめ記事