web-dev-qa-db-ja.com

Apache2 DocumentRootを「vboxsf」VirtualBox共有フォルダーに設定するにはどうすればよいですか? (許可の問題?)

ホストへの共有フォルダーを使用して、VirtualBox VMにUbuntu11.04デスクトップ32ビットをセットアップします。共有フォルダーは

/media/sf_Dev/

DocumentRootがそのフォルダーを指すようにApache2を変更したいので、/etc/Apache2/sites-available/defaultを編集して、ファイル内の既存のtwoパスを/ media/sf_Dev /に置き換えます。/var/wwwとすると、index.htmlは表示されません。

/varls -lで見ると、

drwxr-xr-x  2 root root ... www

そして私がls -l /media/を見ると

drwxrwx---  1 root vboxsf ... sf_Dev

そして、Apacheは私がそのディレクトリに置いたindex.htmlを見ていないようです(cp /var/www/index.html /media/sf_Dev/ iirc)

また、envvarsを編集してグループをvboxsfにしようとしましたが、その部分は間違っていたと思います。

export Apache_RUN_GROUP=www-data

export Apache_RUN_GROUP=vboxsf

Apache2がそのディレクトリからファイルを提供できるようにするために何をする必要がありますか? (技術的には、Apacheのファイルを/media/sf_Dev/Apache/wwwから提供したいのですが、一度に1つのステップを理解しているので、それが問題を解決するのに役立つ場合は、そうしてください)

17
jcolebrand

Apacheの補足グループとしてvboxsfグループを追加するのがおそらく最も簡単でしょう。

Ubuntu:

Sudo usermod -a -G vboxsf www-data

Fedora:

Sudo usermod -a -G vboxsf Apache

これは、自動マウントされた共有フォルダーにアクセスする場合に役立ちます。ファイルにアクセスするために、vboxsfグループに独自のユーザー名を追加することもできます。

22
Fuu

これは権限の問題のようです。 「その他」(現在パーミッションがない、または/media/sf_Dev/であるパー​​ミッションビットの3番目のグループ)の---に対する読み取りおよび実行パーミッションが必要です。

したがって、次のコマンドを実行する必要があります(Ubuntuであるため、Sudoに注意してください)。

Sudo chmod 775 /media/sf_Dev/

これにより、「その他」の読み取りと実行が追加され、所有者とグループに完全な権限が残ります。

また、インデックスファイルが実際に/ media/sf_Dev /に存在することを確認してください。 (cpコマンドでSudoを忘れており、rootとして実行していないと想定します。)

3
George Marian

あなたは特定のエラーが何であるかを言わなかった、ただ

そして、Apacheは私がそのディレクトリに置いたindex.htmlを見ないようです

特定のエラーが役立ちます。これは、Apacheのerror_logにファイルできます。これは通常、Ubuntの/var/log/Apache2/error.logの下にありますが、 ErrorLogディレクティブ を介して構成できます。あなたの<VirtualHost>

実際のエラーがなければ、George Marianは正しく、権限エラーだと思います。以下を使用して、Apacheが実行されているグループを確認できます。

ps -o pid,group -o atime,comm=CMD awx | grep Apache

彼が言ったように/media/sf_Dev/のアクセス許可をチェーンしてみてください。

Aliasディレクティブ を使用してこれを処理する方がよいと思います。これにより、DocumentRootの特定の部分のみが外部の場所を指すようになります。

Alias /info /media/sf_Dev
<Directory /media/sf_Dev >
  Order allow,deny
  Allow from all
</Directory>

EDIT:Apacheサーバーにmod_php(FastCGI PHPではない)があり、suexecを使用していない場合は、 Apacheは適切なGID(グループID)で実行されており、次のPHP snippit:

<?php

var_dump(posix_getegid());

vboxsfと同じGIDを返すことを確認してください。 (vboxsfのGIDは/etc/groupsにあります)

2
Josh

共有フォルダーを自動マウントするように構成した場合。次に、最初に同じものを無効にして、共有フォルダーを手動でマウントする必要があります。 vmを起動するたびに自動マウントする必要がある場合は、/ etc/fstab内にそれぞれのエントリを追加する必要があります。 (fstabを介したvbox共有フォルダーのマウントに問題があるようです。したがって、/ etc/rc.local内に以下のコマンドを追加すると、起動時にマウントできました)。

正しいユーザー/グループで共有フォルダをロードする

私の知る限り、このエラーは共有フォルダの所有者とグループが原因です。 Apacheは、レンダリングするファイルがグループwww-dataに属することを想定しています。ただし、デフォルトでは、VirtualBoxの共有フォルダーはvboxsfユーザーに属しています。このユーザーをwww-dataグループに追加します。これを行うには、ゲストのグループプロパティを編集します。

Sudo usermod -a -G vboxsf www-data

次に、共有フォルダーをマウントして、www-dataユーザーとグループに割り当てます。ユーザーIDとグループIDを確認するには、ゲストマシンの/ etc/passwdファイル(cat/etc/passwd | grep'www-data ')を確認します。 DebianベースのOSでは、通常、両方のIDが値33に設定されます。したがって、ゲストに対して次のコマンドを発行するだけです。

mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website

ウェブサイトは共有フォルダーの名前であり(上のスクリーンショットに示されているように)、/ media/sf_websiteはフォルダーがマウントされる場所であることに注意してください。

詳細については、このリンクを参照してください http://jimmybonney.com/articles/configure_virtualbox_shared_folder_Apache_virtual_Host/

0
Pandurang Patil