我为影子文件创建了一个硬链接。为了删除用户的密码,我在 vi 编辑器中打开了影子文件并删除了加密的密码,然后保存了。影子文件的 inode 值已更改。然后我更新了用户的密码,影子文件的 inode 值再次发生了变化。为什么影子文件的 inode 在编辑/更新时会发生变化?
问问题
276 次
2 回答
2
VI 将数据保存在一个新文件中,然后取消链接或重命名旧的目录条目。硬链接链接到旧链接。
这是在案例保存失败时确保数据一致性的两种方法之一。
另一种方法是复制旧文件然后覆盖它。旧副本将具有不同的 inum,而新保存的文件将与以前相同。
于 2012-04-23T11:18:57.360 回答
0
处理文件写入的代码会在写入文件之前创建整个文件的副本,因为它应该存在于磁盘上。一旦文件被写入磁盘并刷新,它就会被重命名为正确的名称(/etc/shadow 或 /etc/gshadow,用于组影子文件)。
问题不仅仅是数据一致性。为了使系统可用,必须存在少量文件,安全文件就是其中的一部分。目标是避免出现系统崩溃或相关命令可能被挂起(Ctrl-Z 键或 SIGSTOP ...)和文件处于不安全状态的情况。“不安全”还可以包括“不存在”——非原子重命名文件可能会留下 /etc/shadow 文件根本不存在的时间间隔。
于 2012-05-01T03:08:07.447 回答