web-dev-qa-db-ja.com

Apache-ユーザーのホームディレクトリへのアクセスを許可する

さまざまなWebサイトを閲覧して、この問題に1週間悩まされていますが、これがうまくいかないようです。

Apache2がインストールされており、Wordpress Webサイトが/home/<user>/wwwのユーザーのフォルダーにあります。

これでウェブサイトはすべて動作しますが、wordpress(Apacheのような)と同様に、ウェブインターフェイス(および書き込みアクセスを必要とするもの-設定の変更、メディアのアップロードなど)からプラグインをインストールすることはできません。それらのファイルへの書き込みアクセス権はありません。

/home/<user>/wwwディレクトリとその下のすべては、ユーザーとグループ<user>に属します。

すでに複数のソリューションを試しましたが、次のような解決策はありませんでした。

  1. /home<user>/wwwの所有者をwww-data:www-dataに変更しています。申し分なく-正直なところ、私はそれを望んでいないので、この解決策を試しませんでした。サーバー上のすべてのユーザーに対してこれを行うと、ユーザーはすべてのフォルダーにアクセスできますが、他のユーザーではなくホームフォルダーにのみアクセスできるようにする必要があります。

  2. www-dataをユーザーのグループに追加しています。これはうまくいくかもしれないと思ったが、どうやらうまくいかないようだ。 www-dataユーザーは実際にユーザーのグループ(idコマンドで確認)に属しますが、まだ機能していないようです。

  3. ユーザーのホームディレクトリにACLを設定します。それもし、www-data rwxにホームディレクトリへのアクセス権を与えましたが、それでも助けにはなりませんでした。

興味がある場合は、/home/<user>/ディレクトリとその下のすべてのファイル/ディレクトリに775のアクセス許可があります。

3
Skrypt

申し分なく、それで苦労し続けた後、私は最終的に私のために働く解決策に出くわした。

これが私がしたことです:/home/dummyにあるホームフォルダでdummyという新しいユーザーを作成したとしましょう/home/dummy/wwwにある彼のWebプレゼンテーション専用のフォルダー。

  1. Sudo chgrp -R www-data /home/dummy/wwwを使用して、wwwディレクトリのグループとそのすべてのコンテンツをwww-data(Webアクセス用のApacheのデフォルトユーザー)に変更します。
  2. Sudo chmod -R g+wrxs /home/dummy/wwwを使用して、指定されたディレクトリとそのコンテンツに対するグループwww-dataの書き込み、読み取り、実行の許可を与えます。ここでのimportantの部分はs部分です。これにより、グループ(www-data)がsパラメーターでディレクトリ内に作成されたファイルの所有権を確実に引き継ぎます。

ユーザーdummyをグループに追加する必要はまったくありません。

将来、誰かが私と同じ問題に遭遇した場合に役立つことを願っています。

編集:いくつかの追加テストの後、これだけでは十分ではないようです。上記の2つの手順とは別に、wordpress構成ファイルにdefine('FS_METHOD', 'direct');を追加して、wordpressのファイル操作方法を明示的に指示する必要もあります。

また、より厳密な権限設定については、DigitalOceanの buntuでLAMPを使用してWordPressをインストールする方法 ガイドのステップ5を参照してください。

1
Skrypt