web-dev-qa-db-fra.com

Comment savons-nous qu'un répertoire est accessible en écriture pour Apache?

On m'a dit que je devais créer un dossier d'images et un dossier d'actifs, et que je devais m'assurer que: "ils sont inscriptibles pour Apache". On m'a également dit de rendre le répertoire app/runtime accessible en écriture sur le Web. Est-ce la même chose qu'Apache en écriture? Si c'est le cas:

Comment puis-je le faire immédiatement ou le savoir?

Faire un ls -l je reçois quelque chose comme:

drwxr-xr-x 13 user user 4096 2011-08-26 10:23 app
drwxr-xr-x 4 user user 4096 2011-08-26 10:23 runtime
drwxr-xr-x 2 user user 4096 2011-08-26 11:11 images
drwxr-xr-x 2 user user 4096 2011-08-26 11:12 assets
20
MEM

Apache, est un programme exécuté en arrière-plan. Apache est initialement lancé par l'utilisateur root(également appelé root-process). Ce root-process lance plusieurs processus enfants qui gèrent les demandes du client. Pour des raisons de sécurité, les processus enfants ne sont pas exécutés par l'utilisateur rootmais en tant qu'utilisateur disposant de privilèges minimaux. Généralement, cet utilisateur s'appelle Apacheou www-data.

Pour savoir quel utilisateur il s'agit pour Apache v1:

ps -ef | grep httpd | grep -v grep

ou pour Apache v2:

ps -ef | grep Apache | grep -v grep

Le résultat pour Apache 2 ressemblera à ceci:

 racine 5001 1 0 07:21? 00:00:00/usr/sbin/Apache2 -k start 
 Www-data 5021 5001 0 07:21? 00:00:00/usr/sbin/Apache2 -k start 
 Www-data 5022 5001 0 07:21? 00:00:00/usr/sbin/Apache2 -k start 
 Www-data 5023 5001 0 07:21? 00:00:00/usr/sbin/Apache2 -k start 

Dans ce cas, l'utilisateur/groupe est www-data

Ainsi, afin de rendre un répertoire accessible en écriture par le serveur Web, nous devons définir le propriétaire ou le groupe du répertoire sur le propriétaire ou le groupe Apache et activer l’autorisation d’écriture pour celui-ci. Généralement, nous définissons le répertoire comme appartenant au groupe Apache (Apacheou `www-data ou quel que soit l'utilisateur utilisé pour lancer les processus enfants) et activons l'autorisation d'écriture pour le groupe.

chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir

(www-data est le nom trouvé avec la commande psci-dessus).

En ce qui concerne:

2) On m'a également demandé de rendre le répertoire app/runtime accessible en écriture sur le Web. Est-ce la même chose qu'Apache en écriture?

Oui, il s'agit d'un répertoire que vous devez définir en écriture pour le groupe attendu par Apache. Ce sera probablement quelque part dans /var/www/ ou il est défini comme hôte virtuel dans /etc/Apache2/sites-enabled/ et/ou /etc/Apache2/sites-available

24
Rinzwind