linux上的强制文件锁

时间:2012-08-21 20:22:33

标签: linux locking protection

在Linux上我可以dd我的硬盘上的文件,并在dd仍在继续时在Nautilus中将其删除。

Linux是否可以强制执行强制文件锁定来保护R / W?

3 个答案:

答案 0 :(得分:16)

要在Linux上执行强制锁定,必须使用-o mand选项装入文件系统,并且必须对文件设置g-x,g+s权限。也就是说,您必须禁用组执行,并启用setgid。执行此操作后,所有访问将根据文件描述符上EAGAIN的值O_NONBLOCK阻止或出错。但请注意:“在所有已知版本的Linux中强制锁定的实现受竞争条件的影响,这使得它不可靠......因此,不建议依赖强制锁定。”请参阅fcntl(2)

答案 1 :(得分:8)

您不需要锁定。这不是一个错误,而是一个选择,你的假设是错误的。

文件系统使用引用计数,当删除文件的所有硬链接并关闭所有文件描述符时,它会将文件标记为空闲。

该方法允许安全操作,例如,Windows不会删除,移动和重命名正在使用的文件,而无需锁定或破坏任何内容。

尽管删除了文件,你的dd操作仍会成功。

http://en.wikipedia.org/wiki/Reference_counting#Disk_operating_systems

答案 2 :(得分:2)

Linux和Unix OS可以强制执行文件锁定,但默认情况下不会这样做,因为它的多用户设计。请尝试阅读flockfcntl的手册页。这可能会让你开始。