AFAIK、/etc/passwdの2番目のフィールドは次のとおりです。
- x:パスワードがシャドウにあります。
- ハッシュされたパスワード
フィールドに8文字未満の文字列を入力するとどうなりますか?誰もこのアカウントのパスワードを使用したくありません。
答え1
ファイルのパスワードハッシュフィールドが/etc/shadow
ある場合は使用しないでください。代わりに/etc/passwd
同等のフィールドを使用する必要があります/etc/shadow
。
パスワードハッシュフィールドに無効な文字列を入力すると(使用中のフィールドがinであるか/etc/shadow
outであるかにかかわらず/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キーなど)は機能する可能性があります。