我需要将一个文件 chown 给其他用户,并确保它再次不可读。听起来很复杂,但它主要看起来像这样:
cd /readonly
wget ...myfile
cd /workdir
chmod -R 444 /readonly
chown -R anotheruser /readonly
ls /readonly # OK
echo 123 > /readonly/newfile # Should not be allowed
cat /readonly/myfile # OK
chown 777 /readonly # Should not be allowed
在 SunOS 中我看到了类似的东西,我记得 Apache 无法删除不归属的文件,但我在 Linux 中找不到类似的东西,因为 chmod 需要 root 权限。
我需要这个的原因是,我将从网络上获取一些文件,确保它们不会被脚本的其余部分更改,只有 root 可以更改它。该脚本不能定义为 root 运行。
最佳答案
在许多 *nixes(至少是 Linux)上,这是不可能的。
chown
是仅限于 root 的权限,否则您可以将您的文件典当给其他用户以避免配额限制。
在一个相关的案例中,如果任意用户可以向自己chown
文件以获得访问权限,它也会带来某种语义问题。
更准确地说,您可以chown
您拥有的文件来更改它们的组所有权信息,但如果您是根用户,您只能更改用户所有权。
在任何情况下,chown
都不是用来敲这个钉子的锤子。
您已经在使用的 chmod
是在脚本中将文件设置为只读的正确方法。
您已经执行的 chmod 444
将防止对文件的意外修改。
你不能“卡住”或以其他方式呈现静态权限作为 Unix/Linux 用户而不提升到 root 权限(此时,你可以 chown
它们到 root:root
并且没有root 以外的人可以更改它们的权限或所有权)。
在脚本设计方面,您不需要比这更严格。
如果您的脚本随意地 chmod
ing 或 rm -f
ing 文件,那么与确保下载的数据安全可靠相比,您需要担心更严重的正确性问题。
关于linux - chown 没有 root 权限的特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491901/