Cómo hacer que Apache se ejecute como usuario actual

44

Creo que para una máquina de desarrollo, ¿es más conveniente ejecutar Apache como el usuario actual para simplificar el problema de permisos? ¿Cómo puedo hacer eso? Creo que es suexec, pero ¿cómo lo configuro en Ubuntu + Apache?

Jiew Meng
fuente

Respuestas:

28

Yo mismo agregaría el usuario al www-datagrupo con ...

sudo adduser {username} www-data

Simple y efectivo. No te metas con archivos de configuración o permisos.

Rinzwind
fuente
66
Lo hice todo el tiempo, pero esto no solucionará algunos de los problemas de permiso denegado, ya que los derechos de grupo no son los mismos que los derechos de usuario para todos los archivos.
Kostanos
1
Esto no se solucionará si el CHMOD no permitió que el grupo escribiera.
GusDeCooL
El problema para mí es que tengo una instalación local. Cuando creo archivos con mi IDE, tienen mi 'usuario / grupo' y en algún momento Apache no puede leer esos archivos
Postadelmaga
esto por sí solo no resuelve muchos problemas de permisos porque su grupo principal normalmente no es www-data y algunas aplicaciones php requieren permisos de escritura grupal. (Joomla, WordPress)
Eric
2
Esto no resuelve el problema en el que crea archivos y www-data no puede eliminarlos / editarlos porque su grupo principal no es www-data
billy
57

Edite el siguiente archivo como root: / etc / apache2 / envvars

usando el comando:

sudo nano /etc/apache2/envvars

cambie el usuario y el grupo a sí mismo si solo hay un usuario y nunca más tendrá problemas de permisos.

IE, si solo inicia sesión y ejecuta el servidor como usuario 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Diablos, para el caso, podrías cambiar a ese usuario al usuario actual, estoy seguro de alguna manera. Luego, instale user_dir, todos tienen webs de las que solo usted puede tener control total (a menos que modifique esto).

Reinicie el servidor (si no está seguro, simplemente reinicie o goole) y ya está listo.

Eric
fuente
3
Esto funciona como un encanto! gracias. lo único que agregaría:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos
3
También probablemente necesitarássudo chown big_dog.big_dog -R /var/log/apache2
Kostanos
En OpenSUSE-Tumbleweed (y probablemente en algún otro) el archivo está en/etc/apache2/uid.conf
Dilawar el
No tiene que cambiar necesariamente el archivo envvars, acabo de actualizar las variables de entorno antes de comenzar Apache con un script. De esta manera, no está bloqueado para un solo usuario, pero quien ejecuta el script, ejecuta el apache. Solía export APACHE_RUN_USER=#$(id -u)dar la identificación de usuario y usar de manera similar id -gpara group en el script y al final llamé a apache para que se ejecutara.
inblueswithu
1

¿por qué harías esto? Estaba luchando con los problemas de perm en el pasado, pero este es mi proceso de desarrollo desde hoy:

  • instalar una nueva caja de linux (virtual o local como una laptop)
  • ejecute un sudo apt-get install lamp-server^proceso estándar para encender la lámpara
  • crea un enlace simbólico a mi directorio de inicio donde los proyectos son así:

    ln -s /home/user/html /var/www/html

  • hacer un enlace sym al archivo de configuración de hosts

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

Eso es :)

Funciona como se esperaba, no hay problemas con permisos de usuario o algo similar con el servidor apache, para mysql tengo un proceso un poco más largo.

hth, salud

Kresimir Pendic
fuente
Eso no aborda ninguno de los problemas de permisos abordados en la mayoría de las otras respuestas.
HörmannHH
0

Pasando por alto el problema "debería hacer esto", puede encontrar dónde está configurado el usuario para apache ejecutando:

grep www- /etc/apache2/apache2.conf

Entonces se trata de editar esas instancias /etc/apache2/apache2.confy volver a cargar Apache ( sudo /etc/init.d/apache2 reload).

Oli
fuente
apache2.confno contiene www-para mí
Jiew Meng
Tengo la sensación de que querías decir algo así grep -HR "www-" /etc/apache2/. Si ya sabe que está en apache2.conf, simplemente edite ese archivo. En mi caso, no estaba allí, pero en / etc / apache2 / envvars como señala la respuesta de Eric.
Mike
Eso es porque apache.confbusca ${APACHE_RUN_USER}y ${APACHE_RUN_GROUP}. No www-datadirectamente
Yahya Uddin el
0

crear un nuevo grupo de usuarios webdevy agregarle el www-datausuario.

sudo addgroup webdev
sudo adduser www-data webdev

Luego, continúe y agregue su usuario a ese grupo y conviértalo en el grupo predeterminado para su usuario.

sudo adduser {your-user} webdev
sudo addgroup webdev

Lo último que debe hacer es asegurarse de que el grupo webdev tenga derechos rwx en los archivos

sudo chmod 775 -R /path/to/project

Ahora, lo único que puede ocurrir es que, por ejemplo, www-data crea un nuevo archivo de registro y no puede rwx.

Thomas Venturini
fuente
1
¿Cuál es la ventaja de esto, en lugar de agregar mi propio usuario al www-datagrupo, especialmente porque estamos hablando de un entorno de desarrollo?
Dan
bueno, si lo haces de esta manera y configuras los derechos 775 a, por ejemplo, public_html o / var / www, no tendrás problemas con los derechos en tu máquina de desarrollo. los otros enfoques, te dejan con pasos adicionales para hacer o no son tan efectivos como yo quiero. Entonces, en mi opinión, esta es la mejor manera de tratarlo en una máquina de desarrollo. para servidores productivos, recomendaría una configuración diferente. También con este enfoque, puede agregar usuarios fácilmente.
Thomas Venturini