291 votes

Découvrir sous quel utilisateur Apache fonctionne?

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

J'ai trouvé une suggestion selon laquelle vous pouvez regarder dans httpd.conf et qu'il y aura une ligne "Utilisateur", mais il n'y a pas une 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 cependant pas savoir qui c'est.

Alors, ma question est (sont) :

  • comment puis-je savoir qui est l'utilisateur par défaut
  • dois-je modifier l'utilisateur par défaut
  • si la réponse est oui et que je modifie l'utilisateur par défaut en éditant httpd.conf, est-il probable que cela causera des problèmes ?

Merci!

17 votes

Pourquoi cette question a-t-elle été downvotée? Oui, elle a été mise à jour car elle a obtenu une réponse ailleurs, mais je ne vois pas pourquoi la downvoter? C'est une question parfaitement valable? Peut-être que notre downvoter pourrait ajouter un commentaire constructif à ce sujet?

2 votes

Vous voudrez peut-être publier cette mise à jour en tant que réponse et l'accepter, car vous êtes actuellement dans la file d'attente des réponses non résolues.

12 votes

+1 pour avoir été réprimandé sur StackOverflow; certains utilisateurs semblent insister pour décourager les nouveaux utilisateurs

11voto

JG Estiot Points 109

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

echo exec('whoami');

9 votes

Faites attention ici, cela montre à l'utilisateur que PHP s'exécute sous, pas sous l'utilisateur Apache. Si vous utilisez mod_php, ils sont les mêmes, mais si, comme c'est maintenant très courant, vous utilisez autre chose (comme php_fpm), ils peuvent facilement être différents.

5voto

user163193 Points 51

Ce code listera - plus ou moins - de manière alphabétique tous les processus des utilisateurs non-root contenant apache (ou dont le nom contient apache)

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

1 votes

La liste inclura probablement des utilisateurs qui exécutent des processus comme 'grep apache', comme vous-même.

4voto

Kjir Points 141
  • Pour découvrir l'utilisateur, vous pouvez simplement utiliser ps aux | grep apache pendant son exécution.
  • Vous n'êtes pas obligé de le faire, mais s'il s'avère qu'Apache fonctionne en tant que root, il y a des problèmes de sécurité.
  • Ensuite, changer l'utilisateur d'Apache modifiera ses droits d'accès à certains répertoires. Vous devez vous assurer que /var/www (ou l'emplacement de vos sites web) est accessible au nouvel utilisateur et groupe. Sur les systèmes que j'ai examinés, apache était toujours installé en utilisant apache:apache (ou similaire) comme utilisateur et groupe, donc cela devrait probablement déjà être configuré de cette manière.

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

3voto

AliGibbs Points 2273

Ou vous pouvez vérifier le fichier de configuration apache et chercher le propriétaire et le groupe.

3voto

Andy Points 1932

Une approche alternative, du moins pour les distributions basées sur Debian/Ubuntu, est de utiliser la même méthode que celle utilisée par Apache pour définir son utilisateur et son groupe : source /etc/apache2/envvars!

$ echo "$(source /etc/apache2/envvars && echo "$APACHE_RUN_GROUP")"
www-data

Si vous souhaitez être plus astucieux, vous pouvez supprimer les erreurs si le fichier n'est pas trouvé, et fournir une valeur par défaut :

$ apacheuser=$(
     source /fail/etc/apache2/envvars 2>/dev/null &&
     echo "$APACHE\_RUN\_GROUP" ||
     echo nobody  
)
$ echo "$apacheuser"
nobody

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X