Déchiffrer les autorisations du système de fichiers Linux

Publié: 2017-02-24

Les autorisations de fichiers Linux peuvent sembler être des hiéroglyphes arcanes de la théorie des nombres pour certains et c'est compréhensible. Le modèle d'autorisation du système de fichiers de Linux découle de l'héritage d'UNIX. Cependant, ils sont assez faciles à saisir, une fois que vous avez compris la logique qui les sous-tend.

Groupes et types d'autorisations

Tous les contrôles d'accès aux fichiers et dossiers sont définis dans le système de fichiers à l'aide des informations suivantes :

  • Trois groupes d'autorisation : u pour le propriétaire, g , groupe, o ou a , tous les utilisateurs.
  • Trois types d'autorisation : r , lire, x , exécuter, w , écrire.

Les types d'autorisation sont les caractères "r", "x" et "w", appelés drapeaux, et sont affichés comme tels si vous répertoriez les autorisations du fichier ou du dossier d'une manière ou d'une autre. Les drapeaux non définis sont représentés par un caractère "-". Les autorisations du groupe sont utilisées dans les commandes qui modifient la propriété et le groupe d'un fichier, que nous aborderons sous peu.

Afficher les autorisations

Vous pouvez afficher les autorisations d'un fichier ou d'un dossier en utilisant un gestionnaire de fichiers GUI ou en inspectant la sortie de la commande ls dans le terminal de la console.

Ouvrez votre terminal et tapez la commande suivante :

$ test tactile

$ ls -la test

-rw-r–r– 1 personnel yorgos 0 23 février 17:07 test

La chaîne "-rw-r–r–" contient les informations d'autorisation du système de fichiers qui nous intéressent. Le reste des champs de gauche à droite affiche les informations suivantes :

  • combien de liens il y a vers ce fichier (1)
  • l'ID utilisateur du propriétaire (yorgos)
  • L'identifiant du groupe (personnel)
  • Longueur du fichier en octets (0)
  • Date de création (23 février)
  • Heure de création (17:07)
  • Nom de fichier (test)

Bits d'autorisation

Vous remarquerez qu'il existe 9 combinaisons différentes de groupes et de types d'autorisations, mais 10 positions de drapeau. Le premier affiche l'indicateur de type de fichier tandis que le second indique les autorisations elles-mêmes. Les types de fichiers peuvent être : "-" pour les fichiers, "l" pour les liens symboliques (ce sont des liens de système de fichiers qui pointent simplement vers un autre fichier) et "d" pour les répertoires. Puisque le premier caractère/drapeau de notre exemple est "-", nous parlons d'un fichier simple. En continuant, décomposons le champ des autorisations :

 : Type de fichier (il peut contenir l, - ou d)

rw- : autorisations de lecture et d'écriture (pas d'exécution). Ces autorisations sont pour le propriétaire.

r– : autorisation de lecture, pas d'autorisation d'écriture et d'exécution. Ces autorisations concernent les utilisateurs appartenant à un groupe.

r– : autorisation de lecture, pas d'écriture et d'exécution. Enfin, ces autorisations concernent tout le monde.

Donc, en fait, cela signifie simplement "ce fichier peut être lu et écrit par le propriétaire, et il est en lecture seule par tout le monde". Le groupe partage les mêmes autorisations.

Modification des autorisations

Pour modifier les autorisations d'un fichier ou d'un dossier, encore une fois, vous utilisez soit une commande GUI (cela sort du cadre de cet article, nous n'y irons donc pas) ou utilisez certaines commandes linux dans votre terminal. La commande que nous allons utiliser s'appelle chmod (change file mode). La commande chmod accepte une variété de paramètres qui modifient son comportement de différentes manières, mais son utilisation générale est la suivante :

$ chmod <mode> <fichier>

Le <mode> est spécifié par les symboles suivants :

r le drapeau de lecture

w le drapeau d'écriture

x le drapeau d'exécution

u le drapeau d'autorisation utilisateur/propriétaire

g le drapeau d'autorisation de groupe

o le drapeau d'autorisation des autres utilisateurs

Il y en a quelques autres, mais nous en discuterons dans la dernière section de notre article.

Supposons donc que vous souhaitiez accorder des autorisations d'exécution aux utilisateurs appartenant au groupe (mais assurez-vous d'abord d'être le propriétaire du fichier !) :

$chown test g+x
$ ls -l test
-rwxrwxrwx 1 personnel yorgos 0 23 février 17:07 test

Ou peut-être avez-vous besoin de verrouiller complètement tout le monde. Ils ne pourraient ni lire, ni écrire, ni exécuter le fichier :

$ test chown o-rwx
$ ls -l test
-rwxrwx— 1 personnel yorgos 0 23 février 17:07 test

Ici, nous voyons les derniers drapeaux tous non définis sur "-".
Si vous souhaitez voir plus d'exemples, consultez la page de manuel de chmod en exécutant la commande suivante :

$ homme chmod

Propriétaires et groupes

Vous pouvez également modifier la propriété du fichier et du groupe d'un fichier à l'aide de la commande chown .

La commande chown accepte divers paramètres qui modifient son comportement d'une manière ou d'une autre, mais l'utilisation la plus courante est la suivante :

# chown <propriétaire> <fichier>

Ou

# chown <propriétaire:groupe> <fichier>

Le premier exemple est utilisé pour changer le propriétaire d'un fichier en un autre. Gardez à l'esprit, cependant, que vous devez avoir un accès root pour changer la propriété d'un fichier. Ainsi, en exécutant ce qui suit :

# test chown personne

# test ls-l

-rwxrwxrwt 1 personne personnel 0 23 février 17:07 test

il est maintenant révélé que le fichier appartient à l'ID utilisateur 'nobody' et non plus à 'yorgos'.

De même la commande :

# chown personne : test de la roue

# test ls-l

-rwxrwxrwt 1 roue personne 0 23 février 17:07 test


Change la propriété du fichier en personne et le groupe en roue .

Si vous souhaitez en savoir plus sur la commande et ses différents paramètres, consultez la page de manuel chown en lançant la commande :

$ homme chown

Autorisations spéciales

Outre les types et groupes d'autorisations que nous avons déjà mentionnés dans l'article, il en existe quelques autres, appelés "autorisations spéciales".

Ce sont les suivants :

s       L'indicateur Set User ID et Set Group ID.

t       Le drapeau collant.

Le premier est défini en utilisant le drapeau "s" dans la commande chmod de la manière habituelle, en tant que tel :

$ test chmod u+s
$ ls -l test
-rwsrwx—   1 yorgos   Personnel   0 févr. 23 17:07 essai

Cet indicateur est également appelé indicateur SUID (Set User ID) ou SGID (Set Group ID). Si ce bit est activé, le fichier hérite des droits d'accès de son propriétaire. Cela signifie que toute personne qui exécute le fichier le fait en tant que propriétaire. Le SGID est similaire, mais le fichier hérite du droit d'accès de son groupe. Ceci, bien sûr, peut entraîner des problèmes de sécurité, il faut donc faire attention.

Le morceau collant, ou "t" est particulièrement utile. Lorsqu'ils sont définis dans un répertoire, généralement partagé comme /tmp, les fichiers qui y sont créés ne peuvent être renommés ou supprimés que par leurs propriétaires respectifs. Si le sticky bit n'est pas défini, le propriétaire du répertoire n'a pas le contrôle sur eux.

Vous pouvez rendre un répertoire "collant" en exécutant la commande suivante :

$ chmod +t /répertoire

Représentation octale

Outre l'utilisation d'indicateurs pour définir des autorisations telles que "r" et "w", vous pouvez également utiliser des valeurs numériques. La commande chmod attribue les valeurs suivantes aux autorisations :

"r" = 4

"w" = 2

"x" = 1

Ainsi, pour définir un fichier en lecture/écriture/exécution pour le propriétaire, et en lecture/exécution pour tous les autres, ce qui signifie « -rwxr-xr-x », nous calculons la valeur numérique en tant que telle :

rx = 4+2+1 = 7

rx = 4+1 = 5

Nous lançons enfin la commande :

$ test chmod 755
$ ls - test
-rwxr-xr-x   1 yorgos   Personnel   21 février 24 02:08 essai

Entraînez-vous par vous-même en utilisant différentes autorisations et valeurs numériques pour vous y habituer !