Linux - Gestion des utilisateurs

baissaoui Messages postés 498 Date d'inscription jeudi 2 septembre 2021 Statut Webmaster Dernière intervention 21 août 2024 - 23 juin 2022 à 16:18

Premier pas de l'administrateur

<niv1>Lorsque diverses personnes ont accès à un système, il est nécessaire que l'administrateur système gère les utilisateurs. Pour ceci, les commandes usuelles et les fichiers à configurer doivent être connus.

<niv1>Les fichiers importants à connaître sont :
  • le fichier /etc/passwd
  • le fichier /etc/group

Le fichier /etc/passwd

<niv1>Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...). Seul le superutilisateur (root) doit pouvoir le modifier. Il faut donc modifier les droits de ce fichier de façon à ce qu'il soit en lecture seule pour les autres utilisateurs.

<niv1>Ce fichier possède un format spécial permettant de repérer chaque utilisateur,
chacune de ses lignes possède le format suivant:
nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe
: commentaire : répertoire : programme_de_demarrage


Sept champs sont explicités séparés par le caractère ":" :
  • le nom du compte de l'utilisateur
  • le mot de passe de l'utilisateur (codé bien sûr)
  • l'entier qui identifie l'utilisateur pour le système d'exploitation (UID=User ID, identifiant utilisateur)
  • l'entier qui identifie le groupe de l'utilisateur (GID=Group ID, identifiant de groupe)
  • le commentaire dans lequel on peut retrouver des informations sur l'utilisateur ou simplement son nom réel
  • le répertoire de connexion qui est celui dans lequel il se trouve après s'être connecté au système
  • la commande est celle exécutée après connexion au système (c'est fréquemment un interpréteur de commandes)

<niv1>Voici un exemple de fichier passwd :
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14::/var/lib/uucp/taylor_config:/bin/bash
cquoi:x:500:100:Cool......:/home/cquoi:/bin/bash




<niv1>Il est important de savoir que les mots de passe situés dans ce fichier sont chiffrés.
Il est donc inutile de l'éditer et de remplacer le champ mot_de_passe en tapant directement le mot de passe, cela conduirait uniquement au blocage du compte. Lorsqu'un utilisateur se connecte, le programme login compare le mot de passe tapé par l'utilisateur (après l'avoir chiffré) à celui qui est dans le fichier passwd. Si ils sont différents, la connexion ne peut être établie. Pour interdire l'utilisation, il suffit de remplacer le mot de passe chiffré par une étoile : "*".

Les accès à un compte peuvent éventuellement être ouverts en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra alors le faire. Pour pouvoir modifier le mot de passe d'un compte grâce à la commande passwd, il faut être soit administrateur systême, soit propriétaire du compte (le système demandera alors à l'utilisateur d'entrer l'ancien mot de passe avant de lui demander d'enter 2 fois son nouveau mot de passe).

<niv1>UID : identifiant (unique) de chaque compte utilisateur. Les nombres de 0 à 99 sont fréquemment réservés à des comptes propres à la machine.
Les valeurs supérieures à 100 sont elles réservées aux comptes utilisateurs.


<niv1>GID : identifiant de groupe. Le groupe par défaut (nommé group) porte le numéro 50. Cet identifiant est utilisé en relation avec
les droits d'accès aux fichiers. Cette question ne vous préoccupera que si votre système comporte plus d'un seul groupe d'utilisateurs. (Il faudra alors se préoccuper du fichier /etc/group.


<niv1>Il est possible à partir du Shell de modifier l'interpréteur de commandes. Pour ceci, il faut utiliser la commande chsh ou alors passwd -s. Linux cherche alors dans le fichier /etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur.

Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd. Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de remplacer le nom du compte root par celui désiré.

Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro.

Le fichier /etc/group

<niv1>Le fichier /etc/group contient la liste des utilisateurs appartenant aux différents groupes. En effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment rassemblés en différents groupes ayant chacun leurs propres droits d'accès aux fichiers et aux répertoires.

<niv1>Il se compose de différents champs séparés par ":" :

nom_de_groupe : champ_special : numero_de_groupe : membre1, membre2


Le champ spécial est fréquemment vide.

Le numéro de groupe est le numéro qui fait le lien entre les fichiers /etc/group et /etc/passwd


<niv1>Voici un exemple de fichier /etc/group :
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:
tty:x:5:
disk:x:6:
lp:x:7:
wwwadmin:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:cyrus
news:x:13:news



<niv1>
  • Lorsque l'on utilise la commande ls avec l'option -l, le numéro de groupe est affiché avec le numéro de l'utilisateur à qui appartient le fichier (ou le répertoire). Ce numéro unique correspond à un nom de groupe unique (souvent 8 caractères max.).
  • Un même utilisateur peut apparaître dans plusieurs groupes. Lorsqu'il se connecte au système, il appartient au groupe spécifié dans le fichier /etc/passwd (le champ GID). Il peut en changer à l'aide de la commande newgrp. Des droits d'accès aux fichiers sont alors définis.
  • Les protections du fichier doivent empêcher sa modification par les utilisateurs non privilégiés.
  • Pour ajouter un groupe, l'administrateur peut modifier le fichier /etc/group à l'aide d'un éditeur de texte. Il peut également utiliser la commande addgroup ou groupadd (pas toujours présentes). Dans le premier cas, il aura uniquement la ou les lignes correspondant aux groupes, à ajouter. Par exemple, la ligne :
    admin : : 56 : ccm
  • Pour ajouter un utilisateur à un groupe, il suffit d'éditer le fichier /etc/group et de rajouter ce nom au bout de la ligne en séparant le nom des membres par une virgule.
  • Pour supprimer un groupe, il suffit d'éditer le fichier /etc/group et d'effacer la ligne correspondante. Mais attention, il ne faut pas oublier de changer dans le fichier /etc/passwd les numéros (GID) du groupe supprimé, si des utilisateurs y appartenaient. Il est également essentiel de chercher les fichiers et répertoires de ce groupe pour le changer (dans le cas contraire les fichiers et répertoires riquent d'être inaccessibles).

La personnalisation du shell

<niv1>Le fichier /etc/profile permet de configurer le Shell. Il concerne tous les utilisateurs.

<niv1>On y trouve tout d'abord les variables du Shell telles que OPENWINHOME, PATH, ...

Ensuite, le type de terminal et la variable TERM sont définis en conséquence. Une partie est consacrée au prompt du Shell, enfin une dernière permet la définition des couleurs de la commande ls.

<niv1>Au démarrage de Linux, il est agréable d'avoir le pavé numérique allumé, ce qui n'est pas le cas par défaut.

Il y a donc quelques lignes à rajouter au fichier /etc/profile qui sont:
INITTY=/dev/tty[1-7]
for tty in $INITTY;
do setleds -D +num < $tty
done



<niv1>Lors de la connexion au Shell, la première chose qui apparaît est le prompt, celui-ci peut être configuré au gré de l'utilisateur.

Si l'administrateur veut avoir un prompt qui se nomme : "Bonjour#", il lui suffit alors d'éditer le fichier /etc/profile. Celui-ci contient une variable appelée PS1. Toutes les lignes concernant cette variable doivent alors être précédées d'un dièze: #. Il s'agit alors d'ajouter la ligne PS1='Bonjour#'.

<niv1>Il ne reste plus qu'à sauvegarder et se relogger. On peut alors apercevoir quelques changements.

Astuce: laisser un blanc après le prompt pour une meilleure lisibilité. Il est également possible d'utiliser des variables dans le prompt (pour afficher par exemple l'heure ou le nom de la machine...) :


\d pour ajouter la date (format anglais)
\t pour ajouter l'heure (HH:MM:SS)
\u pour ajouter le nom de l'utilisateur
\r pour un retour à la ligne
\w pour ajouter le chemin complet du répertoire courant
\W pour ajouter le répertoire courant
\h pour ajouter le nom de la machine


La couleur peut également être changée. Pour ceci, il faut utiliser la variable PS1 comme ceci: PS1='\[\033[num_couleurm]prompt_voulu\033[0m]'

<niv1>Le numéro de la couleur sera pris dans la liste suivante :

Noir 0;30
Rouge 0;31
Vert0;32
Brun0;33
Bleu0;34
Violet0;35
Cyan0;36
Gris Clair0;37
Gris1;30
Rose1;31
Vert Clair1;32
Brun Clair1;33
Bleu Clair1;34
Violet Clair1;35
Cyan Clair1;36
Blanc1;37



<niv1>Voici un exemple qui indique l'heure suivie du nom de l'utilisateur en rouge :

PS1='\t \[\033[0;31m]\u\033[0m]'