2

私はBOINCプロジェクトに取り組んでいます。

私には2人のユーザーがいます: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でrequired'../inc/db.inc'(include_path ='。:/ usr / share / php:/ usr / share / pear')を開くことができませんでした/html/user/index.php

あるいは単に

ファイルXXXにアクセスできません

ログで..

付与rwxを「その他」(777)に変更すると、機能します。

私の質問は、グループのアクセス許可が期待どおりに機能しないのはなぜですか?何か案は?

私はLinuxの専門家ではないので、何かを見逃す可能性があります。

4

2 に答える 2

2

ここに可能性があります:

www-dataプライマリ グループがwww-dataあります。残りは補助グループです。

サーバー プロセスには適切なユーザー (bysetresuidまたは類似) とプライマリ グループ (bysetresgidまたは類似) がありますが、他の補助グループ (存在しないinitgroupsまたは類似) がありません。

この場合、いくつかのオプションがあります。ファイルの所有権をプライマリ グループに変更するか、サーバーが実行されているグループを変更するか、サーバーを修正してすべての補足グループを含めるかです。

于 2012-05-21T06:15:22.553 に答える
1

これが私がそれを解決した方法です:

まず最初にこれを読みました: link ある時点で、この記事で/etc/groupは、グループに関する情報が保存されているファイルについて言及しました。

私はこのファイルを開き、私の以前の行動にもかかわらずwww-data、グループにはないことを述べましたboinc. そしてwww-data、グループ boincadmではなく、反対です。変です!コマンドを使用してこれらのユーザーをグループ boinc に追加usermodし、このグループが両方のプライマリであることを確認したため、奇妙です。さらに、コマンドgroups <username>は、それらが group にあることを示しました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 に答える