2012-04-23 25 views
4

我爲影子文件創建了一個硬鏈接。爲了刪除用戶的密碼,我在vi編輯器中打開了shadow文件,並刪除了加密的密碼,然後保存。陰影文件的inode值已更改。然後我更新了用戶的密碼,並再次更改了影子文件的inode值。爲什麼編輯/更新影子文件的索引節點會更改?爲什麼影子文件的inode值會改變?

+0

我不認爲這個問題與編程有關。 – glglgl 2012-04-23 11:16:56

回答

2

VI將數據保存在新文件中,然後取消鏈接或重命名舊的diretory條目。硬鏈接與舊鏈接相關。

這是確保保存數據一致性的兩種方法之一。

另一種方法是複製舊文件,然後覆蓋它。舊副本將有不同的inum,並且新保存的文件將與以前相同。

0

處理文件寫入的代碼會在寫入文件之前創建整個文件的副本,因爲它應該存在於磁盤上。一旦文件寫入磁盤並刷新後,它將被重命名爲正確的名稱(/ etc/shadow或/ etc/gshadow,用於組影子文件)。

這個問題不僅僅是數據的一致性。爲了使系統可用,必須存在少量文件,安全文件就是其中的一部分。目標是避免出現系統可能崩潰的情況,或者可能暫停相關命令(Ctrl-Z鍵或SIGSTOP ...),並且文件處於不安全狀態。 「不安全」還可以包含「不存在」 - 非原子重命名文件會留下/ etc/shadow文件根本不存在的時間間隔。

相關問題