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

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

TL;DR:为什么我收到“操作不允许”的提示?我该如何解决?


我遇到了一个无法解决的问题。我正在以用户 a:组 a) 的身份创建一个目录,我想将其更改为用户 b:组 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

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

其他可能相关的事情:

  • 用户 A 在组 A 和组 B 中。
  • 用户 B 在组 B 中。
  • /home/user b 中的目录 foo 具有 0750,并且归用户 B:组 A 所有。

我急切地想了解为什么不允许执行此操作,以及如何解决这个问题(不使用 sudo 的解决方案是一个优点)?

答案1

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

如果允许的话,请使用 sudo chown,它就会起作用。

但是,您可以将拥有组更改为您是其成员的组,因此您应该能够 chgrp“group b”“/home/user b/foo/test”,这可能是无需成为 root 即可与用户 b 共享文件的替代方法,具体取决于您想要实现的目标。

为了获得更灵活的权限,您可能需要研究 ACL。

答案2

A 部分:
由于只有所有者和根 (TBOMK),因此不允许该操作。

B 部分:答案现在显而易见。要么让用户 b 执行此操作,要么您可能不得不硬着头皮使用 sudo。如果您不想使用 sudo,我猜是因为您没有 root 权限,必须让其他人来执行此操作,但这似乎是仅有的两个解决方案。

相关内容