linux - chown 没有 root 权限的特定文件夹

标签 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 权限。

我需要这个的原因是,我将从网络上获取一些文件,确保它们不会被脚本的其余部分更改,只有 root 可以更改它。该脚本不能定义为 root 运行。

最佳答案

在许多 *nixes(至少是 Linux)上,这是不可能的。 chown 是仅限于 root 的权限,否则您可以将您的文件典当给其他用户以避免配额限制。 在一个相关的案例中,如果任意用户可以向自己chown 文件以获得访问权限,它也会带来某种语义问题。

更准确地说,您可以chown您拥有的文件来更改它们的组所有权信息,但如果您是根用户,您只能更改用户所有权。

在任何情况下,chown 都不是用来敲这个钉子的锤子。 您已经在使用的 chmod 是在脚本中将文件设置为只读的正确方法。 您已经执行的 chmod 444 将防止对文件的意外修改。 你不能“卡住”或以其他方式呈现静态权限作为 Unix/Linux 用户而不提升到 root 权限(此时,你可以 chown 它们到 root:root 并且没有root 以外的人可以更改它们的权限或所有权)。

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

关于linux - chown 没有 root 权限的特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491901/

相关文章:

php - fatal error : Class 'COM' not found in php 5. 6

linux - 如何从文件夹中运行脚本文件中的 100 个 csv 文件(一次一个文件)?

bash - 如何使用 bash -c 启动程序,重定向/禁用该应用程序的 GUI

bash - 如何在 bash 中一个接一个地打印列?

java - 在桌面应用程序中设置权限/功能?

linux - 在 Azure HdInsight 的 Linux 群集上的 Spark 中运行 Zeppelin 段落时出错

linux - Raspbian Wheezy : Kernel Panic in Raspberry Pi

Linux 脚本将多行格式化为 1 行

PostgreSQL - 获取指定角色对每个对象类型的有效权限

permissions - Ubuntu 18.04/var/lib/snapd 有 'other' 写入 40777