繁体   English   中英

如何使用linux flock命令阻止其他根进程删除文件?

[英]How do I use the linux flock command to prevent another root process from deleting a file?

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

如果我只指示共享锁,则它不起作用:

flock -s "./file.xml"

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

flock -s -w5 "./file.xml"

看来这样,它适合flock [-sxun][-w #] fd# way。 (这个fd#参数是什么?)

所以,我尝试过:

flock [-sxon][-w #] file [-c] command

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

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

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

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

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

sudo chattr +i ./file.xml

MarkR是正确的聊天文件将阻止它被删除:

-(~)-------------------------------------------------------------------------------------------------------(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] --> 

flock不适合这份工作。 如果您有一个删除文件的程序,则不应以root身份运行该程序。 您应该以其他用户身份运行它。 Unix对文件权限有很好的支持,但root是一个神帐户。 Root可以执行所有操作,并且没有root权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM