Ce qu’il faut c’est effectivement donner les bons droits sur tes fichiers.
Il faut savoir qu’Apache (et donc PHP) tournent avec les droits de l’utilisateur « www-data
».
Perso ce que je fais (mais je suis un peu paranoïaque) c’est :
# chown -R root:www-data /var/www
# find /var/www -type f -print0 | xargs -0 chmod -t,a-rwxs,u+rw,g+r
# find /var/www -type d -print0 | xargs -0 chmod -t,a-rwxs,u+rwx,g+rx
En pratique ça veut dire que seul le propriétaire ( root
) peut modifier les fichiers ou écrire dans /var/www
, et le groupe ( www-data
) peut uniquement les lire. Les utilisateurs qui n’appartiennent pas au groupe www-data
ne peuvent même pas y accéder (ce qui est pas mal car souvent il y a des mots de passe dans des fichiers de config, on veut pas que n’importe qui puisse les lire !).
Si jamais comme ça arrive souvent tu as une appli web qui a besoin d’écrire dans un fichier ou dossier spécifique (genre dossier temporaire ou de cache, générateur de fichier de config pendant la phase d’installation, … en principe c’est indiqué dans le document d’installation de l’appli en question), il faut en plus donner les droits d’écriture au groupe www-data
pour ce fichier ou dossier particulier :
# chmod g+w /var/www/chemin/vers/fichier
# chmod -R g+w /var/www/chemin/vers/dossier
Note le -R
(récursif) dans le cas d’un dossier, car si l’appli web a besoin d’écrire dans le dossier elle a aussi besoin de pouvoir écrire dans les sous-dossiers et les fichiers.
Sinon tu peux aussi autoriser www-data
à tout modifier, c’est plus simple à gérer même si c’est moins sécurisé (c’est ce que je fais sur mes postes de développement, la méthode ci-dessus c’est plus pour de la prod) :
# chown -R www-data:www-data /var/www
# find /var/www -type f -print0 | xargs -0 chmod -t,a-rwxs,u+rw
# find /var/www -type d -print0 | xargs -0 chmod -t,a-rwxs,u+rwx
Une question syam : avec ces droits :
1/ les visiteurs du site web ne sont pas gênés pour la lecture de toutes les pages, y-compris les pages privées avec MDP ?
2/ la gestion avec FileZilla reste possible ?