Debian / Linux Group权限无法正常工作

时间:2012-05-21 05:34:52

标签: linux permissions debian usergroups

我正在研究BOINC项目。

我有两个用户:boincadm和www-data(用于apache)。 两者都属于集团boinc

www-data : boinc www-data boincadm
boincadm : boinc adm dialout fax cdrom floppy tape audio dip www-data video plugdev netdev bluetooth lpadmin fuse scanner sambashare subversion

我在/ home / boincadm / projects / myproject /中创建了一个boinc项目 所有文件和文件夹都归boincadm所有:boinc并拥有rwxrwx ---权限。

问题是www-data用户无法访问文件,导致多个错误,如:

  

警告:require_once(../ inc / db.inc):无法打开流:/home/boincadm/projects/myproject/html/user/index.php中的权限被拒绝

     

致命错误:require_once():在/ home / boincadm /中打开所需的'../inc/db.inc'(include_path ='。:/ usr / share / php:/ usr / share / pear')失败projects / myproject / html / user / index.php

或只是

  

无法访问XXX文件

在日志中..

如果我将grant rwx更改为“其他人”(777),则可以正常工作..

我的问题是,为什么群组权限不能像我期望的那样工作?有什么想法吗?

我不是linux的专家,所以我可能会错过一些东西。

2 个答案:

答案 0 :(得分:2)

这是一种可能性:

www-data有主要群组www-data;其余的是supplementary groups

服务器进程拥有合适的用户(按setresuid或类似)和主要组(按setresgid或类似),但缺少其他补充组(没有initgroups或类似)

如果是这种情况,您有几个选择:将文件所有权更改为主要组,更改服务器运行的组,或修复服务器以包括所有补充组。

答案 1 :(得分:1)

以下是我解决它的方法:

首先我读到了这个: link 在某些时候,本文提到文件/etc/group存储有关组的信息。

我打开了这个文件,并提到尽管我以前的行动,但www-data组中没有boinc。组www-data中没有boincadm,反之亦然。那很奇怪! 很奇怪,因为我已经使用usermod命令将这些用户添加到了boinc组,并确保该组对两者都是主要的。 此外,命令groups <username>表明它们属于boinc组。

现在的问题是:为什么会这样?

通过修改3行来解决问题:

boinc:x:1111:boincadm, www-data
boincadm:x:1112:boincadm, www-data
www-data:x:1113:www-data, boincadm

我需要所有3行才能使其正常工作。希望它对某人有帮助。我仍然想了解使用/etc/group时未自动修改文件usermod的原因。为什么grops会显示正确的结果呢。