【问题标题】:Chown a specific folder without root privillegeschown 没有 root 权限的特定文件夹
【发布时间】:2014-10-18 22:58:23
【问题描述】:

我需要将文件 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 身份运行。

【问题讨论】:

标签: linux bash permissions file-permissions


【解决方案1】:

在许多 *nix 上(至少是 Linux),这是不可能的。 chown 是仅限于 root 的权限,否则您可以将文件抵押给其他用户以避免配额限制。 在相关情况下,如果任意用户可以通过chown 向自己发送文件以获取访问权限,也会造成语义问题。

更准确地说,你可以chown你拥有的文件来更改他们的组所有权信息,但你只能在你是root用户的情况下更改用户所有权。

无论如何,chown 对于这个特殊的钉子来说是错误的锤子。 您已经在使用的chmod 是在脚本中将文件设置为只读的正确方法。 您已经在做的chmod 444 将防止对文件的意外修改。 在不提升到 root 权限的情况下,您不能“冻结”或以其他方式将权限呈现为 Unix/Linux 用户静态(此时,您可以将 chown 他们设置为 root:root,并且除了 root 之外没有人可以更改他们的权限或所有权) .

在脚本设计方面,您不需要比这更严格。 如果您的脚本是随意的 chmoding 或 rm -fing 文件,那么您需要担心的正确性问题比确保下载的数据安全无虞要严重得多。

【讨论】:

  • “如果不提升到 root 权限,您不能“冻结”或以其他方式呈现静态权限作为 Unix/Linux 用户”chattr +i myfile 会将文件标记为不可变。我不确定这是否也会冻结权限,但不能再写入文件。这只能由 root 完成:没有 root 无法设置 -/+i。
  • @Luc “不可变”文件属性确实阻止了权限更改,但它比仅仅将所有权更改为 root 更加晦涩难懂。它还阻止了许多其他活动,因此它比所有权变更更具限制性。
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2015-01-28
  • 2012-02-04
  • 1970-01-01
相关资源
最近更新 更多