1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Comprendre CHMOD (droits de fichiers sur serveur)
CHMOD (abréviation de change mode) permet de changer les permissions d'accès d'un fichier ou d'un répertoire.
Les droits (lire sur Wikipedia) disponibles pour chaque personne/groupe sont les suivantes:
- lecture: donne le droit de lister (nécessite aussi le droit exécution) et lire dans un répertoire et/ou lire un fichier
- écriture: donne le droit de créer, modifier, renommer, supprimer des fichiers et/ou répertoires
- exécution: pour un répertoire : donne le droit de le traverser pour lire ses sous-répertoires -> Pour un fichier : donne le droit de l’exécuter si c'est un programme ou un script par exemple.
- set uid (lire sur Wikipedia): sur un fichier avec les droits d'exécution cela aura pour effet de l'exécuter avec les droits du propriétaire s'il utilise l'appel système execve ou setuid
- set gid (lire sur Wikipedia): tous les nouveaux fichiers créés appartiendront au groupe du répertoire et sur un fichier avec les droits d'exécution cela aura pour effet de l'exécuter avec les droits du groupe
- sticky bit (lire sur Wikipedia): sur un répertoire, les fichiers du répertoire pourront être renommés ou supprimés uniquement par le propriétaire, même si les autres utilisateurs ont le droit d'écriture. Droit pas vraiment utile sur les fichiers
Le gestionnaire de fichiers FTP Manager permet de changer les permissions des fichiers (y compris celui de /web).
La plupart des logiciels/clients FTP permettent de changer les droits d'accès aux fichiers; la fonction s'appelle généralement "CHMOD" et se trouve sous "Propriétés", "Permissions" ou "Attributs" (en général en faisant clic droit sur le fichier ou dossier à modifier). Une case permet souvent d'appliquer les permissions à tous les sous-répertoires et fichiers dans le dossier, en mode récursif.
Lorsque vous avez coché les permissions qui vous intéressent, validez et les droits seront modifiés sauf ceux que vous n'avez pas l'autorisation de modifier ou plutôt que l'utilisateur sous lequel vous êtes identifié n'a pas le droit de modifier.
Exemple avec Filezilla:
En savoir plus
Lorsqu'on parle de changer des permissions, en général il s'agit de faire un "chmod 777
", "chmod 666
" ou autre. Donc trois chiffres dont:
- le premier correspond aux droits du propriétaire
- le deuxième correspond aux droits du groupe
- le troisième chiffre correspond aux droits des autres utilisateurs.
Et les droits se décomposent ainsi:
- "4" pour le droit de lecture (read)
- "2" pour le droit d'Ă©criture (write)
- "1" pour le droit d'exécution (execute)
Il suffit ensuite d'additionner ces chiffres. P.ex si vous voulez tous les droits pour le propriétaire mais aucun droit pour les autres, vous ferez "chmod 700" (4 + 2 + 1 = 7). Si vous voulez uniquement les droits de lecture et écriture pour tout le monde (4 + 2 = 6), vous ferez un "chmod 666".
Ces valeurs sont connues de tout bon logiciel/client FTP, donc vous aurez la possibilité de mettre directement le nombre dans votre logiciel/client FTP pour que les permissions soient changées.
Pour changer les permissions sur des fichiers ou répertoires en PHP, vous pouvez également le faire avec la fonction "chmod" comme sur l'exemple suivant :
chmod ("/un_dossier/un_fichier", 0755)
Notez que la valeur à appliquer doit être en octale, d'où le zéro devant obligatoire. Attention si vous stockez la valeur dans une variable, vous allez avoir un problème de type de données, que vous pouvez contourner avec la fonction octdec()
, comme sur l'exemple suivant:
$mode = 0755;chmod("/un_dossier/un_fichier", octdec($mode))