Drush y permisos de usuario


10

Veo que mi usuario es miembro del grupo apache. He añadido y confirmado a través de lo siguiente

$ 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

Sin embargo, cuando intento ejecutar un núcleo de actualización drush o incluso cron cronómetro drush

$ drush cc all

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

ingrese la descripción de la imagen aquí

Y el caché CSS en esta situación se ve así

$ 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

ingrese la descripción de la imagen aquí

Supongo que mi cuenta de usuario, que tiene acceso a sudo, debería ser un miembro del grupo apache (o www-data) y que el árbol de archivos debería permitir el acceso de escritura grupal. Cualquier ayuda o puntos en la dirección correcta sería muy apreciada.


2
corre newgrp apachesin sudo e intenta de nuevo
Hamid Nikmehr

2
¿Saliste y volviste a entrar?
mpdonadio

Respuestas:


13

Podría decirse que un enfoque mucho más directo es no interferir en absoluto con las asignaciones de grupo de su usuario y, en su lugar, ejecutar drush como el usuario del servidor web (es decir: apache, www-data).

Usa sudo:

sudo -u apache drush

o en debian / ubuntu:

sudo -u www-data drush

Crea un alias de comando:

Luego, para asegurarte de que siempre ejecutas drush así, agrega un alias:

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

o en debian / ubuntu:

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

Ahora, cuando ejecute cualquier comando drush, sudo le solicitará su contraseña, y el comando se ejecutará como el usuario del servidor web. No más problemas de permisos para leer y escribir archivos.


1
Cuando ejecuto "sudo -u www-data drush", se queja de que el directorio drush-backups no se puede escribir.
Magmatic

1
@Magmatic solo cambia los permisos a esa carpeta, haz que se pueda escribir para www-data, verifica quién es el propietario.
Beto Aveiga el

3

Aunque la otra respuesta es informativa, ahora uso el permiso de usuario adecuado como se describe en

Asegurar los permisos y la propiedad del archivo

Que se abre con

El sistema de archivos del servidor debe configurarse de modo que el servidor web (por ejemplo, Apache) no tenga permiso para editar o escribir los archivos que luego ejecuta. Es decir, todos sus archivos deben ser de 'solo lectura' para el proceso de Apache y ser propiedad de un usuario separado con permisos de escritura.


3
El artículo al que enlaza no menciona Drush. ¿Podría, por favor, aclarar qué usuario está utilizando para ejecutar comandos Drush y cómo está configurado ese usuario?
JW.

2
¡Interesante! Creo que también debería mencionar los 2 pargs que siguen al que ya citó ...
Pierre.Vriens

1
En Drupal, la carpeta de archivos debe ser editable por el servidor web, y en el desarrollo probablemente también la necesite para la carpeta de características.
Beto Aveiga el

1

Cuando corrí drush como www-datadrush ya no estaba disponible ya que mi $ PATH había cambiado .

Como solución alternativa, puede ingresar en todo el camino hacia drush.

P.ej

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

Para obtener el camino de tu drush puedes correr:

which drush

Lo que significa que también puedes ejecutar:

sudo -u www-data `which drush` status

lo que elimina la necesidad de codificar la ruta en el comando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.