Question Découvrir quel utilisateur Apache est exécuté?


Je souhaite sécuriser un répertoire de téléchargement de fichiers sur mon serveur, comme décrit joliment ici, mais j’ai un problème avant de pouvoir suivre ces instructions. Je ne sais pas sous quel utilisateur Apache s'exécute.

J'ai trouvé une suggestion que vous pouvez regarder dans httpd.conf et qu'il y aura une ligne "Utilisateur", mais il n'y a pas de telle ligne dans mon fichier httpd.conf, donc je suppose qu'Apache s'exécute en tant qu'utilisateur par défaut. Je ne peux pas savoir ce que c'est, cependant.

Donc, ma question est (sont):

  • comment puis-je savoir ce que le défaut l'utilisateur est
  • dois-je changer l'utilisateur par défaut
  • si la réponse est oui et je change la utilisateur par défaut en éditant httpd.conf, est-il susceptible de foirer quelque chose?

Merci!


191
2018-03-24 16:22


origine


pourquoi cette question a-t-elle été rejetée? Oui, il a été mis à jour comme il a été répondu ailleurs, mais je ne vois pas la nécessité de voter à la baisse? C'est une très bonne question? Peut-être notre électeur le plus en retard voudrait-il ajouter un commentaire constructif à ce sujet? - Bryan
Vous voudrez peut-être publier cette mise à jour en tant que réponse et l'accepter, car vous vous trouvez actuellement dans la file d'attente sans réponse. - Fahad Sadah
+1 pour avoir été annulé sur StackOverflow; certains utilisateurs semblent insister pour chasser les nouveaux utilisateurs - wruckie
La question liée n'existe plus - pal4life
La question suivante: que faire, car c’est l’un des deux utilisateurs, comme root et www-data. Comment donnez-vous au "bon" groupe Apache la permission d'accéder à quelque chose? - jww


Réponses:


ps aux | egrep '(apache|httpd)' Généralement, vous verrez comment fonctionne Apache.

Habituellement, vous n'avez pas besoin de changer l'utilisateur par défaut, "personne" ou "apache" sont généralement de bons utilisateurs. Tant que ce n'est pas "root";)

edit: commande plus précise pour attraper aussi les binaires apache


194
2018-04-19 23:19



Ouais, ou ce sera www-data sur Ubuntu. - gravyface
... et Debian. :) - cubuspl42
Cette commande me montre une liste de choses, la plupart de apache mais 1 de root aussi. - User
J'ai 3 processus (/usr/sbin/apache2 -k start), son utilisateur est root et les deux autres www-data. Devrais-je être concerné? - zundi
@zundi, le service démarre en tant qu'utilisateur root afin d'effectuer des opérations telles que la liaison à des ports réservés (par exemple 80 et 443). Ensuite, quel que soit le nombre de processus configurés, il démarre pour effectuer le travail du serveur Web, ainsi que toute autre tâche, en tant qu'utilisateur défini. De cette façon, les demandes sont traitées par des processus non privilégiés. Vous remarquerez que l'ID parent (PPID) est le même pour tous les autres processus. Cette idée correspond au PID de ce processus exécuté en tant que root. - Kevin


Vous pouvez essayer la commande suivante:

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

31
2018-04-23 13:53



J'aime cette réponse, meilleure (plus générique) que la réponse la plus votée. Merci - pgr


Selon le ubuntuforums.org, sur Ubuntu, l'utilisateur par défaut pour apache2 est www-data.

Vu pour être vrai sur Ubuntu 13.10 Saucy.


De Lars Noodén sur le forum ci-dessus.

Pour être sûr de ce que [l'utilisateur] est réellement configuré, vérifiez les fichiers de configuration actuels.   Le fichier parapluie, apache2.conf aura quelque chose comme ce qui suit,

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

C’est une référence aux variables d’environnement définies dans /etc/apache2/envvars.    mod_suexec permet également d’exécuter des scripts en tant qu’utilisateur et groupe différents.

Pour rechercher des hôtes virtuels pouvant utiliser d'autres utilisateurs, groupes ou les deux, vérifiez les configurations.

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

Pour les distributions basées sur Red Hat, ce serait (généralement son utilisateur exécutant httpd est apache):

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

9
2018-06-10 13:14





Je sais qu'il s'agit d'un ancien message, mais il est toujours répertorié comme étant sans réponse. Je vais donc faire une suggestion. Si vous ne trouvez pas l'utilisateur ou le groupe sous lequel Apache est exécuté, essayez peut-être d'ouvrir le fichier httpd.conf. Il devrait y avoir une entrée pour "Utilisateur" et "Groupe". Vous pouvez non seulement voir quel utilisateur Apache est supposé fonctionner, mais vous pouvez le changer si vous en ressentez le besoin.


8
2018-04-23 07:53





Vous pouvez inclure une ligne de code dans votre script PHP:

echo exec('whoami');

7
2017-09-26 02:08



Attention ici, cela montre à l'utilisateur que PHP est exécuté, pas à l'utilisateur Apache. Si vous utilisez mod_php, elles sont identiques, mais si, comme cela est maintenant très courant, vous utilisez autre chose (comme php_fpm), elles peuvent facilement être différentes. - benz001


Utilisation apachectl -S, qui montrera quelque chose d’utilisateur et de groupe Apache, quelque chose comme ceci:

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

7
2017-09-11 00:28



Merci, sur mon mac, je vois qu'apache tourne en tant que '_www'. - Mercury


Ce code listera - plus ou moins - par ordre alphabétique tous les utilisateurs non root exécutant des processus contenant apache (ou dont le nom contient apache)

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

5
2018-03-06 12:28



La liste comprendra probablement des utilisateurs qui exécutent des processus tels que 'grep apache', tels que votre personne. - mwfearnley


  • Pour trouver l'utilisateur, vous pouvez simplement utiliser ps aux | grep apache pendant qu'il court.
  • Ce n'est pas nécessaire, mais si Apache est exécuté en tant que root, des problèmes de sécurité se posent.
  • Troisièmement, changer l'utilisateur d'Apache changera ses droits pour accéder à certains répertoires. Vous devez vous assurer que / var / www (ou où que vous ayez vos sites Web) soit accessible au nouvel utilisateur et au nouveau groupe.
  • Sur les systèmes que j'ai examinés, apache a toujours été installé à l'aide d'apache: apache (ou similaire) en tant qu'utilisateur et groupe, il devrait donc probablement déjà être configuré de cette manière.

NOTE: Ceci est la même réponse que j'ai donnée sur Stackoverflow.


4
2017-08-01 14:49





Ou vous pouvez consulter le fichier de configuration apache et rechercher le propriétaire et le groupe.


2
2018-04-23 15:33





Comme suggéré par Noyo ici:

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

Et alors:

echo $APACHE_USER

2
2018-01-03 11:36



Obtenez l'utilisateur (ligne de commande ubuntu): echo $ APACHE_USER - Jadeye