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?
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.
@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.
À 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.
Vérifiez également Apache2 ITK MPM .
Il fourche un fil Apache avec le uid
/gid
, cela continuons à utiliser mod_php
. Plus chmod
/chown
etc.
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)