ルートパスワードを変更した後でも/etc/nshadowファイルがまだ存在するのはなぜですか?

ルートパスワードを変更した後でも/etc/nshadowファイルがまだ存在するのはなぜですか?

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過去に実行されたコマンドの残りの部分でも、一部のパスワード変更操作の終わりにシステム呼び出しが失敗して存在する可能性があります。これらのエラーは、ファイルシステムの破損やその他の問題が発生する可能性があることを示します。pwconvrename("/etc/nshadow", "/etc/shadow")

ファイルのタイムスタンプがあれば、nshadowそのJul 25 06:43時点でシステムで何が起こったのか知りたいかもしれません。解決された問題はありますか?それともpwconv何らかの理由でこのコマンドを実行した人はいますか?

一部の自動化ツールを使用してルートパスワードを変更する場合は、自動化ツールが実際に何をしているのかを正確に知りたい場合があります。たぶんpwconv何らかの理由で動作するかもしれません。

関連情報