Le système d'exploitation GNU-Linux/Les utilisateurs et groupes
Les fichiers de configuration
modifier/etc/passwd
modifier- contient la liste des utilisateurs, un par ligne
- contient d'autres informations relatives aux utilisateurs, dont notamment les UID (User IDentifiant) et GID (Group IDentifiant)
- contenait autrefois les mots de passe chiffrés de chaque utilisateur, mais désormais ces mots de passe sont stockés dans le fichier /etc/shadow
Le format de ce fichier est indiqué dans la page de manuel du fichier de configuration passwd (section 5) :
$ man 5 passwd ... - nom de connexion de l’utilisateur (« login ») - un mot de passe chiffré optionnel - l’identifiant numérique de l’utilisateur (UID) - l’identifiant numérique du groupe de l’utilisateur (GID) - le nom complet de l’utilisateur (champ GECOS) - le répertoire personnel de l’utilisateur - l’interpréteur de commandes de l’utilisateur
La majorité des comptes définis dans ce fichier sont des comptes administratifs ne servant uniquement à l'exécution de certaines applications (daemons). Ainsi, les processus fonctionnant avec ces comptes sont limités par les droits d'accés de ces derniers.
/etc/shadow
modifier- contient les mots de passe chiffrés
- ne peut être lu uniquement par le root ou les membres du groupe shadow
- contient des informations relatives à l'expiration des mots de passe
Le format de ce fichier est indiqué dans la page de manuel du fichier de configuration shadow (section 5) :
$ man 5 shadow ... - nom de connexion de l’utilisateur (« login ») - mot de passe chiffré - nombre de jours, comptés à partir du 1er janvier 1970, depuis le dernier changement de mot de passe - nombre de jours à attendre avant de pouvoir changer le mot de passe - nombre de jours après lesquels le mot de passe doit être changé - nombre de jours avant la fin de validité du mot de passe et pendant lesquels l’utilisateur est averti - nombre de jours après la fin de validité provoquant la désactivation du compte - nombre de jours, comptés à partir du 1er janvier 1970, depuis que le compte est désactivé - champ réservé
La commande chage permet de changer les informations relatives à l'expiration des mots de passe (man chage).
/etc/group
modifier- contient la liste des groupes, un par ligne
- pour chaque groupe, le numéro du groupe (GID)
- les membres du groupe
Le format de ce fichier est indiqué dans la page de manuel du fichier de configuration group (section 5) :
$ man 5 group ... - nom du groupe - mot de passe chiffré du groupe. Si ce champ est vide, aucun mot de passe n’est nécessaire - GID : identifiant numérique du groupe - tous les noms des membres du groupe, séparés par des virgules
/etc/gshadow
modifierContient les informations cachées sur les groupes. Il contient des lignes avec les champs suivant séparés par des deux-points :
- nom du groupe
- mot de passe chiffré
- liste d' administrateur du groupe séparés par des virgules
- liste des membres du groupe séparés par des virgules
gpasswd
modifierLa commande gpasswd administre le fichier /etc/group. Elle permet d' affecter un mot de passe à un groupe.
# addgroup testgrp # Ajout du groupe "testgrp" (identifiant 1001)... # Terminé. # gpasswd testgrp # Changement du mot de passe pour le groupe test # Nouveau mot de passe : 'mdp' # Nouveau mot de passe (pour vérification) : 'mdp' #
newgrp
modifierNewgrp change l´identifiant de groupe réel actuel à la valeur du groupe indiqué, ou au groupe par défaut défini dans /etc/passwd si aucun nom de groupe n´est fourni.
La commande groups permet de connaitre les groupes dont je fais partie :
$ groups alex dialout cdrom floppy audio video plugdev netdev powerdev
On peut aussi obtenir la liste des groupes (et leurs GID) avec la commande id :
$ id uid=1000(alex) gid=1000(grpalex) groupes=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),106(netdev),109(powerdev),1000(grpalex)
Conversion avec ou sans shadow
modifierVérification de passwd et group
modifierGérer les utilisateurs
modifierAjouter un utilisateur
modifierLa commande useradd permet d'ajouter des utilisateurs. Le fichier /etc/default/useradd contient les paramètres par défaut de la commande.
Invoqué sans option, cette commande crée l'utilisateur, mais le compte n'est pas activé. De plus, elle n'a pas crée le répertoire de travail de l'utilisateur.
# useradd paul
# grep paul /etc/passwd paul:x:1002:1002::/home/paul:/bin/sh
# grep paul /etc/shadow paul:!:13823:0:99999:7:::
# grep paul /etc/group paul:x:1002:
# ls -al /home/paul ls: /home/paul: Aucun fichier ou répertoire de ce type
Sous Debian, on utilisera plutôt la commande adduser qui offre plus d'options (positionnement du mot de passe et du champ GECOS à la création du compte, et création du répertoire de travail).
# adduser jacques Ajout de l'utilisateur « jacques »... Ajout du nouveau groupe « jacques » (1003)... Ajout du nouvel utilisateur « jacques » (1003) avec le groupe « jacques »... Création du répertoire personnel « /home/jacques »... Copie des fichiers depuis « /etc/skel »... Enter new UNIX password: Retype new UNIX password: passwd : le mot de passe a été mis à jour avec succès Modification des informations relatives à l'utilisateur jacques Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Nom complet []: Jacques N° de bureau []: 123 Téléphone professionnel []: 01 02 03 04 05 Téléphone personnel []: 01 06 07 08 09 Autre []: Chef de projet Ces informations sont-elles correctes ? [o/N] o
# grep jacques /etc/passwd jacques:x:1003:1003:Jacques,123,01 02 03 04 05,01 06 07 08 09,Chef de projet:/home/jacques:/bin/bash
# grep jacques /etc/shadow jacques:$1$OWMPkUFD$XnXmTUUJBGoLehbznyXUM/:13823:0:99999:7:::
# grep jacques /etc/group jacques:x:1003:
# ls -al /home/jacques total 20 drwxr-xr-x 2 jacques jacques 4096 2007-11-06 11:05 . drwxr-xr-x 6 root root 4096 2007-11-06 11:05 .. -rw-r--r-- 1 jacques jacques 220 2007-11-06 11:05 .bash_logout -rw-r--r-- 1 jacques jacques 414 2007-11-06 11:05 .bash_profile -rw-r--r-- 1 jacques jacques 2227 2007-11-06 11:05 .bashrc
La commande adduser dispose du fichier de configuration /etc/adduser.conf qui permet de positionner les valeurs par défaut de la commande. La commande adduser offrira plus d'options que la commande useradd.
Le fichier /etc/adduser.conf permet de configurer les options par défaut de la commande adduser
Extrait de adduser.conf
# La variable DSHELL spécifie le shell par défaut de la session sur le système. DSHELL=/bin/bash # La varible DHOME spécifie le répertoire par défaut contenant le dossier HOME de l'utilisateur. DHOME=/home # Si GROUPHOMES est à "yes", alors le dossier home sera créé avec le schéma suivant : /home/"nom du groupe"/" nom de l'utilisateur" GROUPHOMES=no # Si LETTERHOMES est à "yes", le dossier home sera créé dans un dossier ayant comme nom la première lettre du nom d'utilisateur # Par exemple : /home/u/user LETTERHOMES=no # La variable SKEL spécifie le dossier contenant le squelette du fichier utilisateur # En d'autre terme, elle indique le chemin du fichier d'exemple .profile qui sera copier dans le nouveau dossier home de l'utilisateur lors de sa création. SKEL=/etc/skel # FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs for dynamically allocated administrative and system accounts/groups. # Please note that system software, such as the users allocated by the base-passwd package, may assume that UIDs less than 100 are unallocated. FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999 # FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically allocated user accounts/groups. FIRST_UID=1000 LAST_UID=29999 # The USERGROUPS variable can be either "yes" or "no". If "yes" each created user will be given their own group to use as a default. If "no", each created user will be placed in the group whose gid is USERS_GID (see below). USERGROUPS=yes
La commande adduser permet aussi de rajouter facilement un utilisateur à un groupe donné :
Syntaxe : adduser <le login> <le groupe>
Exemple :
# adduser pierre audio
Pour vérifier, on dispose de 3 possibilités : - grep audio /etc/group - id pierre - groups pierre
Le répertoire /etc/skel (skeleton : squelette) contient les fichiers par défaut à copier dans les répertoires de travail des utilisateurs nouvellement créés.
Modifier un utilisateur
modifierLa commande usermod permet de modifier les informations relatives à un utilisateur donné.
Dans certains cas, il sera plus simple de modifier directement les fichiers /etc/passwd et /etc/group plutôt que d'utiliser cette commande.
Supprimer un utilisateur
modifierLa commande userdel permet de supprimer des utilisateurs.
Sous Debian, on utilisera plutot la commande deluser qui offre plus d'options (notamment la possibilité de créer une archive de tous les fichiers de l'utilisateur avant de supprimer son répertoire de travail).
De la même manière que adduser, la commande deluser dispose du fichier de configuration /etc/deluser.conf qui permet de spécifier son comportement par défaut.
Extrait de deluser.conf
REMOVE_HOME = 0 REMOVE_ALL_FILES = 0 # Backup files before removing them. This options has only an effect if REMOVE_HOME or REMOVE_ALL_FILES is set. BACKUP = 0 BACKUP_TO = "." # delete a group even there are still users in this group ONLY_IF_EMPTY = 0 # exclude these filesystem types when searching for files of a user to backup EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs)"
Gérer les groupes
modifierAjouter un groupe
modifierLa commande groupadd permet d'ajouter un groupe.
# groupadd compta
Sous Debian, on dispose de la commande addgroup, qui est en réalité un lien vers la commande adduser.
# which addgroup /usr/sbin/addgroup
# ls -l /usr/sbin/addgroup lrwxrwxrwx 1 root root 7 2007-10-24 12:53 /usr/sbin/addgroup -> adduser
# addgroup compta Ajout du groupe « compta » (identifiant 1004)... Terminé.
Modifier un groupe
modifierLa commande groupmod permet de modifier les informations relatives à un groupe donné.
Pour ajouter un utilisateur à un groupe :
usermod -g group_name user_name
Dans certains cas, il sera plus simple de modifier directement le fichier /etc/group plutôt que d'utiliser cette commande.
Supprimer un groupe
modifierLa commande groupdel permet de supprimer des groupes.
Sous Debian, on dispose de la commande delgroup, qui est en réalité un lien vers la commande deluser.
# which delgroup /usr/sbin/delgroup
# ls -l /usr/sbin/delgroup lrwxrwxrwx 1 root root 7 2007-10-24 12:53 /usr/sbin/delgroup -> deluser
Modifier manuellement les fichiers /etc/passwd, /etc/shadow, /etc/group et /etc/gshadow
modifierDans certains cas, il est plus simple d'éditer manuellement les fichiers de configuration /etc/passwd, /etc/shadow, /etc/group et /etc/gshadow plutôt que d'utiliser les commandes précédement évoquées.
Les commandes suivantes permettent de garantir qu'un seul root est en train de modifier un de ces fichiers :
- vipw : modification du fichier /etc/passwd
- vipw -s : modification du fichier /etc/shadow
- vigr : modification du fichier /etc/group
- vigr -s : modification du fichier /etc/gshadow
Pour plus d'information, se reporter aux pages de manuel (man vipw et man vigr).