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.

S'entraîner : questions sur Permissions (droits d'accès)

Dans le répertoire personnel, « ls » n'affiche que notes.txt, alors que « ls -a » affiche « . », « .. », « .bashrc » et « notes.txt ». Quelle explication de ce résultat est correcte ?

  1. A« . » désigne le répertoire courant et « .. » le répertoire parent ; .bashrc, dont le nom commence par « . », est un fichier caché et ne s'affiche pas sans -a
  2. B« . » désigne le répertoire courant et « .. » le répertoire parent ; .bashrc est un fichier interdit en écriture et ne s'affiche pas sans -a
  3. C« . » désigne le répertoire racine et « .. » le répertoire personnel ; .bashrc, dont le nom commence par « . », est un fichier caché et ne s'affiche pas sans -a
Afficher la réponse et l'explication

Réponse : A. « . » désigne le répertoire courant et « .. » le répertoire parent ; .bashrc, dont le nom commence par « . », est un fichier caché et ne s'affiche pas sans -a

Chaque répertoire contient une entrée « . », qui désigne le répertoire lui-même, et une entrée « .. », qui désigne son répertoire parent. Les fichiers et répertoires dont le nom commence par « . » sont traités comme cachés : ls ne les affiche pas sans option, et les affiche avec -a (all). Les fichiers de configuration des shells et des outils, comme .bashrc, reçoivent souvent un nom caché pour ne pas encombrer les listes ordinaires. L'affichage ne dépend que du nom et n'a rien à voir avec les permissions du fichier.

Quelle description de la commande sudo de Linux est correcte ?

  1. AToute personne qui connaît le mot de passe de root peut exécuter une commande précédée de sudo, et rien n'enregistre qui l'a exécutée
  2. BUne commande précédée de sudo reçoit du noyau une priorité plus élevée que les autres processus et s'exécute plus vite, car elle peut utiliser le CPU en premier
  3. CElle permet à un utilisateur autorisé dans sudoers d'exécuter une commande avec les droits d'un autre utilisateur (root par défaut), et par défaut l'utilisateur saisit son propre mot de passe
Afficher la réponse et l'explication

Réponse : C. Elle permet à un utilisateur autorisé dans sudoers d'exécuter une commande avec les droits d'un autre utilisateur (root par défaut), et par défaut l'utilisateur saisit son propre mot de passe

root est le compte administrateur (le superutilisateur) qui peut agir sur tout le système, en principe sans les restrictions des permissions des fichiers. sudo est un mécanisme qui permet uniquement aux utilisateurs autorisés dans /etc/sudoers ou un fichier semblable d'exécuter des commandes une par une avec les droits de root ou d'un autre utilisateur ; avec la configuration par défaut, il demande confirmation par le mot de passe de l'utilisateur lui-même et enregistre les commandes exécutées. Par rapport au partage du mot de passe de root et à une connexion permanente en tant que root, il est plus facile de savoir qui a fait quoi, et les droits étendus ne servent que lorsqu'ils sont nécessaires. Limiter les droits au strict nécessaire découle du principe du moindre privilège en sécurité.

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).

« Permissions (droits d'accès) » dans les explications

Questions mentionnant « Permissions (droits d'accès) » (2)

  1. Dans le répertoire personnel, « ls » n'affiche que notes.txt, alors que « ls -a » affiche « . », « .. », « .bashrc » et « notes.txt ». Quelle explication de ce résultat est correcte ?
  2. Quelle description de la commande sudo de Linux est correcte ?

Termes associés

Shell Superutilisateur Principe du moindre privilège cron Expression régulière (regex) Git grep inode Lien physique (hard link) Lien symbolique (symlink)

Retour au glossaire