无法更改我拥有所有权限的目录的所有者(用户或组)?

Bjo*_*orn 5 linux chown ubuntu

TL;DR:为什么我的操作不被允许?我该如何解决这个问题?


我正面临一个我无法解决的问题。我正在以用户 a:group a) 创建一个目录,我想将其更改为用户 b:group a。我不明白为什么不允许此操作。这就是正在发生的事情:

user a@foo:~$ mkdir /home/user b/foo/test             
uber a@foo:~$ chmod 0777 /home/user b/foo/test
user a@foo:~$ ls -alF /home/user b/foo/ | grep test
drwxrwxrwx 2 user a            group a 4096 Jan  6 19:53 test/
user a@foo:~$ chown user b:group a /home/user b/foo/test
chown: changing ownership of `/home/user b/foo/test': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

(为简单起见,我更改了用户名和组名)

其他可能相关的事情:

  • 用户 A 在 A 组和 B 组中。
  • 用户 B 在 B 组中。
  • /home/user b 中的目录 foo 有 0750,属于用户 B:Group A。

我很想知道为什么不允许进行此操作,以及如何解决此问题(不使用 sudo 的解决方案是加分项)?

小智 12

如果您是根用户(或具有 CAP_CHOWN Posix 功能),则只能更改文件的所有权。这是因为赠送文件会引发一些安全问题(例如,如果启用了磁盘配额,则可以填充用户 b 配额)。

如果允许,请使用 sudo chown 并且它会起作用。

但是,您可以将所属组更改为您所属的组,因此您应该能够 chgrp "group b" "/home/user b/foo/test",这可能是与用户共享文件的替代方法b 无需成为 root,这取决于您要实现的目标。

要获得更灵活的权限,您可能需要查看 ACL。