シャドウ ファイルのハード リンクを作成しました。ユーザーのパスワードを削除するために、vi エディターでシャドウ ファイルを開き、暗号化されたパスワードを削除してから保存しました。シャドウ ファイルの inode 値が変更されました。次に、ユーザーのパスワードを更新すると、再びシャドウ ファイルの inode 値が変更されました。編集/更新時にシャドウ ファイルの inode が変更されるのはなぜですか?
2 に答える
VI はデータを新しいファイルに保存し、古いディレクトリ エントリのリンクを解除するか名前を変更します。ハードリンクは古いものにリンクされています。
これは、ケースの保存が失敗した場合にデータの一貫性を確保するための 2 つの方法のうちの 1 つです。
もう 1 つの方法は、古いファイルをコピーしてから上書きすることです。古いコピーの inum は異なり、新しく保存されたファイルの inum は以前と同じになります。
ファイルの書き込みを処理するコードは、ファイルが書き込まれる前に、ディスク上に存在するはずのファイル全体のコピーを作成します。ファイルがディスクに書き込まれてフラッシュされると、適切な名前(グループシャドウファイルの場合は/ etc/shadowまたは/etc/ gshadow)に名前が変更されます。
問題はデータの一貫性だけではありません。システムを使用可能にするために存在しなければならないファイルは少数であり、セキュリティファイルはその一部です。目標は、システムがクラッシュしたり、関連するコマンドが中断されたり(Ctrl-ZキーまたはSIGSTOP ...)、ファイルが安全でない状態になるような状況を回避することです。「安全でない」には「存在しない」も含まれる場合があります。ファイルの名前を原子的に変更しないと、/ etc/shadowファイルがまったく存在しない時間間隔が残る可能性があります。