最悪の種類のパスワードは、弱いパスワードではなく、まったくパスワードがないことです。システム管理者として、すべてのユーザーアカウントに強力なパスワードがあることを確認する必要があります。この簡単なチュートリアルでは、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でユーザーをロックおよびロック解除する方法を学びました。