Les droits d'Apache

Résolu
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   -  
 zamouranou -
Bonjour,

Je viens d'installer mon serveur web sur une machine Virtuelle sous Ubuntu Server.
J'utilise Apache2. Pour optimiser les droits dans le dossier /var/www/ j'ai actuellement donné le dossier en question à mon user "apatik:apatik" afin de ne pas être embété. Mais quel chmod mettre? Je n'ai pas vu d'user "Apache" dans /etc/passwd. En tant que quel user Apache accède-t-il a ce dossier? En Root? C'est pas dangereux d'un points de vue sécurité? Et je me pose les mêmes questions pour PHP.




5 réponses

Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856
 
Salut
généralement, pour un serveur web, tu peux mettre les droits sur les dossiers en 644 ou 640

Je te renvoie vers cette page, pour la compréhension des droits
https://fr.wikipedia.org/wiki/Chmod
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Merci, j'avais commencé par là ;)
Sauf que pour comprendre pourquoi je met ces droits là.. j'aimerai comprendre par l'intermédiaire de quel utilisateur Apache et PHP utilisent ces fichiers. A priori, si on met du 6 et pas du 7, c'est par Root pour pouvoir éxécuter le fichier?

Il n'y a pas moyen de créer un user pour Apache et PHP qui aurait un droit de lecture-éxécution, mais pas d'écriture? Enfin j'essaie de réfléchir à la sécurité.. peut-être que je fait fausse route..
0
Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856
 
apache étant un daemon, je pense que c'est le système qui le fait tourner avec les droits root.
pour php c'est pareil, c'est une partie de apache qui traite le php.
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Ok.. Ce qui veux dire que si par une faille quelconque on réussis à uploader un fichier php (genre c99shell) chez moi (ou via un include, ..) le type a directement un accès root chez moi? Flippant je trouve...
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,


En tant que quel user Apache accède-t-il a ce dossier? En Root? C'est pas dangereux d'un points de vue sécurité?
Non, pas en root ;-)

le type a directement un accès root chez moi?
Non, pas du tout

Affiche le résultat de
grep -i user /etc/apache2/apache2.conf 
ps aux| grep apache




GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Zut.. chui pas chez moi, et au boulot on a un peu un proxy ultra restrictif (même google passe pas), et les clients SSH sont tous payants sur l'AppStore.. Bref, je peux pas regarder ça avant ce soir.

Ceci dit, c'est une Ubuntu Server tout d'origine.. Si ça peux aider.
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Ok, donc pour le grep -i user /etc/apache2/apache2.conf
User ${APACHE_RUN_USER}
# Include all the user configurations:
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{User-agent}i" agent


Et pour le ps aux | apache
root     15249  0.0  0.5   5408  2556 ?        Ss   Aug23   0:00 /usr/sbin/apache2 -k start
www-data 15251  0.0  0.3   5180  1744 ?        S    Aug23   0:00 /usr/sbin/apache2 -k start
www-data 15252  0.0  0.6 227244  3428 ?        Sl   Aug23   0:00 /usr/sbin/apache2 -k start
www-data 15253  0.0  0.6 228556  3560 ?        Sl   Aug23   0:00 /usr/sbin/apache2 -k start
apatik   21710  0.0  0.1   3320   800 tty1     S+   09:04   0:00 grep --color=auto apache
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Dans le fichier se configuration se sont des variables et pas le nom en dur d'utilisateur apache2
Elle doit être définie quelque part dans les fichiers d'apache2
Peut être
 rgrep APACHE_RUN_USER /etc/apache2

En revanche dans la deuxième commande on vois qu'il y a une instance root et plusieurs instances www-data

www-data c'est l'utilisateur pour apache2

Pourquoi une instance root?
Elle est nécessaires à cause d'ouverture d'un port inférieur 1024, en l'occurence 80
Le rôle de l'instance root c'est de surveiller l'état (occupée ou attente)
A savoir aussi que l'instance root n'est pas à l'écoute.

Les instances www-data sont à l'écoute des requêtes web faites par les clients.

Donc tu n'as pas à te faire de soucis pour le compte root.
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Ok, merci pour ces infos. En voyant le ps aux j'ai compris qu'il y avait ce fameux www-data, mais pas le root.
Tout s'éclaire un poil.. Ce qui veux dire que si je met pas d'autorisations de lecture aux "autres" sur mon dossier /var/www/ Je vais me tapper une erreur 403 sur mon site? Je vais tester.
Par contre plusieur questions (comme je suis pas chez moi):
-Dans le fichier de config que je vais trouver, il y a les mdp www-data et root pour qu'Apache puisse s'éxecuter avec ces droits? Ou alors www-data n'a pas de mdp et utilise un "sudo" pour lancer l'instance en root?
-Pourquoi il y a plusieurs instances en www-data? Je n'imaginais qu'une seule instance pour l'écoute au départ, ok il y a la root qui supervise, mais les deux autres?

Merci d'avance pour tes réponses qui m'éclaircissent bien des choses =)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Juste une petite correction.
J'ai pensé à processus fils et j'ai écrit instance.
Donc il s'agit de processus fils et pas d'instances.
0
Apatik Messages postés 5304 Date d'inscription   Statut Contributeur Dernière intervention   782
 
Va pour les processus fils.. (Faudra que je fasse des recherches, mais ce sera possible quand je serais chez moi uniquement.. j'aurais sans doute d'autres questions après, mais j'ai pas envie de te demander des choses "basiques").

Ceci dit, je suppose qu'ils ont quand même chacun un rôle précis.. Tu ne saurais pas lesquels?
Quand aux histoires de connection et de compte.. tu saurais me dire comment ça se passe? (Dans les grandes lignes, j'appronfondirais mes recherches ensuite..).
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Au début apache crée un processus parent sous l'identité de root.
Il s'agit du processus qui va créer (fork) et gérer les processus fils.

Ce processus principal, ne réagira à aucune requête.
Les requêtes sont prises en charge par les processus fils inactifs (il y a des variables environnement qui définissent le nombre minimum et maximum de processus fils.

Quand une requête arrive, elle sera prise en charge pour un processus fils inactif.
S'il n'y a plus de processus fils inactif alors le processus père crée un nouveau processus fils pour recevoir la requête entrante.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Quand aux histoires de connection et de compte.. tu saurais me dire comment ça se passe?
Donc il n'y a pas des connexions au niveau de daemon apache si tu veux.
Les connexion sur les sites (par exemple ccm) sont régler au niveau d'accès sur site par des scripts de connexion.
A savoir qu'on peut utiliser les fichiers de configuratino d'apache pour permettre/interdire l'access aux utilisateurs

Quand tu pourras regarde le résultat de
grep www-data /etc/passwd
Normalement tu verras que le shell de connexion de www-data est soit nologin soit false.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zamouranou
 
bonjour svp j'ai un erreur de pkill: 12132 - Operation not permitted!!! j'a besoin d'aide
en effet j'exécute un script sh sous php
voici le contenue de /etc/sudoers
root ALL=(ALL) ALL
www-data ALL=(ALL) NOPASSWD
merci d'avance
0