拒绝更改我拥有的文件的gid(组)的权限


17

看来我仍然想念有关权限工作方式的一些信息。我正在使用debian 7系统。刚才我有这个文件,它是我下载的,它属于myuser:myuser,即用户和组均设置为我。它也位于我的$HOME目录中,因为这是我将其下载到的目录。

到目前为止,一切都很好。现在,我想与PC的其他一些用户共享此文件,为此,我想将该文件的组所有权切换为“用户”组。但是,这失败了:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

文件夹的内容为:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

我对权限的处理感到困惑。有人可以解释


/xmas_carolsamba / nfs挂载吗?
Rahul Patil 2014年

解决方案是setfacl(如果文件系统具有ACL)。看到unix.stackexchange.com/questions/101263/...
CTRL-ALT-delor

在我意识到自己刚刚加入该小组之前,我遇到了同样的错误。换句话说,我必须注销然后重新登录,以使更改生效。
乔纳森

Answers:


22

您的用户可能不是该users组的成员,因此您无权向该组提供文件。为了显示:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

POSIX规范中提到了此行为:

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

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

这样做的主要原因是,如果您不是网上论坛的成员,则您将无法修改该网上论坛可以访问的内容。这个关于chown权限的答案也很重要。

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

无论如何,由于这不是目前基于Debian的发行版的建立方式,因此,授予特定用户访问文件的方式是:

  1. 将文件/目录的组所有权更改为您和另一个用户都属于的组;

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

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

    这将使每个人都可以访问该目录。


4

在最近的UNICes上(此处的“ recent”具有相当广泛的含义),您不能将文件的组所有权更改为您不属于的组。对于诸如您这样的用例,不同UNIX风格的传统版本支持此功能,但事实证明这是一个安全问题。

能够将组所有权更改为外部组的问题是一个非常琐碎的问题:如果文件所在的文件系统启用了组配额,则具有恶意意图的用户可以简单地填充外部组的配额,从而使用户无法使用将此组作为主要组ID来创建其他文件。这可能很容易影响甚至已经在运行的进程,并由于“满盘”而导致它们死亡。

为避免问题,至少有两种可能:首先,您可以要求系统的超级用户将目标目标组添加到您帐户的补充组列表中。当然,如果您与该组没有任何关系,则只有有限的意义。

肯定不需要的另一种不需要使文件可全局写入的方法是使用ACL给予预期的组读写权限:

$ setfacl -m group:thegroupsname:rwx the_file(s)

您不必授予执行(在常规文件上),并且可能不想放弃写入权限。
ctrl-alt-delor

2

可能是因为设置了不变位。获取正在运行的文件属性列表

lsattr /path/to/your/file

如果出现,则将设置不可变属性,并且没有人可以修改文件(甚至是根文件)。

要删除该属性,您必须以超级用户身份运行

chattr -i /path/to/your/file

要查看更多文件系统属性,请阅读手册页

man chattr
man lsattr

很好,但是从这个问题来看,我认为发问者没有超级用户权限,您需要清除不可变标志(至少在我遇到很长时间的所有文件系统上)。另外,由于他只是提取了一个存档,因此这很可能不是问题,因为使用过的存档器需要对其进行设置(相同的问题)。
Andreas Wiese 2014年

0

如果您刚刚将自己添加到该组,请确保注销,然后重新登录以确保更改生效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.