显示没有root权限的特定文件夹

时间:2014-08-25 18:10:12

标签: linux bash permissions file-permissions

我需要将文件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权限。

我需要这个的原因,我将从web获取一些文件,确保它们将由脚本的其余部分不可更改,只有root可以更改它。该脚本无法定义为以root身份运行。

1 个答案:

答案 0 :(得分:1)

在许多* nixes(Linux,至少)上,这是不可能的。 chown是一个限制为root权限的权限,因为否则您可以将其他用户的文件打包,以避免配额限制。 在相关的情况下,如果任意用户可以chown向自己提供文件以获取访问权限,那么它也会造成语义问题。

更准确地说,您可以chown您拥有的文件来更改其群组所有权信息,但只有在您是root用户时才能更改用户所有权。

在任何情况下,chown都是这个特殊钉子的错误锤子。 您已经使用的chmod是在脚本中将文件设置为只读的正确方法。 您正在执行的chmod 444将防止意外修改文件。 你不能"冻结"或以其他方式将权限呈现为Unix / Linux用户静态而不提升为root权限(此时,您可以chown将它们更改为root:root,除root之外的任何人都不能更改权限或所有权。

在脚本设计方面,您不需要比这更严格。 如果您的脚本是偶然的chmodrm -f文件,那么您需要担心的是更严重的正确性问题,而不是确保下载的数据安全无虞。