web-dev-qa-db-ja.com

Drushとユーザー権限

私のユーザーは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

enter image description here

この場合の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

enter image description here

私は、Sudoアクセスを持つユーザーアカウントがApache(またはwww-data)のグループメンバーであり、ファイルツリーがグループ書き込みアクセスを許可していると想定します。正しい方向への助けや指摘は大歓迎です。

10
Rick

他の答えは有益ですが、私は今説明されているように適切なユーザー権限を使用します

ファイルのアクセス許可と所有権の保護

で始まる

サーバーファイルシステムは、Webサーバー(Apacheなど)が実行するファイルを編集または書き込む権限を持たないように構成する必要があります。つまり、すべてのファイルはApacheプロセスに対して「読み取り専用」であり、別のユーザーによる書き込み権限で所有されている必要があります。

3
Rick

間違いなく、もっと簡単な方法は、ユーザーのグループ割り当てをまったく変更せず、代わりに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サーバーユーザーとして実行されます。ファイルの読み取りと書き込みに関する権限の問題はなくなりました。

13
rcourtna

私が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

これにより、コマンドでパスをハードコーディングする必要がなくなります。

1
Felix Eve