Red Hat Enterprise Linux 3: Introduction à l'administration système | ||
---|---|---|
Précédent | Chapitre 6. Gestion des comptes utilisateur et de l'accès aux ressources | Suivant |
Les sections suivantes examinent certaines des caractéristiques spécifiques de Red Hat Enterprise Linux en relation avec l'administration des comptes utilisateur et des ressources connexes.
Sous Red Hat Enterprise Linux, un utilisateur peut se connecter au système et utiliser toutes les applications ou tous les fichiers auxquels il a accès une fois qu'un compte utilisateur normal a été créé. Red Hat Enterprise Linux décide lui-même si un utilisateur peut avoir accès ou non à ces ressources, en fonction des permissions qui lui sont assignées.
Trois permissions différentes peuvent être appliquées sur les fichiers, répertoires et applications. Ces permissions servent à contrôler les différents types d'accès autorisés. Dans une liste de répertoires, différentes lettres symbolisent différentes permissions. Les symboles suivants sont utilisés pour les différentes permissions :
r — Indique qu'une certaine catégorie d'utilisateurs est autorisée à lire ( ou read) le fichier.
w — Indique qu'une certaine catégorie d'utilisateurs est autorisée à écrire ( ou write) le fichier.
x —Indique qu'une certaine catégorie d'utilisateurs est autorisée à exécuter ( ou execute) le fichier.
Un quatrième symbole (-) indique qu'aucun accès n'est autorisé.
Chacune des trois permissions est assignée à trois catégories différentes d'utilisateurs, à savoir :
propriétaire — Le propriétaire du fichier ou de l'application (ou owner en anglais).
groupe — Le groupe propriétaire du fichier ou de l'application (ou group en anglais).
tout le monde — Tous les utilisateurs ayant accès au système (ou all en anglais).
Comme nous l'avons mentionné précédemment, il est possible d'afficher les permissions d'un fichier en invoquant la commande ls -l pour obtenir un listage au format détaillé (ou long listing). Par exemple, si l'utilisateur juan crée un fichier exécutable portant le nom foo, la sortie de la commande ls -l foo ressemblerait à l'extrait ci-dessous :
-rwxrwxr-x 1 juan juan 0 Sep 26 12:25 foo |
Les permissions données à ce fichier apparaissent au début de la ligne commençant par rwx. Cette première série de symboles détermine l'accès octroyé au propriétaire — dans cet exemple, le propriétaire juan a un accès total et peut donc effectuer des opérations de lecture, écriture et exécution sur le fichier. La deuxième série de symboles rwx définit elle, l'accès octroyé au groupe (dans notre exemple, un accès total), alors que la dernière série de symboles précise les types d'accès accordés à tous les utilisateurs. Dans notre exemple, ces derniers ont une permission de lecture et exécution sur le fichier mais ne sont pas en mesure de le modifier de quelque manière que ce soit.
Il faut garder un point important à l'esprit en matière de permissions et comptes utilisateur, à savoir que toute application lancée sur Red Hat Enterprise Linux tourne dans le contexte d'un utilisateur spécifique. En effet, si un utilisateur nommé juan exécute une application, cette dernière tourne en utilisant le contexte de juan. Toutefois, il se peut que dans certains cas, l'application ait besoin d'un niveau d'accès plus privilégié afin de pouvoir accomplir une tâche donnée. Parmi ces applications figurent celles permettant d'éditer les paramètres du système ou de connecter les utilisateurs. C'est la raison pour laquelle des permissions spéciales ont été créées.
Sous Red Hat Enterprise Linux, trois permissions spéciales sont disponibles, à savoir :
setuid — Utilisée seulement pour les applications, cette permission indique que l'application en question est supposée être exécutée en tant que propriétaire du fichier et non pas en tant que l'utilisateur exécutant l'application. Cette permission spéciale est représentée par le caractère s remplaçant le symbole x dans la catégorie propriétaire. Si le propriétaire du fichier n'a pas les permissions d'exécution, le caractère apparaît en majuscule en tant que S pour l'indiquer.
setgid — Utilisée essentiellement pour les applications, cette permission indique que l'application doit être exécutée en tant que le groupe propriétaire du fichier et non pas en tant que le groupe exécutant l'application.
Lorsque cette permission spéciale s'applique à un répertoire, tous les fichiers créés au sein de ce répertoire sont la propriété du groupe propriétaire du répertoire, et non pas celle du groupe de l'utilisateur créant le fichier. La permission setgid est représentée par le caractère s à la place du caractère x dans la catégorie groupe. Si le groupe propriétaire du fichier n'a pas les permissions d'exécution, le caractère apparaît en majuscule en tant que S pour l'indiquer.
sticky bit — Utilisée essentiellement sur les répertoires, ce bit stipule qu'un fichier créé dans le répertoire ne peut être supprimé que par l'utilisateur qui l'a créé. Le caractère t remplant le caractère x dans la catégorie tout le monde représente cette permission spéciale. Si la catégorie tout le monde n'a pas les permissions d'exécution, le caractère T apparaît en majuscule.
Sous Red Hat Enterprise Linux, la valeur par défaut de sticky bit est le répertoire /tmp/ pour la même raison.
Dans Red Hat Enterprise Linux, un compte utilisateur et des noms de groupe existent essentiellement pour la commodité des utilisateurs. Dans le système même, des identifiants numériques sont utilisés. Pour les utilisateurs, cet identifiant est connu en tant que UID, alors que pour les groupes, il est connu en tant que GID. Des programmes qui fournissent des informations sur l'utilisateur ou le groupe convertissent les valeurs des UID/GID en équivalents plus lisible par tout un chacun.
![]() | Important |
---|---|
Les UID et GID doivent être globalement uniques dans tout le système d'une organisation si des fichiers ou ressources sont destinés à être partagés sur un réseau. Dans le cas contraire, quels que soient les contrôles d'accès mis en place, ils ne fonctionneront peut-être pas correctement dans la mesure où ils reposent sur les UID ou GID et non pas sur les noms d'utilisateur ou de groupe. Plus précisément, si les fichiers /etc/passwd et /etc/group stockés sur un serveur de fichiers et le poste de travail d'un utilisateur contiennent des UID et GID différents, il est possible que des problèmes de sécurité résultent de la mauvaise application de permissions. Par exemple, si l'utilisateur juan a un UID de 500 sur un ordinateur de bureau, les fichiers que juan crée sur un serveur de fichiers se verront attribuer l'UID propriétaire de 500. Toutefois, si l'utilisateur bob se connecte localement au serveur de fichiers (ou même à tout autre ordinateur) et que le compte de bob a lui aussi un UID de 500, bob aura un accès complet aux fichiers de juan et vice versa. Il est par conséquent essentiel d'éviter à tout prix les collisions entre UID et GID. |
Il existe deux cas dans lesquels la valeur numérique d'un UID ou d'un GID a une signification particulière. La valeur zéro (0) donnée à un UID et à un GID est utilisée pour le super-utilisateur ou root et, à ce titre, est traitée d'une manière particulière par Red Hat Enterprise Linux — en effet, un accès total et automatiquement accordé.
Le deuxième cas est celui dans lequel les UID et GID d'une valeur inférieure à 500 sont réservés exclusivement pour le système. Contrairement à un UID/GID de zéro (0), les UID et GID d'une valeur inférieure à 500 ne sont pas traités différemment par Red Hat Enterprise Linux. Toutefois, ces UID/GID ne sont jamais attribués à un utilisateur car il est fort possible qu'un certain composant du système les utilisent actuellement ou qu'il les utilisera à un moment ou à un autre dans le futur. Pour obtenir de plus amples informations sur ces utilisateurs et groupes standard, reportez-vous au chapitre intitulé Utilisateurs et groupes du Guide de référence de Red Hat Enterprise Linux.
Lors de l'ajout de nouveaux utilisateurs à l'aide des outils standard de Red Hat Enterprise Linux pour la création de nouveaux utilisateurs, les nouveaux comptes utilisateur se voient attribuer le premier UID et GID disponible en commençant par 500. Le nouveau compte suivant recevra une valeur UID/GID de 501, celui d'après un UID/GID de 502 et ainsi de suite.
Les différents outils de création d'utilisateurs disponibles sous Red Hat Enterprise Linux seront examinés brièvement à la fin de ce chapitre. Avant de passer ces outils en revue, il convient d'examiner d'abord les fichiers utilisés par Red Hat Enterprise Linux pour définir les comptes et groupes du système.
Sur Red Hat Enterprise Linux, les informations relatives aux comptes utilisateur et groupes sont stockés dans divers fichiers texte contenus dans le répertoire /etc/. Lorsqu'un l'administrateur système crée de nouveaux comptes utilisateur, il doit soit modifier ces fichiers manuellement, soit utiliser des applications pour effectuer les modifications requises.
La section suivante examine les fichiers du répertoire /etc/ qui, sous Red Hat Enterprise Linux, contiennent des informations sur les utilisateurs et les groupes.
Le fichier /etc/passwd, examinable par tout utilisateur, contient une liste d'utilisateurs dans laquelle chacun apparaît sur une ligne différente. Sur chaque ligne figure une liste d'éléments séparés les uns des autres par deux points fournissant les informations suivantes :
Nom d'utilisateur — Le nom ou identifiant que l'utilisateur saisit lorsqu'il se connecte au système.
Mot de passe — Contient le mot de passe codé (ou la symbole x si des mots de passe masqués sont utilisés — ce point sera traité ultérieurement).
ID utilisateur (UID) — L'équivalent numérique du nom d'utilisateur qui est référencé par le système et les applications lors de l'établissement des privilèges.
ID Groupe (GID) — L'équivalent numérique du nom du groupe primaire qui est référencé par le système et les applications lors de l'établissement des privilèges.
GECOS — Ainsi nommé pour des raisons historiques, le champ GECOS[1] qui est facultatif, sert à stocker des informations supplémentaires (telles que le nom complet de l'utilisateur). Il est possible de stocker dans ce champ de multiples entrées sous forme d'une liste dont les éléments sont séparés par des virgules. Des utilitaires tels que finger permettent d'accéder à ce champ afin de saisir des informations supplémentaires sur l'utilisateur.
Répertoire personnel — Le chemin d'accès absolu au répertoire personnel (aussi appelé répertoire home ou maison) de l'utilisateur, comme par exemple, /home/juan/.
Shell — Le programme lancé automatiquement lors de chaque connexion de l'utilisateur. Ce dernier est généralement un interpéteur de commandes (souvent appelé un shell). Sous Red Hat Enterprise Linux, la valeur par défaut est /bin/bash. Si ce champ est laissé blanc, /bin/sh sera la valeur utilisée. Si la valeur choisie correspond à un fichier qui n'existe pas, l'utilisateur ne sera pas en mesure de se connecter au système.
Ci-dessous figure l'exemple d'une entrée présente dans /etc/passwd:
root:x:0:0:root:/root:/bin/bash |
Cette ligne montre que le super-utilisateur (ou root) dispose d'un mot de passe masqué et que la valeur de UID et GID est 0. L'utilisateur root a /root/ comme répertoire personnel et utilise /bin/bash comme shell.
Pour obtenir de plus amples informations sur /etc/passwd, consultez la page de manuel de passwd(5).
Étant donné que le fichier /etc/passwd doit être examinable par tout utilisateur (la raison principale étant que ce fichier est utilisé pour effectuer la conversion de l'UID en nom d'utilisateur), il est risqué de stocker les mots de passe de tous les utilisateurs dans /etc/passwd. Certes, les mots de passe sont codés. Néanmoins, il est tout à fait possible d'effectuer une attaque contre des mots de passe si leur format codé est disponible.
Si un agresseur peut se procurer une copie du fichier /etc/passwd, il peut facilement orchestrer une attaque en secret. Au lieu de risquer d'être détecté en tentant de se connecter à l'aide de chacun des mots de passe potentiels générés par programme craqueur de mots de passe, un agresseur peut utiliser un tel programme de la manière suivante :
Un craqueur de mots de passe génère des mots de passe potentiels
Chaque mot de passe potentiel est alors codé en utilisant le même algorithme que celui du système
Le mot de passe potentiel ainsi codé est alors comparé à la liste des mots de passe cryptés présente dans /etc/passwd
L'aspect le plus dangereux d'une telle attaque est qu'elle peut avoir lieu sur un système très éloigné de votre entreprise. Ainsi, l'agresseur peut utiliser le matériel le plus puissant qu'il soit et peut traiter un nombre impressionnant de mots de passe en une très courte durée.
Telle est la raison pour laquelle le fichier /etc/shadow d'une part, ne peut être examiné que par le super-utilisateur et d'autre part contient des mots de passe (et en option, des informations sur l'expiration des mots de passe) pour chaque utilisateur. Comme dans le fichier /etc/passwd, les informations relatives à chaque utilisateur se trouvent sur une ligne différente. Chacune de ces lignes apparaît sous la forme d'une liste dont les éléments sont séparés par deux points et inclut les informations suivantes :
Non d'utilisateur — Le nom ou identifiant (Username en anglais) que l'utilisateur saisit lorsqu'il se connecte au système. Cet élément permet à l'application login d'extraire le mot de passe de l'utilisateur (et les informations connexes).
Mot de passe crypté — Le mot de passe d'une longueur de 13 à 24 caractères. Ce dernier est codé soit à l'aide de la fonction de bibliothèque crypt(3), soit à l'aide de l'algorithme de hashage md5. Dans ce champ, des valeurs autres qu'un mot de passe hashé ou codé selon un format valide sont utilisées pour contrôler les connexions de l'utilisateur et indiquer le statut du mot de passe. Par exemple, si la valeur est ! ou *, le compte est verrouillé et l'utilisateur n'est pas autorisé à se connecter. Si la valeur est !!, un mot de passe n'a jamais été établit auparavant (et l'utilisateur, n'ayant pas de mot de passe, ne pourra pas se connecter).
Date du dernier changement du mot de passe — Le nombre de jours s'étant écoulé entre le 1er janvier 1970 (date à laquelle ont fait aussi référence en tant qu'époque) et la date du dernier changement de mot de passe. Cet élément est utilisé de concert avec les champs relatifs à l'expiration du mot de passe figurant ci-dessous.
Nombre de jours avant tout changement de mot de passe — Le nombre minimum de jours devant s'écouler avant que le mot de passe ne puisse être changé.
Nombre de jours avant un changement de mot de passe nécessaire — Le nombre minimum de jours devant s'écouler avant que le mot de passe ne doive être changé.
Nombre de jours avertissant d'un changement de mot de passe imminent — Le nombre de jours précédent l'expiration d'un mot de passe pendant lesquels l'utilisateur est averti de l'expiration imminente du mot de passe.
Le nombre de jours précédent la désactivation du compte — Le nombre de jours pouvant s'écouler avant que le compte ne soit désactivé.
Date de désactivation du compte — La date (exprimée en tant que le nombre de jours écoulés depuis l'époque) à partir de laquelle le compte a été désactivé.
Un champ réservé — Un champ qui n'est pas pris en compte dans Red Hat Enterprise Linux.
Ci-après figure l'exemple d'une ligne tirée du fichier /etc/shadow :
juan:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:11956:0:90:5:30:12197: |
Cette ligne montre les informations suivantes s'appliquant à l'utilisateur juan :
Le dernier changement de mot de passe date du 25 septembre 2002
Le mot de passe peut être changé à tout moment puisqu'aucun délai n'existe
Le mot de passe doit être changé tous les 90 jours
L'utilisateur recevra un avertissement cinq jours avant la date d'expiration du mot de passe
Le compte sera désactivé 30 jours après la date d'expiration du mot de passe si aucune tentative de connexion n'est effectuée
La validité du compte viendra à échéance le 24 mai 2003
Pour obtenir de plus amples informations sur le fichier /etc/shadow, consultez la page de manuel de shadow(5).
Le fichier /etc/group, examinable par tout utilisateur, contient une liste de groupes figurant chacun sur une ligne différente. Chaque ligne, composée de quatre champs apparaissant sous forme de liste dont les éléments sont séparés entre eux par deux points, inclut les informations suivantes :
Nom du groupe — Le nom du groupe qui est utilisé par différents programmes utilitaires comme identifiant lisible pour le groupe.
Mot de passe du groupe — S'il existe, il permet aux utilisateurs qui ne font pas partie du groupe de le rejoindre en utilisant la commande newgrp et en saisissant le mot de passe défini. La présence d'un caractère x minuscule dans ce champ indique que des mots de passe masqués sont utilisés pour le groupe.
ID du groupe (GID) — L'équivalent numérique du nom de groupe qui est utilisé par le système d'exploitation et par les applications lors de l'établissement des privilèges d'accès.
Liste des membres — Une liste des utilisateurs appartenant au groupe dont les éléments sont séparés par une virgule.
Ci-après figure l'exemple d'une ligne tirée du fichier /etc/group:
general:x:502:juan,shelley,bob |
Cette ligne montre que le groupe general utilise des mots de passe masqués, qu'il a un GID de 502 et que juan, shelley et bob sont des membres du groupe.
Pour obtenir de plus amples informations sur /etc/group, reportez-vous à la page de manuel de group(5).
Le fichier /etc/gshadow, examinable seulement par le super-utilisateur, contient un mot de passe codé pour chaque groupe ainsi que des informations sur les membres du groupe et sur les administrateurs. Tout comme dans le fichier /etc/group, les informations sur chaque groupe apparaissent sur une ligne différente. Sur chacune d'elles apparaît une liste dont les éléments sont séparés par une virgule et fournissent les informations suivantes :
Nom du groupe — Le nom du groupe qui est utilisé par différents programmes utilitaires comme identifiant lisible pour le groupe.
Mot de passe crypté — Le mot de passe codé du groupe. S'il est établit, les membres qui n'appartiennent pas au groupe peuvent le rejoindre en saisissant le mot de passe de ce dernier à l'aide de la commande newgrp. Si la valeur de ce champ est !, aucun utilisateur n'est autorisé à accéder au groupe à l'aide de la commande newgrp. Une valeur correspondant à !! est traitée de la même manière que ! — toutefois, elle indique en plus qu'un mot de passe n'a jamais été établi auparavant. Finalement, si la valeur est nulle, seuls les membres du groupe peuvent se connecter au groupe.
Administrateurs du groupe — Les membres du groupe énumérés dans ce champ (dans une liste dont les éléments sont séparés les uns des autres par une virgule) peuvent ajouter ou retirer des membres à l'aide de la commande gpasswd.
Membres du groupe — Les membres du groupe énumérés dans ce champ (dans une liste dont les éléments sont séparés les uns des autres par une virgule) sont des membres normaux du groupe ne pouvant pas effectuer de tâches d'administration.
Ci-après figure l'exemple d'une ligne tirée du fichier /etc/gshadow:
general:!!:shelley:juan,bob |
Cette ligne montre que le groupe general n'a pas de mot de passe et ne permet pas aux utilisateurs n'y appartenant pas de le rejoindre à l'aide de la commande newgrp. De plus, shelley est un administrateur du groupe alors que juan et bob eux, sont des membres normaux ne disposant pas de privilèges administratifs.
Étant donné que la modification manuelle de ces fichiers peut être la source d'erreurs de syntaxe, il est plutôt conseillé de recourir aux applications fournies avec Red Hat Enterprise Linux pour effectuer ce genre d'opérations. La section suivante passe en revue les outils permettant d'effectuer ces opérations.
Sur des systèmes Red Hat Enterprise Linux, deux types d'applications élémentaires peuvent être utilisés lors de la gestion des comptes utilisateur et de groupes :
L'application graphique Gestionnaire d'utilisateurs
Une suite d'outils de ligne de commande
Pour obtenir des instructions détaillées sur l'utilisation du Gestionnaire d'utilisateurs, reportez-vous au chapitre intitulé Configuration des utilisateurs et groupes du Guide d'administration système de Red Hat Enterprise Linux.
Alors que l'application Gestionnaire d'utilisateurs et les utilitaires de ligne de commande effectuent tous plus ou moins la même tâche, les outils de ligne de commande ont l'avantage de pouvoir être scriptés et permettent par conséquent une automatisation plus facile de leurs tâches.
Le tableau ci-dessous passe en revue certains des outils de ligne de commande les plus couramement utilisés pour la création et la gestion des comptes utilisateur et des groupes :
Application | Fonction |
---|---|
/usr/sbin/useradd | Ajoute les comptes utilisateur. Cet outil est aussi utilisé pour préciser s'il s'agit d'une appartenance primaire ou secondaire au groupe. |
/usr/sbin/userdel | Supprime des comptes utilisateur. |
/usr/sbin/usermod | Modifie les attributs des comptes y compris certaines fonctions liées à l'expiration de mots de passe. Pour un contrôle plus minutieux, utilisez la commande passwd. Il est aussi possible d'utiliser usermod pour préciser s'il s'agit d'une appartenance primaire ou secondaire au groupe. |
passwd | Permet d'établir les mots de passe. Bien que cette commande soit essentiellement utilisée pour changer le mot de passe d'un utilisateur, elle contrôle également toutes les facettes de l'expiration des mots de passe. |
/usr/sbin/chpasswd | Lit le contenu d'un fichier composé de paires nom d'utilisateur/mot de passe et met à jour le mot de passe de chaque utilisateur en conséquence. |
chage | Modifie les politiques d'expiration des mots de passe des utilisateurs. La commande passwd peut également remplir cette fonction. |
chfn | Modifie les informations du champ GECOS de l'utilisateur. |
chsh | Modifie le shell par défaut de l'utilisateur. |
Tableau 6-2. Outils de ligne de commande pour la gestion des utilisateurs
Le tableau ci-dessous examine certains des outils de ligne de commande les plus couramment utilisés pour créer et gérer les groupes :
Application | Fonction |
---|---|
/usr/sbin/groupadd | Ajoute des groupes sans leur assigner de membres. Les programmes useradd et usermod doivent ensuite être utilisés pour assigner des utilisateurs à un groupe donné. |
/usr/sbin/groupdel | Supprime des groupes. |
/usr/sbin/groupmod | Modifie les noms des groupes ou GID sans changer les membres appartenant aux groupes. Les programmes useradd et usermod doivent ensuite être utilisés pour assigner des utilisateurs à un groupe donné. |
gpasswd | Change les membres du groupe et établit des mots de passe afin que des utilisateurs extérieurs au groupe, mais connaissant le mot de passe de ce dernier, puisse le rejoindre. Cette commande permet également de spécifier les administrateurs du groupe. |
/usr/sbin/grpck | Vérifie l'intégrité des fichiers /etc/group et /etc/gshadow. |
Tableau 6-3. Outils de ligne de commande pour la gestion des groupes
Les outils énumérés jusqu'à présent fournissent aux administrateurs système une grande souplesse au niveau du contrôle de tous les aspects des comptes utilisateur et de appartenance à un groupe. Pour en savoir plus sur la manière dont ils fonctionnent, consultez la page de manuel de chacun d'eux.
Ces applications toutefois, ne déterminent pas les ressources que les utilisateurs et groupes contrôlent. Pour contrôler cet aspect, un administrateur système doit recourir aux applications permettant l'établissement de permissions sur les fichiers.
L'établissement des permissions s'appliquant aux fichiers constitue une partie intégrante de la gestion des ressources au sein d'une entreprise. Le tableau ci-dessous examine certains des outils de ligne de commande les plus couramment utilisés à cet effet.
Application | Fonction |
---|---|
chgrp | Change l'identité du groupe propriétaire d'un fichier donné. |
chmod | Change les permissions d'accès d'un fichier donné. Cette commande permet également d'assigner des permissions spéciales. |
chown | Change la propriété d'un fichier (et peut également changer le groupe). |
Tableau 6-4. Outils de ligne de commande pour la gestion des permissions
Il est également possible de modifier ces attributs dans des environnements graphiques GNOME et KDE. Pour ce faire, cliquez à l'aide du bouton droit de la souris sur l'icône du fichier (par exemple, alors que l'icône apparaît dans le gestionnaire de fichiers graphique ou sur le bureau) et sélectionnez Propriétés.
[1] | L'acronyme GECOS signifie General Electric Comprehensive Operating Supervisor. Ce champ était utilisé dans le passé par Bell Labs dans l'implémentation UNIX d'origine. Le laboratoire avait de nombreux ordinateurs dont un exécutant GECOS. Ce champ était utilisé pour stocker des informations lorsque le système UNIX envoyait des lots et des travaux d'impression au système GECOS. |
Précédent | Sommaire | Suivant |
Gestion des ressources de l'utilisateur | Niveau supérieur | Ressources supplémentaires |