web-dev-qa-db-ja.com

vagrant共有ディレクトリでsetfaclを実行する

Symfony2プロジェクトをvagrant VMで稼働させようとしています。私はこれについて無数の記事を見てきましたが、キャッシュディレクトリに正しくアクセス許可を取得することは、耐え難いほどに痛みを伴うことが証明されています。

私のVagrantfile内:

config.vm.share_folder("src", "/var/www", "../www")

私のVMのfstabファイル:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/ubuntu--1110-root /               ext4    acl,errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=4ed7eaaf-6f42-48ba-b5ed-f0c1df9add38 /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--1110-swap_1 none            swap    sw              0       0

AclパッケージがVMにインストールされました。

Symfony2のインストール手順に従って/ var/wwwで以下を実行すると:

 Sudo setfacl -R -m u:Apache:rwx -m u:username:rwx app/cache app/logs

私は得ます:

操作はサポートされていません

FS(共有ディレクトリの外)にある他のディレクトリまたはファイルでコマンドを実行でき、コマンドは機能します。何が得られますか?

10
Josh Nankin

Symfony2とVagrantのすべての権限の問題を回避するには、Apacheを実行しているユーザーとグループをvagrantに変更するのが最も簡単な解決策です。これを行うには、ファイル/ etc/Apache2/envvarsを編集し、16行目と17行目を次のように置き換えます。exportApache_RUN_USER= vagrant export Apache_RUN_GROUP = vagrantこれらの手順はUbuntu上のApache2.2用であることに注意してください。そう。

Apacheのユーザーとグループを変更したくない場合は、ramdiskをマウントしてsymfonyプロジェクトをその上に置くこともできます。次に、バグラントはこのディスクの権限を変更できます。 RAMディスクをマウントする方法については、 このリンク を参照してください。

6
jfcartier

より良い解決策は、属性のオーバーライドを使用することです。 Opscode Wiki を参照してください。

たとえば、役割の定義では:

override_attributes({
    "Apache" => {
      "user" => "vagrant",
      "group" => "vagrant"
    }
})

共有フォルダー内のTypo3で同じ問題が発生し、一時ファイルを作成できませんでした。

3
Martin Lauer