Drush- und Benutzerberechtigungen

10

Ich sehe, dass mein Benutzer Mitglied der Apache-Gruppe ist. Ich habe Folgendes hinzugefügt und bestätigt

$ 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

Wenn ich jedoch versuche, einen Drush-Update-Core oder sogar Drush-Cron auszuführen

$ drush cc all

unlink(sites/default/files/css/css_71ba7c25a8d3c47c68a8e05608ae525c.css):[warning]
Permission denied file.inc:482

Geben Sie hier die Bildbeschreibung ein

Und der CSS-Cache sieht in dieser Situation so aus

$ 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

Geben Sie hier die Bildbeschreibung ein

Ich würde davon ausgehen, dass mein Benutzerkonto, das über Sudo-Zugriff verfügt, ein Gruppenmitglied von Apache (oder WWW-Daten) sein sollte und dass der Dateibaum den Gruppenschreibzugriff ermöglichen sollte. Jede Hilfe oder Hinweise in die richtige Richtung wäre sehr dankbar.

Rick
quelle
2
Laufen Sie newgrp apacheohne Sudo und versuchen Sie es erneut
Hamid Nikmehr
2
Haben Sie sich abgemeldet und dann wieder angemeldet?
mpdonadio

Antworten:

13

Ein viel einfacherer Ansatz besteht wohl darin, sich überhaupt nicht mit den Gruppenzuweisungen Ihres Benutzers zu beschäftigen und stattdessen Drush als Webserver-Benutzer auszuführen (dh: Apache, WWW-Daten).

Verwenden Sie sudo:

sudo -u apache drush

oder auf debian / ubuntu:

sudo -u www-data drush

Erstellen Sie einen Befehlsalias:

Fügen Sie dann einen Alias ​​hinzu, um sicherzustellen, dass Sie immer so drush ausführen:

echo "alias drush='sudo -u apache drush'" >> ~/.bash_aliases 

oder auf debian / ubuntu:

echo "alias drush='sudo -u www-data drush'" >> ~/.bash_aliases 

Wenn Sie jetzt einen Drush-Befehl ausführen, werden Sie von sudo zur Eingabe Ihres Kennworts aufgefordert, und der Befehl wird als Webserver-Benutzer ausgeführt. Keine Berechtigungen mehr beim Lesen und Schreiben von Dateien.

rcourtna
quelle
1
Wenn ich "sudo -u www-data drush" ausführe, wird das Drush-Backups-Verzeichnis nicht beschreibbar.
Magmatisch
1
@Magmatic ändert einfach die Berechtigungen für diesen Ordner, macht ihn für WWW-Daten beschreibbar und überprüft, wer der Eigentümer ist.
Beto Aveiga
3

Obwohl die andere Antwort informativ ist, verwende ich jetzt die richtige Benutzerberechtigung, wie in beschrieben

Sichern von Dateiberechtigungen und Eigentumsrechten

Welches beginnt mit

Das Server-Dateisystem sollte so konfiguriert sein, dass der Webserver (z. B. Apache) keine Berechtigung zum Bearbeiten oder Schreiben der Dateien hat, die er dann ausführt. Das heißt, alle Ihre Dateien sollten für den Apache-Prozess schreibgeschützt sein und über Schreibberechtigungen eines separaten Benutzers verfügen.

Rick
quelle
3
Der Artikel, auf den Sie verlinken, erwähnt Drush nicht. Könnten Sie bitte klären, welchen Benutzer Sie zum Ausführen von Drush-Befehlen verwenden und wie dieser Benutzer eingerichtet ist?
JW.
2
Interessant! Ich denke, Sie sollten auch die 2 Pargs erwähnen, die dem bereits zitierten folgen ...
Pierre.Vriens
1
In Drupal-Dateien muss der Ordner vom Webserver beschreibbar sein, und in der Entwicklung benötigen Sie diesen Ordner wahrscheinlich auch für Features.
Beto Aveiga
1

Als ich drush lief, war drush as www-datadrush nicht mehr verfügbar, da sich mein $ PATH geändert hatte .

Um dieses Problem zu umgehen, können Sie den gesamten Pfad zum Drush eingeben.

Z.B

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

Um den Weg Ihres Drushs zu finden, können Sie laufen:

which drush

Das heißt, Sie können auch einfach laufen:

sudo -u www-data `which drush` status

Dadurch entfällt die Notwendigkeit, den Pfad im Befehl fest zu codieren.

Felix Eve
quelle