Recherche de site Web

Une introduction aux permissions Linux


Introduction

Linux est, par définition, un système d'exploitation multi-utilisateur qui est basé sur les concepts Unix de propriété des fichiers et de permissions pour fournir une sécurité au niveau du système de fichiers. Pour administrer de manière fiable un serveur cloud, il est essentiel que vous ayez une compréhension correcte de la manière dont fonctionnent la propriété et les permissions. Il existe de nombreuses subtilités concernant la gestion de la propriété et des permissions des fichiers, mais ce tutoriel fournira une bonne introduction.

Ce tutoriel expliquera comment visualiser et comprendre la propriété et les permissions sous Linux. Si vous recherchez un tutoriel sur la façon de modifier les permissions, vous pouvez lire Les Bases des Permissions Linux et Comment Utiliser Umask sur un VPS.

Prérequis

Assurez-vous de comprendre les concepts abordés dans les tutoriels précédents de cette série :

  • Une introduction au terminal Linux
  • Navigation de base sous Linux et gestion des fichiers

Pour suivre ce tutoriel, vous aurez besoin d'accès à un serveur cloud. Vous pouvez suivre ce guide pour créer un droplet Linux-Console.net.

À propos des utilisateurs

Comme mentionné dans l'introduction, Linux est un système multi-utilisateurs. Vous devriez comprendre les bases des utilisateurs et des groupes Linux avant de vous intéresser à la propriété et aux permissions, car ce sont les entités auxquelles s'appliquent la propriété et les permissions. Commençons par ce que sont les utilisateurs.

Sous Linux, il existe deux types d'utilisateurs : utilisateurs système et utilisateurs réguliers. Traditionnellement, les utilisateurs système sont utilisés pour exécuter des processus non interactifs ou en arrière-plan sur un système, tandis que les utilisateurs réguliers sont utilisés pour se connecter et exécuter des processus de manière interactive. Lorsque vous initialisez et vous connectez pour la première fois à un système Linux, vous pouvez remarquer qu'il commence avec de nombreux utilisateurs système déjà créés pour exécuter les services dont le système d'exploitation dépend. Cela est normal.

Vous pouvez voir tous les utilisateurs d'un système en consultant le contenu du fichier /etc/passwd. Chaque ligne de ce fichier contient des informations sur un utilisateur unique, en commençant par son nom d'utilisateur (le nom avant le premier :). Vous pouvez afficher le contenu du fichier passwd avec cat :

cat /etc/passwd
…
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
vault:x:997:997::/home/vault:/bin/bash
stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin
sammy:x:1001:1002::/home/sammy:/bin/sh

Superutilisateur

En plus des deux types d'utilisateurs, il y a le superutilisateur, ou utilisateur root, qui a la capacité de contourner toutes les restrictions de propriété et de permissions des fichiers. En pratique, cela signifie que le superutilisateur a le droit d'accéder à tout sur son propre serveur. Cet utilisateur est utilisé pour effectuer des modifications à l'échelle du système.

Il est également possible de configurer d'autres comptes utilisateurs avec la capacité de disposer des « droits de superutilisateur ». Cela est souvent appelé avoir sudo, car les utilisateurs qui ont la permission d'obtenir temporairement des droits de superutilisateur le font en précédant les commandes de niveau administrateur avec sudo. En fait, créer un utilisateur normal qui possède des privilèges sudo pour les tâches d'administration du système est considéré comme une bonne pratique. De cette façon, vous pouvez être plus prudent dans l'utilisation du compte utilisateur root.

À propos des groupes

Les groupes sont des collections de zéro ou plusieurs utilisateurs. Un utilisateur appartient à un groupe par défaut, et peut également être membre de n'importe lequel des autres groupes sur un serveur.

Vous pouvez voir tous les groupes du système et leurs membres en consultant le fichier /etc/group, comme vous le feriez avec /etc/passwd pour les utilisateurs. Cet article ne couvre pas la gestion des groupes.

Maintenant que vous savez ce que sont les utilisateurs et les groupes, parlons de la propriété des fichiers et des permissions !

Consultation de la propriété et des autorisations

Sous Linux, chaque fichier est détenu par un seul utilisateur et un seul groupe, et possède ses propres permissions d'accès. Voyons comment afficher la propriété et les permissions d'un fichier.

La façon la plus courante de voir les permissions d'un fichier est d'utiliser ls avec l'option de liste longue -l, par exemple ls -l myfile. Si vous voulez voir les permissions de tous les fichiers de votre répertoire actuel, exécutez la commande sans l'argument myfile, comme ceci :

ls -l

Remarque : Si vous êtes dans un répertoire personnel vide et que vous n’avez encore créé aucun fichier à consulter, vous pouvez suivre en listant le contenu du répertoire /etc en exécutant cette commande : ls -l /etc

Voici un exemple de capture d'écran de la sortie de ls -l, avec les étiquettes de chaque colonne de la sortie :

Chaque fichier liste son mode (qui contient les permissions), le propriétaire, le groupe et le nom. Pour aider à expliquer ce que toutes ces lettres et tirets signifient, décomposons la colonne du mode en ses composants.

Mode de compréhension

Pour aider à expliquer ce que signifient tous les regroupements et lettres, voici une répartition des métadonnées de mode du premier fichier dans l'exemple ci-dessus :

Type de fichier

Sous Linux, il existe deux types de fichiers : normaux et spéciaux. Le type de fichier est indiqué par le premier caractère du mode d'un fichier — dans ce guide, cela sera appelé le « champ de type de fichier ».

Les fichiers normaux peuvent être identifiés par un trait d'union (-) dans leurs champs de type de fichier. Les fichiers normaux peuvent contenir des données ou autre chose. Ils sont appelés fichiers normaux, ou fichiers ordinaires, pour les distinguer des fichiers spéciaux.

Les fichiers spéciaux peuvent être identifiés par un caractère autre qu'un tiret, comme une lettre, dans leurs champs de type de fichier, et sont traités par le système d'exploitation différemment des fichiers normaux. Le caractère qui apparaît dans le champ de type de fichier indique le type de fichier spécial qu'est un fichier particulier. Par exemple, un répertoire, qui est le type de fichier spécial le plus courant, est identifié par le caractère d qui apparaît dans son champ de type de fichier (comme dans la capture d'écran précédente). Il existe plusieurs autres types de fichiers spéciaux.

Classes de permissions

D'après le diagramme, vous pouvez voir que la colonne mode indique le type de fichier, suivie de trois triades, ou classes, de permissions : utilisateur (propriétaire), groupe et autre. L'ordre des classes est cohérent sur tous les systèmes Linux.

Les trois classes d'autorisations fonctionnent comme suit :

  • Utilisateur : Le propriétaire d’un fichier appartient à cette classe.
  • Groupe : Les membres du groupe du fichier appartiennent à cette classe. Les autorisations de groupe sont un moyen utile d'attribuer des permissions sur un fichier donné à plusieurs utilisateurs.
  • Autre : Tous les utilisateurs qui ne font pas partie des classes utilisateur ou groupe pour ce fichier appartiennent à cette classe.

Lecture des permissions symboliques

La prochaine chose à laquelle il faut faire attention est ces ensembles de trois caractères. Ils indiquent les permissions, sous forme symbolique, que chaque classe a pour un fichier donné.

Dans chaque triade, les permissions de lecture, d'écriture et d'exécution sont représentées de la manière suivante :

  • Lire : Indiqué par un r en première position
  • Écrire : Indiqué par un w en deuxième position
  • Exécuter : Indiqué par un x à la troisième position. Dans certains cas particuliers, il peut y avoir un caractère différent ici

Un trait d'union (-) à la place de l'un de ces caractères indique que la permission respective n'est pas disponible pour la classe respective. Par exemple, si le deuxième trio (groupe) pour un fichier est r--, le fichier est « lecture seule » pour le groupe associé au fichier.

Comprendre Lire, Écrire, Exécuter

Maintenant que vous savez comment lire les autorisations d'un fichier, vous devriez savoir ce que chacune des autorisations permet réellement aux utilisateurs de faire. Ce tutoriel couvrira chaque autorisation individuellement, mais gardez à l'esprit qu'elles sont souvent utilisées en combinaison les unes avec les autres pour permettre un accès utile aux fichiers et aux répertoires.

Voici une répartition de l'accès que les trois types d'autorisations accordent à l'utilisateur :

Lire

Pour un fichier normal, l'autorisation de lecture permet à un utilisateur de voir le contenu du fichier.

Pour un répertoire, la permission de lecture permet à un utilisateur de voir les noms des fichiers dans le répertoire.

Écrire

Pour un fichier normal, l'autorisation d'écriture permet à un utilisateur de modifier et de supprimer le fichier.

Pour un répertoire, la permission d'écriture permet à un utilisateur de supprimer le répertoire, de modifier son contenu (créer, supprimer et renommer des fichiers à l'intérieur), et de modifier le contenu des fichiers pour lesquels l'utilisateur a des permissions d'écriture.

Exécuter

Pour un fichier normal, l'autorisation d'exécution permet à un utilisateur d'exécuter (lancer) un fichier — l'utilisateur doit également avoir l'autorisation de lecture. Les autorisations d'exécution doivent être définies pour les programmes exécutables et les scripts shell avant qu'un utilisateur puisse les exécuter.

Pour un répertoire, l'autorisation d'exécution permet à un utilisateur d'accéder ou de parcourir (c'est-à-dire cd) et d'accéder aux métadonnées des fichiers dans le répertoire (les informations qui sont listées dans un ls -l).

Exemples de modes (et de permissions)

Maintenant que vous savez comment lire le mode d'un fichier et comprendre la signification de chaque permission, vous allez voir quelques exemples de modes courants, avec de brèves explications, pour rassembler les concepts.

  • -rw------- : Un fichier qui n'est accessible que par son propriétaire
  • -rwxr-xr-x : Un fichier exécutable par tous les utilisateurs du système. Un fichier « exécutable par tous »
  • -rw-rw-rw- : Un fichier pouvant être modifié par tous les utilisateurs du système. Un fichier "writeable par tous"
  • drwxr-xr-x : Un répertoire que chaque utilisateur du système peut lire et accéder
  • drwxrwx--- : Un répertoire modifiable (y compris son contenu) par son propriétaire et son groupe
  • drwxr-x--- : Un répertoire accessible par son groupe

Le propriétaire d'un fichier bénéficie généralement du plus grand nombre d'autorisations, par rapport aux deux autres classes. En général, vous verrez que les classes groupe et autre n'ont qu'un sous-ensemble des autorisations du propriétaire (équivalent ou moins). Cela est logique car les fichiers ne devraient être accessibles qu'aux utilisateurs qui en ont besoin pour une raison particulière.

Une autre chose à noter est que, même si de nombreuses combinaisons de permissions sont possibles, seules certaines ont du sens dans la plupart des situations. Par exemple, l’accès en écriture ou en exécution est presque toujours accompagné de l’accès en lecture, car il est difficile de modifier, et impossible d’exécuter, quelque chose que l’on ne peut pas lire.

Conclusion

Vous devriez maintenant avoir une bonne compréhension de la façon dont la propriété et les permissions fonctionnent sous Linux. Pour apprendre à modifier ces permissions en utilisant chown, chgrp et chmod, consultez Bases des permissions Linux et Comment utiliser Umask sur un VPS.

Si vous souhaitez en savoir plus sur les fondamentaux de Linux, lisez le prochain tutoriel de cette série, Une introduction à la redirection d'entrée/sortie sous Linux.