web-dev-qa-db-fra.com

Exécuter Apache comme un autre utilisateur

Quand je cours le ps -efH Commande à répertorier tout le processus, je peux voir Apache en cours d'exécution root et semble avoir des sous-processus fonctionnant comme www-data. Voici l'extrait:

root     30117     1  0 09:10 ?        00:00:00   /usr/sbin/Apache2 -k start
www-data 30119 30117  0 09:10 ?        00:00:00     /usr/sbin/Apache2 -k start
www-data 30120 30117  0 09:10 ?        00:00:00     /usr/sbin/Apache2 -k start
www-data 30121 30117  0 09:10 ?        00:00:00     /usr/sbin/Apache2 -k start

Puis-je créer Apache et tous les sous-processus exécutés comme utilisateur différent Apache2d:Apache2d? Si c'est le cas, comment? J'ai lu quelque part que les paramètres pour cela peuvent être trouvés dans /etc/Apache2/httpd.conf Mais ce fichier semble être vide? Peut-on être accompli en modifiant le propriétaire et le groupe du /etc/init.d/Apache2 script puis réglage le drapeau SETUID sur celui-ci?

10
Mridang Agarwalla

Apache doit exécuter en tant que root d'initialement pour se lier au port 80. Si vous ne l'exécutez pas comme une root, vous ne pouvez pas se lier au port 80. Si vous souhaitez vous lier à un port supérieur à 1024, vous pouvez. Sinon, ne vous inquiétez pas pour la racine. C'est le processus parent Apache et ne servent aucune demande. Il va épargner des processus enfants et déposera des privilèges pour la manipulation des demandes.

Pour changer l'utilisateur Apache, définissez les paramètres User et Group dans votre configuration Apache.

21
bahamat

@bahamat l'explique bien, mais j'ajouterai un peu plus de détails.

Au cours du fonctionnement normal, le processus Apache appartenant à la racine n'effectuera aucune opération réelle autre que d'écouter sur le port 80 et de transférer des connexions entrantes à son (sans perfectionner non privilégié, comme le www-data utilisateur) enfants.

L'emplacement du fichier de configuration maître dépend des options de compilation et varie par distribution, mais /etc/Apache2/Apache2.conf est une bonne supposition de départ.

En outre, si vous configurez un système WebHosting multi-utilisateurs, vous voudrez peut-être examiner SUEXEC et FCGID de manière à ce que chaque processus Apache d'utilisateur de chaque utilisateur interviende comme ledit utilisateur - de sorte que si un utilisateur est négligent de leur sécurité, d'autres utilisateurs ne seront pas affectés.

4
Shadur

À Ubuntu au moins, les paramètres de ceci sont en /etc/Apache2/envvars. Modifiez ceux-ci, puis redémarrez Apache et vous êtes en panne.

3
mlissner

Vérifiez également Apache2 ITK MPM .

Il fourche un fil Apache avec le uid/gid, cela continuons à utiliser mod_php. Plus chmod/chown etc.

2
Olli

Mac OSX :

Ce qui a fonctionné pour moi, c'est un fichier de configuration Apache:

/etc/Apache2/httpd.conf

Dans ce fichier, j'ai recherché tilisateur ou groupe

et heurté:

User _www
Group _www

Je l'ai changé à quel que soit l'utilisateur/groupe dont j'avais besoin (dans mon cas à l'utilisateur/groupe qui est le propriétaire de mes fichiers d'application Web que vous pouvez voir. Et ceci vous pouvez vérifier en utilisant le simple 'ls -l' commander)

0
Mercury