Qu'est-ce que Permissions (droits d'accès) ?
Sous Linux et les systèmes semblables, réglage propre à chaque fichier et répertoire qui détermine si la lecture (r), l'écriture (w) et l'exécution (x) sont autorisées pour le propriétaire (user), le groupe (group) et les autres (others). ls -l l'affiche sous la forme rwxr-xr--, et chmod l'exprime aussi en octal, comme 754 (somme de r = 4, w = 2, x = 1). Les permissions des fichiers nouvellement créés sont déterminées par l'umask. root (le superutilisateur) peut en général lire et écrire les fichiers sans tenir compte de ces restrictions.
Nom japonais: パーミッション
« Permissions (droits d'accès) » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Bases de Linux et de la ligne de commande.
Domaine: Bases de Linux et de la ligne de commande
Lire la notation
Parmi les 10 premiers caractères de ls -l, le premier indique le type de fichier (- pour un fichier ordinaire, d pour un répertoire, l pour un lien symbolique), et chaque groupe de trois qui suit donne les permissions du propriétaire, du groupe et des autres. En octal, chaque chiffre est la somme de r = 4, w = 2 et x = 1 : rwxr-xr-- vaut donc 754, et rw-r--r-- vaut 644. Outre la forme numérique, comme chmod 754 file, des symboles permettent de ne modifier qu'une partie, comme chmod g+w file ou chmod o-r file.
Permissions des répertoires
Pour un répertoire, r est le droit de lire la liste des noms qu'il contient, w celui d'y créer et d'y supprimer des fichiers, et x celui d'y entrer et d'atteindre des fichiers par leur nom. Ce n'est donc pas le fichier lui-même, mais le w et le x du répertoire qui décident si un fichier peut être supprimé. Un répertoire où tout le monde peut écrire, comme /tmp, reçoit le sticky bit (t), pour que personne ne puisse supprimer les fichiers des autres.
Bits spéciaux et umask
Il existe setuid, qui fait s'exécuter un programme avec les droits du propriétaire (s à la position du x du propriétaire), setgid, qui le fait s'exécuter avec les droits du groupe, et le sticky bit mentionné plus haut ; en octal, ils correspondent respectivement aux positions 4000, 2000 et 1000. Les nouveaux fichiers sont créés à partir de 666 et les répertoires à partir de 777, en retirant les bits de l'umask : avec l'umask 022, les fichiers ont donc 644 et les répertoires 755.
Questions fréquentes
Un chmod 777 résout-il le problème ?
Le message « Permission denied » peut disparaître, mais n'importe qui peut alors modifier ou exécuter le fichier, et d'autres utilisateurs ou programmes risquent d'en changer le contenu. La démarche de base consiste à vérifier d'abord quels utilisateurs doivent pouvoir faire quelles opérations, à ajuster le propriétaire et le groupe avec chown et chgrp, puis à n'accorder que les permissions nécessaires.
Comment ne laisser que les membres de l'équipe lire des fichiers sur un serveur partagé ?
On crée un groupe pour l'équipe, on y ajoute les membres, on attribue ce groupe aux fichiers et aux répertoires, puis on donne r au groupe (r et x pour les répertoires) et rien aux autres (par exemple 640 pour les fichiers et 750 pour les répertoires). Pour régler les permissions finement, personne par personne, on peut aussi utiliser les ACL (setfacl, getfacl).