Drushとユーザー権限


10

私のユーザーは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)のグループメンバーであり、ファイルツリーがグループの書き込みアクセスを許可する必要があると想定します。正しい方向への助けや指摘は大歓迎です。


2
newgrp apachesudoなしで実行し、再試行してください
Hamid Nikmehr

2
ログアウトしてから再度ログインしましたか?
mpdonadio

回答:


13

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


1
「sudo -u www-data drush」を実行すると、drush-backupsディレクトリに書き込みができないというメッセージが表示されます。
マグマティック

1
@Magmaticは、そのフォルダーへのアクセス許可を変更し、www-dataに対して書き込み可能にして、所有者を確認します。
Beto Aveiga

3

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

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

で始まる

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


3
リンク先の記事ではDrushについて言及していません。Drushコマンドの実行に使用しているユーザーと、そのユーザーの設定方法を明確にしてください。
JW。

2
面白い!私はあなたがあなたがすでに引用したものに続く2つのpargsについても言及すべきだと思います...
Pierre.Vriens

1
Drupalのファイルフォルダーでは、Webサーバーから書き込み可能である必要があり、開発時には、機能フォルダーにもそれが必要になる可能性があります。
Beto Aveiga

1

$ PATHが変更さwww-dataれたため、drushが使用できなくなったため、drush を実行したとき。

回避策として、drushのパス全体を入力できます。

例えば

sudo -u www-data /home/vagrant/.composer/vendor/bin/drush status

自分のブラシのパスを取得するには、次のコマンドを実行します。

which drush

つまり、次のコマンドを実行することもできます。

sudo -u www-data `which drush` status

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.