为什么不能删除具有组写权限的文件?


26

我有一个具有以下权限的文件:

root:data,并chmod设置为775。

我的普通用户(我们叫他boby)在该data组中。

为什么不能用boby用户删除文件?

 rwxrwxr-x 18根数据4096 2011-12-30 22:02存储
 我的用户在组数据中,但无法写入存储

Answers:


32

因为通过删除文件,您不仅在修改文件,而且在修改其目录。

因此,如果您的文件是:

rwxrwxr-x

您将可以执行以下操作:

cp /dev/null <filename>

但是,如果您的目录权限是:

rwxr-xr-x  root  data  <directory name>

然后系统将阻止您删除文件。


我的目录上有drwxrwxr-x,我认为它与前面的d有关
danidacar 2011年

2
@ user56301 d仅指示此文件是目录。目录的所有权是什么?
Karlson

drwxrwxr-x 18根数据
danidacar 2011年

尝试以用户身份运行boby以下内容:cd <directory> ; touch test_file ; rm test_file
Karlson

@ user56301您可以在该目录中创建文件吗?如果不能,那么您绝对不能在那里删除文件。
Rich Homolka

12

文件删除基于目录权限,而不是文件权限(*)。

您是否对包含文件的目录具有写权限?

(*)请注意,您可以在其中强制执行一个目录,只有该文件的所有者才能删除它。这对于临时目录很有用。


也可以在这里查看:superuser.com/questions/784952/…在此处进行了讨论。
Meetai.com 2015年

1

如果包含目录不允许用户bobydata组写入该目录,则可以解释此行为。


2
那么整个路径需要组权限吗?它就是这样。
danidacar 2011年

1
@user:不是整个路径-只是文件的直接父目录。您仅在修改目录的内容。在较高的父母根本就不重要
grawity 2011年

我更新了答案
danidacar 2011年

1
这不是真的。您只需要在包含目录上写权限。权限可以是用户权限,组权限或其他权限,而不必是允许您的组权限。
Rich Homolka

@Rich:AFAIK,仅检查一组。如果您是所有者,则系统将仅检查“所有者”权限,而不是“组”或“其他”权限。如果您属于该组,则系统不会检查“其他”权限。(touch foo; chmod 6 foo; ls -l foo; cat foo
grawity 2011年

1

我尝试了同样的事情,遇到了同样的问题。

开始一个新的终端会话的问题。这可以通过以下方式实现:

  1. 注销并重新登录
  2. 转到6个tty之一(Ctrl + Alt + F1-6)(注意:Ctrl + Alt + F7是您的GUI会话)
  3. 使用su boby开始为用户提供新的会话boby

干杯!


他提到他已经以
boby

他需要重新登录,因为boby-旧会话似乎已过时,不能反映组关联的更改。
狼在这里2013年

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.