首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用linux flock命令阻止另一个根进程删除文件?

如何使用linux flock命令阻止另一个根进程删除文件?
EN

Stack Overflow用户
提问于 2009-06-24 20:35:25
回答 3查看 25.8K关注 0票数 12

我想阻止我的某个根进程删除某个文件。所以我遇到了flock命令,它似乎符合我的需要,但我不了解它的语法。

如果我只指示一个共享锁,它就不能工作:

代码语言:javascript
复制
flock -s "./file.xml"

如果我添加一个超时参数,它仍然不起作用:

代码语言:javascript
复制
flock -s -w5 "./file.xml"

看起来是这样的,它符合flock [-sxun][-w #] fd#的方式。(这个fd#参数是什么?)

所以,我试着:

代码语言:javascript
复制
flock [-sxon][-w #] file [-c] command

使用flock -s -w5 "./file.xml" -c "tail -3 ./file.xml"并正常工作后,执行了./file.xml中的tail命令。

但是我想知道,锁是在命令结束后结束,还是在命令执行结束后持续5秒?我的主要问题是,如何防止另一个根进程在linux中删除文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-24 20:42:32

不,flock不会阻止任何人做任何事情。Unix锁是建议性的,这意味着它们可以防止其他进程也调用flock (或者在共享锁的情况下,防止另一个进程使用独占锁)。

它不会阻止root或其他任何人读取、写入或删除该文件。

在任何情况下,即使它是一个强制锁,它也不会阻止正在被删除的文件,因为它是被锁定的文件,而不是目录条目。

票数 39
EN

Stack Overflow用户

发布于 2010-03-29 21:41:37

sudo chattr +i ./file.xml

MarkR是正确的,对该文件进行chattr将防止其被删除:

代码语言:javascript
复制
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2135] --> sudo chattr +i junk.txt
[sudo] password for risk: 
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2136] --> sudo rm ./junk.txt 
rm: cannot remove `./junk.txt': Operation not permitted
zsh: exit 1     sudo rm ./junk.txt
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2137] --> sudo rm -f ./junk.txt
rm: cannot remove `./junk.txt': Operation not permitted
zsh: exit 1     sudo rm -f ./junk.txt
-(~)-------------------------------------------------------------------------------------------------------(08:40 Mon Mar 29)
risk@DockMaster [2138] --> 
票数 8
EN

Stack Overflow用户

发布于 2010-05-24 19:37:29

flock不是这项工作的合适工具。如果您有一个删除文件的程序,则不应以root身份运行该程序。您应该以不同的用户身份运行它。Unix对文件权限有很好的支持,但是root是一个神的帐号。root可以做任何事情,Root没有权限。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1040828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档