如何使用Linux的羊群命令,以防止另一根过程从删除文件?(How do I use the lin

2019-06-24 02:58发布

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

如果我只是指出一个共享锁,这是行不通的:

flock -s "./file.xml"

如果我添加一个超时参数,它仍然不能正常工作:

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

它看起来是这样,它适合在flock [-sxun][-w #] fd#方式。 (这是fd#参数?)

所以,我想:

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

使用flock -s -w5 "./file.xml" -c "tail -3 ./file.xml"和它的工作,在./file.xml尾命令被执行。

不过,我想知道,是否锁定端的命令后,或做它最后5秒的命令执行结束后? 我的主要问题是,我怎么能阻止删除在linux文件中的另一个根进程?

Answer 1:

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

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

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



Answer 2:

sudo chattr +i ./file.xml

MarkR是正确的chattr'ing该文件将防止它被删除:

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


Answer 3:

羊群是不是这个工作的工具。 如果您有删除文件的程序,您不应该运行该程序的根目录。 你应该运行它为不同的用户。 Unix有文件权限很好的支持,但根本是神帐户。 根可以做一切,并有根没有权限。



文章来源: How do I use the linux flock command to prevent another root process from deleting a file?