私のユーザーはApacheグループのメンバーです。以下を介して追加して確認しました
$ Sudo usermod -a -G Apache `whoami` # add my user to Apache group
$ Sudo chmod -R g+w . # permit group members to write
$ groups `whoami` # confirm I'm in the Apache group
ただし、drush更新コアまたはdrush cronを実行しようとすると
$ drush cc all
unlink(sites/default/files/css/css_71ba7c25a8d3c47c68a8e05608ae525c.css):[warning]
Permission denied file.inc:482
この場合のCSSキャッシュは次のようになります
$ ll
total 1536
drwxrwxr-x. 2 Apache apache 12288 Nov 26 10:12 .
drwxrwxr-x. 11 Apache apache 4096 Nov 24 20:35 ..
-rw-rw-r-- 1 Apache apache 162269 Nov 26 10:06 css_00d5f4d7c5c92cd4f.css
-rw-rw-r-- 1 Apache apache 158090 Nov 26 10:02 css_0605989692a2119d305.css
-rw-rw-r-- 1 Apache apache 162269 Nov 26 10:02 css_0779dcac71ee9aa8e02d9e.css
私は、Sudoアクセスを持つユーザーアカウントがApache(またはwww-data)のグループメンバーであり、ファイルツリーがグループ書き込みアクセスを許可していると想定します。正しい方向への助けや指摘は大歓迎です。
他の答えは有益ですが、私は今説明されているように適切なユーザー権限を使用します
ファイルのアクセス許可と所有権の保護
で始まる
サーバーファイルシステムは、Webサーバー(Apacheなど)が実行するファイルを編集または書き込む権限を持たないように構成する必要があります。つまり、すべてのファイルはApacheプロセスに対して「読み取り専用」であり、別のユーザーによる書き込み権限で所有されている必要があります。
間違いなく、もっと簡単な方法は、ユーザーのグループ割り当てをまったく変更せず、代わりにWebサーバーユーザー(つまり、Apache、www-data)としてdrushを実行することです。
Sudoを使用:
Sudo -u Apache drush
またはdebian/ubuntuで:
Sudo -u www-data drush
コマンドエイリアスを作成します:
次に、常にそのようにdrushを実行するようにするには、エイリアスを追加します。
echo "alias drush='Sudo -u Apache drush'" >> ~/.bash_aliases
またはdebian/ubuntuで:
echo "alias drush='Sudo -u www-data drush'" >> ~/.bash_aliases
Drushコマンドを実行すると、Sudoによってパスワードの入力を求められ、コマンドはWebサーバーユーザーとして実行されます。ファイルの読み取りと書き込みに関する権限の問題はなくなりました。
私がdrushを実行したとき、www-data
私の $ PATHが変更された であるため、drushは使用できなくなりました。
回避策として、drushのパス全体を入力できます。
例えば。
Sudo -u www-data /home/vagrant/.composer/vendor/bin/drush status
自分のブラシのパスを取得するには、次のコマンドを実行します。
which drush
つまり、次のコマンドを実行することもできます。
Sudo -u www-data `which drush` status
これにより、コマンドでパスをハードコーディングする必要がなくなります。