我为影子文件创建了一个硬链接。为了删除用户的密码,我在 vi 编辑器中打开影子文件并删除加密的密码,然后保存。影子文件的 inode 值已更改。然后我更新了用户的密码,并且影子文件的 inode 值再次发生了变化。为什么影子文件的索引节点在编辑/更新时会发生变化?
答案1
密码更改的通常实现涉及硬链接/etc/shadow
到/etc/stmp
(或一些类似的名称;link()
在本地文件系统上是原子的,这构成了一种锁定文件机制),将新文件写入临时文件,然后将原始文件重命名/etc/shadow
为/etc/shadow-
或类似名称并重命名临时到/etc/shadow
。这样做是为了稳健性:在任何时候,shadow
未经修改的原始文件仍然存在,并且即使在错误的时间断电或出现同样严重的情况(除非它损坏了整个磁盘),也可以轻松恢复。