首页 > 解决方案 > 在不使用 sudo 的情况下更改 root 用户拥有的文件的权限

问题描述

我有一个“root”拥有的文件和“非root”用户拥有的脚本。我正在尝试使用“非root”脚本更改“root”拥有的文件的权限并出现以下错误:

$ cat root_file
echo "HELLO WORLD"

$ cat non_root_script
chmod 777 root_file.txt

$ ./non_root_script
chmod: changing permissions of 'abc.txt': Operation not permitted

我尝试向 non_root_script 添加功能,但我仍然遇到同样的错误。

$ sudo setcap CAP_FOWNER+ep non_root_script
$ ./non_root_script
chmod: changing permissions of 'abc.txt': Operation not permitted

是否还有其他我需要提供的功能,如果有,请提出建议。我也不想使用“sudo chmod”。

标签: linuxrootsudochmodlinux-capabilities

解决方案


GNU/Linux 强烈反对在 shell 脚本上进行 AT_SECURE 转换(包括文件系统功能):

您可以使用一个小的 C 程序来解决这个问题,但是您尝试做的事情仍然非常不安全,即使您root_file.txt由于文件系统竞争条件将路径更改为绝对路径。非常宽松的文件模式777也会导致安全问题。我建议调查您的原始问题的其他解决方案。


推荐阅读