我以 minime 身份登录。
我不明白为什么它不允许我在没有 su 权限的情况下更改我拥有的文件。显然我可以使用 sudo,但我想知道为什么?因为 www-data 组?
chown minime:www-data user-functions.php
ls -lh
-rw-r--r-- 1 minime minime 24K Jan 6 16:11 user-functions.php
Error:
chown: changing ownership of `user-functions.php': Operation not permitted
答案1
非特权用户(非 root)无法将chown
文件交给其他用户名。要使用chown
,用户必须拥有目标用户的权限。换句话说,只有root
才能将文件交给另一个用户。
正如解释的那样这里(感谢@slhck):
只有有效用户 ID 等于文件的用户 ID 或具有适当权限的进程才可以更改文件的所有权。如果 _POSIX_CHOWN_RESTRICTED 对路径有效:
只有具有适当权限的进程才能更改用户 ID。
对于有效用户 ID 等于文件的用户 ID 但没有适当权限的进程,当且仅当所有者等于文件的用户 ID 或 (uid_t)-1,并且组等于调用进程的有效组 ID 或它的某个补充组 ID 时,才允许更改组 ID。
这背后的原因已被很好地解释@Gilles在这Unix 和 Linux 答案:
之所以有此限制,是因为将文件泄露给其他用户可能会导致一些不常见但仍然很重要的情况发生。例如:
- 如果系统启用了磁盘配额,Alice 可以在只有她可以访问的目录下创建一个全球可写文件(因此其他任何人都无法访问目录中的全球可写文件),然后运行 chown 使该文件归另一个用户 Bill 所有。这样,即使只有 Alice 可以使用该文件,该文件也会计入 Bill 的磁盘配额。
- 如果 Alice 把一个文件交给 Bill,则没有任何证据证明该文件不是 Bill 创建的。如果该文件包含非法或其他有危害的数据,则可能会出现问题。
- 某些程序要求其输入文件属于特定用户,以便对请求进行身份验证(例如,文件包含程序将代表该用户执行的一些指令)。这通常不是一种安全的设计,因为即使 Bill 创建了一个包含语法正确的指令的文件,他也可能无意在此时执行这些指令。尽管如此,允许 Alice 创建包含任意内容的文件并将其作为 Bill 的输入只会让事情变得更糟。