最悪の種類のパスワードは、弱いパスワードではなく、まったくパスワードがないことです。システム管理者として、すべてのユーザーアカウントに強力なパスワードがあることを確認する必要があります。この簡単なチュートリアルでは、Linuxでパスワードが空のユーザーアカウントを見つける方法について説明します。
トピックに入る前に、シャドウを簡単に要約しましょう。 ファイルとその目的。
シャドウパスワードファイルとは
RHELシステムでは、ユーザーパスワードはハッシュ化され、/etc/shadow
という安全なファイルに保存されます。 。シャドウパスワードファイルには、ユーザー認証とユーザーアカウントのパスワードエージングの詳細が含まれています。
シャドウパスワードファイルはroot
が所有しています ユーザーであり、スーパーユーザーのみが読み取ることができます。次のコマンドを使用して、シャドウファイルの所有権と権限を確認できます。
# ls -l /etc/shadow ---------- 1 root root 618 Apr 7 07:52 /etc/shadow
シャドウファイルのサンプル行の一般的な構造を以下に示します。
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
ご存知かもしれませんが、シャドウファイルには9つのフィールドがあります コロンで区切られます。
各フィールドを簡単に見てみましょう。
- ファイル1(ログイン名) -これには、
passwd
に表示されるログイン名(user1)が含まれます ファイル。 - ファイル2(暗号化されたパスワード) -このフィールドには、ユーザーのハッシュ(暗号化)パスワードが含まれています。このファイルの先頭に感嘆符(!)が1つある場合は、ユーザーアカウントがロックされていることを意味します。このフィールドが空の場合、ユーザーはパスワードを持っていません。
- 提出済み3(最終変更) -このフィールドには、パスワードが最後に変更されたUnixエポック(つまり、Unix時間-1970年1月1日00:00:00 UTC)からの日数が表示されます。このフィールドに0が含まれている場合、ユーザーは次回のログイン時にパスワードを変更する必要があります。
- 提出済み4(最小) -このフィールドには、ユーザーがパスワードを変更できるようになるまでに経過する必要のある最小日数(分日)が表示されます。このファイル値は
chage
で変更できます-m
を使用したコマンド オプション。 - フィールド5(最大) -ユーザーパスワードの有効期限が切れるまでのパスワードの有効期間の最大日数(maxdays)を表示します。 filedが0の場合、この機能が無効になっていることを意味します。このフィールドの値は
chage
で変更できます-M
を使用したコマンド オプション。 - 提出6(警告) -パスワードの有効期限が切れる前に、ユーザーがパスワードの変更に関する警告を受け取る日数(警告日)を示します。この値は
chage
で変更できます-W
を使用したコマンド オプションまたはpasswd
-w
を使用したコマンド オプション。 - フィールド7(パスワードの有効期限) -ユーザーが期限切れのパスワードでログインできる最大許容日数を定義します。これは
chage
を使用して変更できます-I
を使用したコマンド フラグまたはpasswd
-i
を使用したコマンド フラグ。 - フィールド8(アカウントの有効期限) -ユーザーアカウントが期限切れになり、使用できなくなるUNIX時間からの日数を定義します。このフィールドの値は、
chage
を使用して変更できます-E
を使用したコマンド オプション。 - フィールド9(予約済み) -このフィールドは将来の使用のために予約されています。
上記のように、暗号化されたパスワードは、シャドウパスワードファイルの各エントリの2番目のフィールドのユーザー名の直後に保存されます。
したがって、シャドウファイルの2番目のフィールドが空の場合、ユーザーにはパスワードがありません。パスワードなしのすべてのユーザーアカウントを見つける例を示しましょう。
Linuxでパスワードのないすべてのユーザーアカウントを検索する
パスワードのないすべてのローカルユーザーアカウントを検出するには、次のコマンドをroot
として実行するだけです。 ユーザー:
# awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
出力例:
ostechnix has empty password!. Please set a strong password ASAP!!
getent
を使用することもできます grep
と組み合わせたコマンド およびcut
Linuxでパスワードなしのローカルユーザーアカウントを識別するコマンド。
# getent shadow | grep -Po '^[^:]*(?=::)'
または、
# getent shadow | grep '^[^:]*::' | cut -d: -f1
上記のすべてのコマンドは、空のパスワードを持つローカルユーザーアカウントのみを一覧表示します。システムアカウントと空のパスワードを持つユーザーアカウントの両方を一覧表示する場合は、を実行します。
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
または、
# getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
特定のパスワードなしのユーザーアカウントを見つける
上記のコマンドは、パスワードを持たないすべてのローカルアカウントとシステムアカウントを一覧表示します。 passwd
を使用して、特定のユーザーアカウントのパスワードステータスを確認することもできます。 -S
を使用したコマンド フラグ。
# passwd -S ostechnix
出力例:
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
passwd
コマンドは、指定されたユーザーアカウントのパスワードステータスを示します。可能な値は次のとおりです。
- LK -ユーザーアカウントはロックされています。
- NP -ユーザーアカウントにはパスワードがありません。
- PS -ユーザーアカウントには使用可能なパスワードがあります。
ヘッズアップ: Debianベースのシステムでは、パスワードのステータスは Lとして示されます。 、 N 、 P それぞれ。
Linuxでのユーザーパスワードの設定
パスワードなしのユーザーとしてログインできます。まったく問題ありません。ただし、お勧めしません!大文字、小文字、特殊文字、数字を含む8文字以上の強力なパスワードを設定する必要があります。
Linuxでユーザーアカウントにパスワードを設定するには、passwd
を使用します root
としてのコマンド 以下のようなユーザー。
rootユーザーとして:
# passwd ostechnix
ostechnixを自分のユーザー名に置き換えます。
次に、passwd
を使用してユーザーアカウントのパスワードステータスを確認します。 コマンド:
# passwd -S ostechnix
出力例:
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
Linuxでユーザーアカウントをロックする
場合によっては、空のパスワードでユーザーアカウントをロックしたいだけです。その場合は、最初に上記のようにパスワードが空のユーザーを見つけ、passwd
を使用してユーザーをロックします -l
を使用したコマンド root
としてフラグを立てます 以下のようなユーザー。
# passwd -l ostechnix
出力例:
Locking password for user ostechnix. passwd: Success
次に、ユーザーアカウントのステータスを確認します:
# passwd -S ostechnix
サンプル出力:
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
見る?ユーザーはロックされています。彼はもうシステムにログインできません。
usermod
を使用することもできます -L
を使用したコマンド (大文字のL)ユーザーをロックするフラグ。
# usermod -L ostechnix
Linuxでユーザーアカウントのロックを解除する
Linuxでパスワードなしのユーザーのロックを解除するには、passwd
のいずれかを使用します コマンドまたはusermod
-p
を使用したコマンド root
として ユーザー。
# passwd ostechnix
パスワードを2回入力して、パスワードのロックを解除します。
usermod
を使用して空のパスワードでユーザーのロックを解除する コマンドは使用できません。usermod -p
を使用してパスワードを設定する必要があります ユーザーのパスワードのロックを解除します。
# usermod -p <password-here> ostechnix
結論
このチュートリアルでは、シャドウパスワードファイルとは何か、およびLinuxでのこのファイルの目的について説明しました。次に、Linuxでパスワードを持たないすべてのユーザーアカウントを検索するためのさまざまなコマンドについて説明しました。最後に、ユーザーにパスワードを設定する方法と、Linuxでユーザーをロックおよびロック解除する方法を学びました。