基本上:当我作为非root用户执行chmod
文件时,什么时候我会得到该命令的“权限被拒绝”,什么时候不会?文件的哪个属性允许或禁止我更改它的权限?
我认为这是文件所有者,在这里询问,因为我只是在努力了解底层的基本概念。
答案1
长话短说:如果要chmod
在 GNU/Linux 上运行文件,您需要是 root 或文件的所有者。
来自修改(2)(chmod 系统调用)手册页:
调用进程的有效UID必须与文件的所有者,或者进程必须具有特权(Linux:它必须具有 CAP_FOWNER能力)。
来自能力(7)手册页:
CAP_FOWNER
- 绕过通常需要进程的文件系统 UID 与文件的 UID 匹配的操作的权限检查(例如 chmod(2)、utime(2)),不包括 CAP_DAC_OVERRIDE 和 CAP_DAC_READ_SEARCH 涵盖的操作; [...]
来自设置事实(1)手册页:
权限
文件所有者和具有 CAP_FOWNER 能力的进程被授予修改文件 ACL 的权限。这类似于访问文件模式所需的权限。 (在当前的 Linux 系统上, root 是唯一的用户与CAP_FOWNER能力。)