我需要将文件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身份运行。
答案 0 :(得分:1)
在许多* nixes(Linux,至少)上,这是不可能的。
chown
是一个限制为root权限的权限,因为否则您可以将其他用户的文件打包,以避免配额限制。
在相关的情况下,如果任意用户可以chown
向自己提供文件以获取访问权限,那么它也会造成语义问题。
更准确地说,您可以chown
您拥有的文件来更改其群组所有权信息,但只有在您是root用户时才能更改用户所有权。
在任何情况下,chown
都是这个特殊钉子的错误锤子。
您已经使用的chmod
是在脚本中将文件设置为只读的正确方法。
您正在执行的chmod 444
将防止意外修改文件。
你不能"冻结"或以其他方式将权限呈现为Unix / Linux用户静态而不提升为root权限(此时,您可以chown
将它们更改为root:root
,除root之外的任何人都不能更改权限或所有权。
在脚本设计方面,您不需要比这更严格。
如果您的脚本是偶然的chmod
或rm -f
文件,那么您需要担心的是更严重的正确性问题,而不是确保下载的数据安全无虞。