2

我正在做 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/projects/myproject 中打开所需的 '../inc/db.inc' (include_path='.:/usr/share/php:/usr/share/pear') 失败/html/user/index.php

要不就

无法访问文件 XXX

在日志中..

如果我将 grant rwx 更改为“其他”(777),它会起作用..

我的问题是,为什么组权限没有按我的预期工作?有任何想法吗?

我不是linux专家,因此我可能会错过一些东西。

4

2 回答 2

2

这是一种可能性:

www-data有主组www-data;其余为补充组

服务器进程具有正确的用户(bysetresuid或类似)和主要组(bysetresgid或类似),但缺少其他补充组(没有initgroups或类似)。

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

于 2012-05-21T06:15:22.553 回答
1

这是我解决它的方法:

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

我打开了这个文件并提到尽管我之前的操作没有www-datain group 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 显示正确的结果。

于 2012-05-21T13:35:22.047 回答