Pregunta ¿Averiguar a qué usuario se está ejecutando Apache?


Quiero asegurar un directorio de carga de archivos en mi servidor como se describe a la perfección aquí, pero tengo un problema antes de poder seguir estas instrucciones. No sé qué usuario está ejecutando Apache.

He encontrado una sugerencia de que puedes buscar en httpd.conf y habrá una línea de "Usuario", pero no hay tal línea en mi archivo httpd.conf, así que supongo que Apache se está ejecutando como el usuario predeterminado. Aunque no puedo averiguar qué es eso.

Entonces, mi pregunta es (son):

  • ¿Cómo puedo averiguar cuál es el defecto usuario es
  • ¿Necesito cambiar el usuario predeterminado
  • Si la respuesta es sí y cambio el usuario predeterminado editando httpd.conf, ¿Es probable que arruine algo?

¡Gracias!


191
2018-03-24 16:22


origen


¿Por qué se ha bajado esta pregunta? Sí, se ha actualizado tal como se ha respondido en algún lugar, pero ¿no veo la necesidad de votar a la baja? Es una pregunta perfectamente buena? ¿Tal vez nuestro votante bajista querría agregar un comentario constructivo al respecto? - Bryan
Es posible que desee publicar esa actualización como respuesta y aceptarla, ya que actualmente se encuentra en la cola Sin respuesta. - Fahad Sadah
+1 por ser despedido en StackOverflow; Algunos usuarios parecen insistentes en salir de nuevos usuarios. - wruckie
La pregunta vinculada ya no existe - pal4life
La siguiente pregunta: qué hacer porque es uno de dos usuarios, como root y www-data. ¿Cómo le das al grupo "correcto" de Apache un permiso para acceder a algo? - jww


Respuestas:


ps aux | egrep '(apache|httpd)' Normalmente se mostrará como se ejecuta apache.

Por lo general, no es necesario cambiar el usuario predeterminado, "nobody" o "apache" suelen ser buenos usuarios. Mientras no sea su "raíz";)

Edición: comando más preciso para capturar archivos binarios de apache también


194
2018-04-19 23:19



Sí, o será www-data en Ubuntu. - gravyface
... y Debian. :) - cubuspl42
Ese comando me muestra una lista de cosas, la mayoría de apache pero 1 de root también. - User
Tengo 3 procesos (/usr/sbin/apache2 -k start), el usuario de uno es root y los otros dos www-data. ¿Debería Preocuparme? - zundi
@zundi, el servicio comienza como root para hacer cosas como enlazar a puertos reservados (por ejemplo, 80 y 443). Luego comienza cualquiera que sea el número configurado de procesos, para hacer el trabajo del servidor web y cualquier otra tarea, como los usuarios definidos. De esa manera las solicitudes son manejadas por procesos no privilegiados. Notará que el ID de padre (PPID) es el mismo para todos los otros procesos. Esa idea puede ser el PID para ese proceso que se ejecuta como root. - Kevin


Puedes probar el siguiente comando:

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

31
2018-04-23 13:53



Me encanta esta respuesta, mejor (más genérica) que la respuesta más votada. Gracias - pgr


De acuerdo con la ubuntuforums.org, en Ubuntu el usuario predeterminado para apache2 es www-data.

Visto ser cierto en Ubuntu 13.10 Saucy.


Desde Lars Noodén en el foro anterior.

Para asegurarse de que realmente está configurado [el usuario], verifique los archivos de configuración reales.   El archivo paraguas, apache2.conf tendrá algo como lo siguiente,

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

Esa es una referencia a las variables de entorno establecidas en /etc/apache2/envvars.    mod_suexec También permite que los scripts se ejecuten como un usuario y grupo diferente.

Para encontrar cualquier host virtual, que pueda usar usuarios alternativos, grupos o ambos, verifique las configuraciones.

$ egrep "^User|^Group|^SuexecUserGroup" /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf

Para distribuciones basadas en Red Hat sería (generalmente su usuario que ejecuta httpd es apache):

$ egrep "^User|^Group|^SuexecUserGroup" /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf

9
2018-06-10 13:14





Sé que este es un post antiguo, pero aún está listado como sin respuesta, por lo que haré una sugerencia. Si no puede encontrar qué usuario o grupo está ejecutando Apache, quizás intente abrir el archivo httpd.conf. Debe haber una entrada allí para "Usuario" y "Grupo". No solo puede ver a qué usuario se está ejecutando Apache, sino que también puede cambiarlo si siente la necesidad de hacerlo.


8
2018-04-23 07:53





Puedes incluir una línea de código en tu script PHP:

echo exec('whoami');

7
2017-09-26 02:08



Cuidado, esto muestra al usuario bajo el que se ejecuta PHP, no al usuario de Apache. Si usa mod_php estos son los mismos pero si, como es muy común ahora, está usando otra cosa (como php_fpm), pueden ser fácilmente diferentes. - benz001


Utilizar apachectl -S, que mostrará algo de usuario y grupo de Apache, algo como esto:

User: name="_www" id=70
Group: name="_www" id=70

7
2017-09-11 00:28



Gracias, en mi Mac veo que apache se ejecuta como '_www'. - Mercury


Este código - más o menos - listará alfabéticamente a todos los usuarios no root que ejecutan procesos que contienen apache (o cuyo nombre contenga apache)

ps aux | grep -v root | grep apache | cut -d\  -f1 | sort | uniq

5
2018-03-06 12:28



La lista probablemente incluirá usuarios que estén ejecutando procesos como 'grep apache', como tu propio yo. - mwfearnley


  • Para averiguar el usuario, simplemente puede utilizar ps aux | grep apache mientras se está ejecutando.
  • No es necesario, pero si Apache se ejecuta como root hay problemas de seguridad.
  • En tercer lugar, cambiar el usuario de Apache cambiará sus derechos para acceder a algunos directorios. Debe asegurarse de que el usuario y el grupo nuevo puedan acceder a / var / www (o donde sea que tenga sus sitios web).
  • En los sistemas que he examinado, apache siempre se instaló utilizando apache: apache (o similar) como usuario y grupo, por lo que probablemente ya debería estar configurado de esa manera.

NOTA: Esta es la misma respuesta que di en Desbordamiento de pila.


4
2017-08-01 14:49





O puede verificar el archivo de configuración de apache y buscar el propietario y el grupo.


2
2018-04-23 15:33





Como lo sugiere Noyo aquí:

APACHE_USER=$(ps axho user,comm|grep -E "httpd|apache"|uniq|grep -v "root"|awk 'END {if ($1) print $1}')

Y entonces:

echo $APACHE_USER

2
2018-01-03 11:36



Obtenga el usuario (línea de comandos de ubuntu): echo $ APACHE_USER - Jadeye


Un enfoque alternativo, al menos para distribuciones basadas en Debian / Ubuntu, es Use el mismo método que Apache para establecer su usuario y grupo: fuente /etc/apache2/envvars


1
2018-02-04 00:55