为什么用户不能更改自己文件的组所有权?

为什么用户不能更改自己文件的组所有权?

为什么用户不能更改他拥有的文件的组权限。假设我有用户martin

$ ls -lAd /home/martin/
drwx------ 8 martin martin 4096 Apr 20 01:06 /home/martin/

出于某种原因,我希望用户paul能够访问我的家。

$ chgrp paul /home/martin/
chgrp: changing group of `/home/martin/': Operation not permitted

是否存在安全原因导致用户无法更改自己文件的组所有权?

我在用Debian 7(气喘吁吁)。

答案1

您只能chgroup对您所属的群组进行以下操作:

$ groups
terdon sudo netdev fuse vboxsf vboxusers 
$ chgrp fuse file
$ ls -l  file
-rw-r--r-- 1 terdon fuse 531 Apr 15 19:17 file
$ chgrp mysql file
chgrp: changing group of ‘file’: Operation not permitted

这种行为在POSIX 规范:

只有文件的所有者或具有适当权限的用户才能更改文件的所有者或组。

当指定的组不是有效组 ID 或调用进程的补充组 ID 之一时,某些实现将 chgrp 的使用限制为具有适当权限的用户。

这样做的主要原因是,如果您不是某个组的成员,则您应该无法修改该组有权访问的内容。这个答案关于chown权限也相关。

传统上,在共享系统上,您有一个users所有常规用户所属的组,并且这是每个用户的主要组。这样,创建的文件归该users组所有,并且所有用户都可以读取它们。

无论如何,由于这不是目前基于 Debian 的发行版的设置方式,因此授予特定用户访问目录的方法是

  1. 将目录的组所有权更改为您和其他用户都是其成员的组;

  2. 只需相应更改目录的权限即可:

    $ chmod 755 /home/martin
    $ ls -ld /home/martin/
    drwxr-xr-x 170 martin martin 491520 Apr 20 13:43 /home/martin/
    

    这将使每个人都可以访问该目录。保罗也包括在内。

相关内容