3.2. Utilisateurs et autorisations d'accès

Depuis sa création au début des années 1990, Linux a été conçu comme un système multi-utilisateurs. Un nombre quelconque d'utilisateurs peut travailler dessus en même temps. Les utilisateurs doivent se loguer au système avant de démarrer une session sur leur poste de travail. Chaque utilisateur possède un nom d'utilisateur et le mot de passe correspondant. Grâce à cette différenciation des utilisateurs, il est garanti que les utilisateurs non autorisés ne pourront pas consulter des fichiers pour lesquels ils ne possèdent pas d'autorisation. Les modifications plus importantes du système, telles que l'installation de nouveaux programmes, sont généralement impossibles ou restreintes pour les utilisateurs ordinaires. Seul l'utilisateur, ou le superutilisateur, possède la capacité non restreinte d'apporter des modifications au système et dispose d'un accès illimité à l'ensemble des fichiers. Quiconque utilise ce concept de façon judicieuse, en se loguant avec un accès root complet uniquement lorsque cela est nécessaire, peut réduire le risque de perte non intentionnelle de données. Étant donné qu'en règle générale, seul l'utilisateur root peut supprimer des fichiers ou des systèmes ou formater les disques durs, il est possible de réduire considérablement le risque d'un effet cheval de Troie ou d'une entrée accidentelle de commandes destructrices.

3.2.1. Autorisations du système de fichiers

Fondamentalement, chaque fichier d'un système de fichiers Linux appartient à un utilisateur et à un groupe. Chacun de ces groupes propriétaires et tous les autres sont autorisés à écrire, lire ou exécuter ces fichiers.

Dans ce cas, un groupe peut être défini comme un ensemble d'utilisateurs connectés ayant certains droits collectifs. Par exemple, appelez un groupe travaillant sur un certain projet project3. Chaque utilisateur d'un système Linux est membre d'au moins un groupe propriétaire, en principe celui des users. Un système peut comprendre autant de groupes que nécessaire, mais seul un superutilisateur peut ajouter des groupes. La commande groups permet à chaque utilisateur de savoir à quel groupe il appartient.

Accès aux fichiers

L'organisation des autorisations du système de fichiers diffère pour les fichiers et les répertoires. Les informations sur les autorisations de fichier peuvent être affichées à l'aide de la commande ls -l. La sortie peut se présenter comme dans l'Exemple 3.1, « Exemple de sortie affichant les autorisations de fichier ».

Exemple 3.1. Exemple de sortie affichant les autorisations de fichier

-rw-r----- 1 tux project3 14197 Jun 21  15:03 Roadmap

Comme le montre la troisième colonne, ce fichier appartient à l'utilisateur tux. Il est assigné au groupe project3. Pour connaître les autorisations d'utilisateur du fichier Roadmap, il convient d'examiner la première colonne de plus près.

-

rw-

r--

---

Type

Autorisations d'utilisateur

Autorisations de groupe

Autorisations pour les autres utilisateurs

Cette colonne se compose d'un caractère d'en-tête suivi par neuf caractères groupés par trois par trois. La première des dix lettres représente le type de composant du système de fichiers. Le tiret () indique qu'il s'agit d'un fichier. Un répertoire (d), un lien (l), un périphérique de bloc (b), ou un périphérique de caractères peuvent également être indiqués.

Les trois blocs suivants sont fondés un modèle standard. Les trois premiers caractères indiquent si le fichier est lisible(r) ou non (-). Un w dans la partie intermédiaire symbolise le fait que l'objet correspondant peut être modifié et un tiret () signifie qu'il est impossible d'écrire dans le fichier. Un x en troisième position signale que l'objet peut être exécuté. Comme le fichier de cet exemple est un fichier texte et non un fichier exécutable, l'accès exécutable n'est pas requis pour ce fichier.

Dans cet exemple, en tant que propriétaire du fichier Roadmap, tux possède les droits de lecture (r) et d'écriture (w) sur ce fichier, mais ne peut l'exécuter (x). Les membres du groupe project3 peuvent lire le fichier, mais ne peuvent le modifier ou l'exécuter. Les autres utilisateurs n'ont pas accès à ce fichier. Il est possible d'assigner d'autres autorisations au moyen des ACL (listes de contrôle d'accès).

Autorisations de répertoire

Les autorisations d'accès pour les répertoires ont le type d. Pour les répertoires, les autorisations individuelles ont une signification légèrement différente.

Exemple 3.2. Exemple de sortie affichant les autorisations de répertoire

drwxrwxr-x 1 tux project3 35 Jun 21 15:15  ProjectData

Dans l'Exemple 3.2, « Exemple de sortie affichant les autorisations de répertoire », le propriétaire (tux) et le groupe propriétaire (project3) du répertoire ProjectData sont faciles à identifier. Contrairement aux autorisations d'accès aux fichiers de Accès aux fichiers , l'autorisation de lecture définie (r) signifie qu'il est possible d'afficher le contenu du répertoire. Le droit d'écriture (w) implique qu'il est possible de créer de nouveaux fichiers. Le droit d'exécution (x) implique que l'utilisateur peut accéder à ce répertoire. Dans l'exemple précédent, l'utilisateur tux ainsi que les membres du groupe project3 peuvent accéder au répertoire ProjectData (x), en afficher le contenu (r), et lui ajouter ou en supprimer des fichiers (w). Les autres utilisateurs ont un accès restreint. Ils peuvent entrer dans le répertoire (x) et le parcourir (r), mais ne peuvent pas y insérer de nouveaux fichiers (w).

3.2.2. Modification des autorisations de fichier

Modification des autorisations d'accès

Les autorisations d'accès d'un fichier ou d'un répertoire peuvent être modifiées par le propriétaire et, bien sûr, par l'utilisateur root à l'aide de la commande chmod , suivie des paramètres modifiant les autorisations et un ou plusieurs noms de fichiers. Les paramètres constituent des catégories différentes :

  1. les utilisateurs concernés

    • u (user) - propriétaire du fichier

    • g (group) - groupe qui détient le fichier

    • o (others) - utilisateurs supplémentaires (si aucun paramètre n'est indiqué, les modifications s'appliquent à toutes les catégories)

  2. un caractère de suppression (), de définition (=) ou d'insertion (+)

  3. les abréviations

    • r - lire

    • w - écrire

    • x - exécuter

  4. nom de fichier ou noms de fichier séparés par des espaces

Par exemple, si l'utilisateur tux de l'Exemple 3.2, « Exemple de sortie affichant les autorisations de répertoire » souhaite accorder le droit d'écriture (w) à d'autres utilisateurs sur le répertoire ProjectData, il peut le faire à l'aide de la commande chmod o+w ProjectData.

En revanche, s'il souhaite supprimer toutes les autorisations d'utilisateurs excepté la sienne, il peut le faire en entrant la commande chmod go-w ProjectData. Pour interdire à tous les utilisateurs d'ajouter un nouveau fichier au dossier ProjectData, entrez chmod -w ProjectData. À présent, même le propriétaire ne peut écrire dans le fichier sans rétablir les droits d'écriture au préalable.

Modifications des autorisations de propriété

Les autres commandes importantes qui permettent de contrôler la propriété et les autorisations des composants du système de fichiers sont chown (pour « change owner ») et chgrp (pour « change group »). La commande chown peut servir à transférer la propriété d'un fichier vers un autre utilisateur. Toutefois, seul un utilisateur root est autorisé à effectuer cette modification.

Supposons que le fichier Roadmap de l'Exemple 3.2, « Exemple de sortie affichant les autorisations de répertoire » ne doive plus appartenir à tux, mais à l'utilisateur geeko. L'utilisateur root doit alors entrer chown geeko Roadmap.

chgrp modifie la propriété de groupe du fichier. Toutefois, le propriétaire du fichier doit faire partie du nouveau groupe. De cette manière, l'utilisateur tux de l'Exemple 3.1, « Exemple de sortie affichant les autorisations de fichier » peut basculer le groupe propriétaire du fichier ProjectData vers project4 à l'aide de la commande chgrp project4 ProjectData, à condition qu'il soit membre de ce nouveau groupe.