Le système d'exploitation GNU-Linux/Les utilisateurs et groupes

Un livre de Wikilivres.



Les fichiers de configuration[modifier | modifier le wikicode]

/etc/passwd[modifier | modifier le wikicode]

  • 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 | modifier le wikicode]

  • 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).

À faire...link={{{link}}}
parler du SALT

/etc/group[modifier | modifier le wikicode]

  • 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[modifier | modifier le wikicode]

Contient 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[modifier | modifier le wikicode]

La 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[modifier | modifier le wikicode]

Newgrp 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[modifier | modifier le wikicode]

À faire...link={{{link}}}

parler des commandes pwconv et grpconv

Vérification de passwd et group[modifier | modifier le wikicode]

À faire...link={{{link}}}

parler des commandes pwck et grpck

Gérer les utilisateurs[modifier | modifier le wikicode]

Ajouter un utilisateur[modifier | modifier le wikicode]

La 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.

À faire...link={{{link}}}

Controler et compléter la description du fichier de configuration adduser.conf

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[modifier | modifier le wikicode]

La 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[modifier | modifier le wikicode]

La 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.

À faire...link={{{link}}}

description du fichier deluser.conf

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[modifier | modifier le wikicode]

Ajouter un groupe[modifier | modifier le wikicode]

La 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[modifier | modifier le wikicode]

La 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[modifier | modifier le wikicode]

La 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[modifier | modifier le wikicode]

Dans 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 :

  1. vipw : modification du fichier /etc/passwd
  2. vipw -s : modification du fichier /etc/shadow
  3. vigr : modification du fichier /etc/group
  4. vigr -s : modification du fichier /etc/gshadow

Pour plus d'information, se reporter aux pages de manuel (man vipw et man vigr).