Linux システムのパスワード変更失敗イベント

1. イベントの説明

  ある業務システムでモバイルクラウドホストを利用しておりますが、モバイルクラウドに埋め込まれたパスワード管理に関するPgaプロセスの誤操作により、ページ上のパスワード変更ができなくなり、東モバイルクラウドホストのWeb端末ログインができなくなってしまいました。変更できませんでした。パスワード エラーの数が最も多く、ログインできませんでした。ホストを再起動してパスワードを変更できますが、シングル ユーザー モードでパスワードを変更すると、次のときにエラーが報告されます。 passwd を実行しています:モジュールが不明です

ここに画像の説明を挿入

デバッグ後、次の図に示すように、「認証トークン操作エラー」というエラーが報告されます。

ここに画像の説明を挿入

2. 分析と処理

1) ログイン ログの場合、最初に確認する必要があるログは /var/log/secure または Audit で、次に補助メッセージ ログが一緒に分析されます。次の図は、安全なログを示しています。

ここに画像の説明を挿入
  上の図に示すように、pam 関連のレポート: /usr/lib64/security/pam_passwdqc.so モジュールの読み込みエラー、ログインに関連するファイルは /etc/pam.d/ の下にあります: ログイン、パスワード、passwd-auth、 system- これらは認証です。関連する経験から、次の図に示すように、一部はログイン ファイルで設定されており、実際にはサイトの system-auth ファイルで設定されていることがわかります。

ここに画像の説明を挿入
2) passwdqc.so モジュールに関連する設定項目に注意してください。

ここに画像の説明を挿入
3) 変更してエラーを報告した後、passwd コマンドのみでエラーを報告し、システム内の関連ファイルを確認する必要があります。

ここに画像の説明を挿入
4) /etc/passwd および /etc/shadow、/etc/group、/etc/gshadow ファイルの特別な属性を確認し、lsattr を実行して確認すると、両方のファイルに i 属性があり、属性の説明は次のとおりであることがわかります。 :

ここに画像の説明を挿入
を実行しcharrt -i /etc/passwd /etc/shadow、 i 属性制限を削除し (一部はアクセス許可が設定されています)、 passwd コマンドを再度実行して復元します。

ここに画像の説明を挿入

5) 次に、シングルユーザー モードを終了し、再起動して新しいパスワードでシステムに入ります。

6) 関連する経験によると、ルート パーティションがいっぱいで、passwd ファイルとシャドウ ファイルが同期していません (pwconv コマンドを実行して、比較のためにパスワード プロジェクション モードに入り、前者を後者にプロジェクションし、 passwd ファイルに基づくシャドウ ファイル)、inode の枯渇(df - i チェック、ほとんどの場合、生成される一時的な小さなファイルが多すぎるため、次のコマンドを実行して不要な一時ファイルと 0 バイトのファイルを削除できsudo find /tmp -typef-exec rm {}\;ますsudo find /home -type f-size 0 -exec rm \;

7) シャドウ ファイルのパスワード文字列を直接変更してみることもできます。

  • 方法 1
    perl -e 'print crypt("password","'$1\S2BDxrkQcS")."n""
    注: 2BDxrkQc はシャドウ内のソルト (S3) の内容です。ソルトをランダムに生成したい場合は、方法 2 を使用できます
  • 方法二
    echo"password"openssl passwd-1-sat$(</dev/urandom tr -dc "T:alnum:'I head -c 32) -stdin

8) 補足:

centos がユーザー アカウント認証の失敗回数を制限する場合は、モジュールに注意してください。centos6 以降の場合は、pam_tally.so の代わりに pam_tally2.so モジュールを使用する必要があります。
ここに画像の説明を挿入

3. 付録: パスワードのリセットのレビュー

3.1 シングルユーザーモード

ブート インターフェイスを再起動し、「e」キーを押して GRUB 編集インターフェイスに入り、linux16 行を見つけて最後に rd.break を追加し、ro を rw に変更してから、Ctrl+x を実行してシングル ユーザー モードで起動します。

ここに画像の説明を挿入
centos7: 'ro' を 'rw init=/sysroot/bin/sh' に変更し、console=tty0 console=ttyS0' を削除します。完了後に ctrl+x を押してシングルユーザー モードに入ります。
ここに画像の説明を挿入

入力後、次のコマンドを実行して /sysroot を読み取り/書き込みモードに再マウントし、ルート ディレクトリを /sysroot に切り替えます。

mount -o remount, rw /sysroot  
chroot /sysroot
sh-4.2# passwd root  #或echo "password"| passwd --stdin admin
sh-4.2# touch /.autorelabel
sh-4.2# exit
exit

方法 2: linux16 行を見つけ、「ro」を rw init=/sysroot/bin/sh に置き換え、Ctrl+x を実行してシングルユーザー モードに入ります。

Ubuntu の場合: Linux/boot/vmlnuz-4.2.0-27-generic ...ro リカバリ nomodeset を検索し
、リカバリ nomodeset を削除し、quiet Splash rw init=/bin/bash を追加し、F10 キーを押して開始します。

ここに画像の説明を挿入

注: Ubuntu、カーネルの起動時に「a」または↓キーを押し、GNU モードに入り、Ubuntu の詳細オプションを選択します。Enter を押し、リカバリモードを選択し、「e」を押して編集モードに入り、「ro console=ttyS0recoverynomodeset」を見つけます。 (ubuntu16.04 の場合は、「ro console=ttyS0 single nomodeset)」フィールドです。
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/ximenjianxue/article/details/129171718