在Linux上我可以dd
我的硬盘上的文件,并在dd仍在继续时在Nautilus中将其删除。
Linux是否可以强制执行强制文件锁定来保护R / W?
答案 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可以强制执行文件锁定,但默认情况下不会这样做,因为它的多用户设计。请尝试阅读flock
和fcntl
的手册页。这可能会让你开始。