Linuxでルートパスワードを変更した後、いくつかの例外が見つかりました。ルートパスワードを変更した後に入力してみると、ls -al /etc/ | grep shadow
次のようになります。
-r-------- 1 root root 653 Mar 9 2018 gshadow
-r-------- 1 root root 800 Jul 25 06:43 shadow
-r-------- 1 root root 796 Jul 25 06:43 shadow-
しかし、時には結果が上記と異なる場合があります。
-r-------- 1 root root 653 Mar 9 2018 gshadow
-r-------- 1 root root ? Jul 25 06:43 nshadow
-r-------- 1 root root ? Jul 25 06:43 shadow
-r-------- 1 root root ? Jul 25 06:43 shadow-
私は例を示しているだけで、これらのファイル(nshadow、shadow、shadow-)の正確なサイズを覚えていません。
私が調べたところ、/etc/nshadow
パスワードが変更されるとpasswdによって記録され、passwdの名前が変更されます/etc/nshadow
。/etc/shadow
しかし、これが正しいかどうかはわかりません。
とにかく、これは何ですか/etc/nshadow
?このファイルが生成されるのはなぜですか?私に理由を教えてください:(
答え1
はい、このpasswd
コマンドは最初にファイルの変更を完全/etc/shadow
に書き、nshadowファイルが実際にディスクに書き込まれていることを確認してから名前を/etc/nshadow
変更します。fsync()
/etc/nshadow
/etc/shadow
/etc/shadow
これは、できるだけ短い時間でもファイルが不完全になる可能性を排除するために行われます。 POSIX仕様では、単一のファイルシステム内でファイルの名前変更操作を実行する必要があることが示されています。原子つまり、他の操作では、名前変更操作は「まだ開始されていない」または「完全に完了しました」としてのみ処理する必要があります。
このコマンドを使用して古い非シャドウパスワードファイルをシャドウ形式に変換すると、pwconv
コマンドも作成されます/etc/npasswd
。/etc/nshadow
一部のバージョンでは、pwconv
システム管理者がこれらのファイルを手動でその場所に移動する必要がある場合があります。
システムに存在する場合は、/etc/nshadow
過去に実行されたコマンドの残りの部分でも、一部のパスワード変更操作の終わりにシステム呼び出しが失敗して存在する可能性があります。これらのエラーは、ファイルシステムの破損やその他の問題が発生する可能性があることを示します。pwconv
rename("/etc/nshadow", "/etc/shadow")
ファイルのタイムスタンプがあれば、nshadow
そのJul 25 06:43
時点でシステムで何が起こったのか知りたいかもしれません。解決された問題はありますか?それともpwconv
何らかの理由でこのコマンドを実行した人はいますか?
一部の自動化ツールを使用してルートパスワードを変更する場合は、自動化ツールが実際に何をしているのかを正確に知りたい場合があります。たぶんpwconv
何らかの理由で動作するかもしれません。