Aller au contenu

La gestion des utilisateurs

Dans ce chapitre, vous aller apprendre à gérer les utilisateurs.


Objectifs : Dans ce chapitre, les futurs administrateurs Linux apprendront à :

✔ ajouter, supprimer ou modifier un groupe ;
✔ ajouter, supprimer ou modifier un utilisateur ;
✔ comprendre les fichiers associés aux utilisateurs et aux groupes et apprendre à les gérer ;
✔ modifiez le propriétaire ou le groupe propriétaire d'un fichier ;
✔ sécuriser les comptes utilisateur ;
✔ changer d'identité.

🏁 utilisateurs

Connaissances : ** ⭐ ⭐
Complexité : ** ⭐ ⭐

Temps de lecture : 30 minutes


Généralités

Chaque utilisateur est membre d'au moins un groupe, qui est appelé le groupe principal de l'utilisateur.

Plusieurs utilisateurs peuvent faire partie d’un même groupe.

Les autres groupes que le groupe principal sont appelés groupes secondaires de l'utilisateur.

Note

Chaque utilisateur a un groupe principal et peut être invité dans un ou plusieurs groupes secondaires.

Les groupes et utilisateurs se gèrent par leur identifiant numérique unique GID et UID.

  • UID : User IDentifier. Identifiant unique d’utilisateur.
  • GID : Group IDentifier. Identifiant unique de groupe.

L'UID et le GID sont reconnus par le noyau, ce qui signifie que le Super Admin n'est pas nécessairement l'utilisateur root , tant que l'utilisateur ayant pour uid=0 est le Super Admin.

Les fichiers liés aux utilisateurs/groupes sont:

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow
  • /etc/skel/
  • /etc/default/useradd
  • /etc/login.defs

Danger

Il est recommandé d’utiliser les commandes d’administration au lieu de modifier manuellement les fichiers.

Gestion des groupes

Fichiers modifiés, ajout de lignes :

  • /etc/group
  • /etc/gshadow

La commande groupadd

La commande groupadd permet d’ajouter un groupe au système.

groupadd [-f] [-g GID] groupe

Exemple :

$ sudo groupadd -g 1012 GroupeB
Option Description
-g GID GID du groupe à créer.
-f Le système choisit un GID si celui précisé par l’option -g existe déjà.
-r Crée un groupe système avec un GID compris entre SYS_GID_MIN et SYS_GID_MAX. Ces deux variables sont définies dans /etc/login.defs.

Règles de nommage des groupes :

  • Pas d’accents, ni caractères spéciaux ;
  • Différents du nom d’un utilisateur ou fichier système existant.

Note

Sous Debian, l'administrateur devrait utiliser, sauf dans les scripts destinés à être portables sur toutes les distributions Linux, les commandes addgroup et delgroup spécifiées dans le man :

$ man addgroup
DESCRIPTION
    adduser et addgroup ajoutent des utilisateurs ou des groupes au système en fonction des options fournies en ligne de commande et des informations contenues dans le fichier de configuration /etc/adduser.conf. Ce sont des interfaces plus conviviales que les programmes useradd et groupadd. Elles  permettent de choisir par défaut des UID ou des GID conformes à la charte Debian, de créer un répertoire personnel configuré suivant un modèle (squelette), d'utiliser un script sur mesure, et d'autres fonctionnalités encore.

La commande groupmod

La commande groupmod permet de modifier un groupe existant sur le système.

groupmod [-g GID] [-n nom] groupe

Exemple :

$ sudo groupmod -g 1016 GroupeP
$ sudo groupmod -n GroupeC GroupeB
Option Description
-g GID Nouveau GID du groupe à modifier.
-n name Nouveau nom.

Il est possible de modifier le nom d’un groupe, son GID ou les deux simultanément.

Après modification, les fichiers appartenant au groupe ont un GID inconnu. Il faut leur réattribuer le nouveau GID.

$ sudo find / -gid 1002 -exec chgrp 1016 {} \;

La commande groupdel

La commande groupdel permet de supprimer un groupe existant sur le système.

groupdel groupe

Exemple :

$ sudo groupdel GroupeC

Astuce

Lors de la suppression d'un groupe, il y a deux conditions :

  • Si un utilisateur a un groupe principal unique et que vous exécutez la commande groupdel sur ce groupe, vous serez informés qu'il y a un utilisateur spécifique dans le groupe et qu'il ne peut pas être supprimé.
  • Si un utilisateur appartient à un groupe secondaire (ce n'est pas le groupe principal de l'utilisateur) et que ce groupe n'est pas le groupe principal d'un autre utilisateur du système, alors la commande groupdel supprimera le groupe sans notification supplémentaire.

Exemples :

Shell > useradd testa
Shell > id testa
uid=1000(testa) gid=1000(testa) group=1000(testa)
Shell > groupdel testa
groupdel: cannot remove the primary group of user 'testa'

Shell > groupadd -g 1001 testb
Shell > usermod -G testb root
Shell > id root
uid=0(root) gid=0(root) group=0(root),1001(testb)
Shell > groupdel testb

Astuce

Lorsque vous supprimez un utilisateur en utilisant la commande userdel -r, le groupe principal correspondant est également supprimé. Le nom du groupe principal est généralement le même que celui de l'utilisateur.

Astuce

Chaque groupe a un GID unique. Un groupe peut être utilisé par plusieurs utilisateurs comme groupe secondaire. Par convention, le GID du super administrateur est 0. Les GID réservés à certains services ou processus vont de 201à 999, ils sont appelés groupes système ou groupes de pseudo-utilisateurs. Le GID pour les utilisateurs est généralement supérieur ou égal à 1000. Ils sont liés à /etc/login.defs, dont nous reparlerons plus tard.

# Comment line ignored
shell > cat  /etc/login.defs
MAIL_DIR        /var/spool/mail
UMASK           022
HOME_MODE       0700
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

Astuce

Un utilisateur faisant obligatoirement partie d’un groupe, il est préférable de créer les groupes avant d’ajouter les utilisateurs. Par conséquent, un groupe peut ne pas avoir de membres.

Le fichier /etc/group

Ce fichier contient les informations de groupes (séparées par :).

$ sudo tail -1 /etc/group
GroupP:x:516:patrick
  (1)  (2)(3)   (4)
  • 1 : Nom du groupe.
  • 2 : Le mot de passe du groupe est identifié par x. Le mot de passe du groupe est stocké dans /etc/gshadow.
  • 3 : GID.
  • 4 : Utilisateurs supplémentaires du groupe (à l'exclusion des utilisateurs dont c'est le groupe principal).

Note

Chaque ligne du fichier /etc/group correspond à un groupe. Les informations de l'utilisateur principal sont stockées dans /etc/passwd.

Le fichier /etc/gshadow

Ce fichier contient les informations de sécurité sur les groupes (séparés par :).

$ sudo grep GroupA /etc/gshadow
GroupA:$6$2,9,v...SBn160:alain:rockstar
   (1)      (2)            (3)      (4)
  • 1 : Nom du groupe.
  • 2: Mot de passe chiffré.
  • 3 : Nom de l'administrateur du groupe.
  • 4 : Utilisateurs supplémentaires du groupe (à l'exclusion des utilisateurs dont c'est le groupe principal).

Warning

Les noms des groupes dans /etc/group et /etc/gshadow doivent correspondre ligne par ligne, c'est-à-dire chaque ligne du fichier /etc/group doit avoir une ligne correspondante dans le fichier /etc/gshadow.

Un ! au niveau du mot de passe indique que celui-ci est verrouillé. Ainsi aucun utilisateur ne peut utiliser le mot de passe pour accéder au groupe (sachant que les membres du groupe n’en ont pas besoin).

Gestion des utilisateurs

Définition

Un utilisateur se définit comme suit dans le fichier /etc/passwd :

  • 1 : Nom de connexion ;
  • 2 : Identification du mot de passe, x indique que l'utilisateur a un mot de passe, ce mot de passe encrypté est enregistré dans le second champ du fichier /etc/shadow ;
  • 3 : UID ;
  • 4 : GID du groupe primaire ;
  • 5 : Commentaires ;
  • 6 : Répertoire de connexion ;
  • 7 : Shell (/bin/bash, /bin/nologin, ...).

Il existe trois types d’utilisateurs :

  • root(uid=0) : l'administrateur système ;
  • utilisateurs système (uid entre 201 et 999) : utilisé par le système pour gérer les droits d'accès aux applications ;
  • utilisateur standard (uid>=1000) : autre compte pour se connecter au système.

Fichiers modifiés, ajout de lignes :

  • /etc/passwd
  • /etc/shadow

La commande useradd

La commande useradd permet d’ajouter un utilisateur.

useradd [-u UID] [-g GID] [-d répertoire] [-s shell] login

Exemple :

$ sudo useradd -u 1000 -g 1013 -d /home/GroupeC/carine carine
Option Description
-u UID UID de l’utilisateur à créer.
-g GID GID du groupe principal. Le GID ici peut également être un nom de groupe ``.
-G GID1,[GID2]... GID des groupes supplémentaires. Le GID ici peut également être un nom de groupe. Plusieurs groupes supplémentaires peuvent être spécifiés, séparés par des virgules.
-d repertoire Répertoire de connexion.
-s shell Interpréteur de commandes.
-c COMMENTAIRES Ajoute un commentaire.
-U Ajoute l’utilisateur à un groupe portant le même nom créé simultanément. Si cette option n'est pas écrite par défaut, un groupe avec le même nom sera créé lorsque l'utilisateur sera créé.
-M Ne pas créer le répertoire personnel de l'utilisateur.
-r Créer un compte système.

À la création, le compte ne possède pas de mot de passe et est verrouillé.

Il faut assigner un mot de passe pour déverrouiller le compte.

Lorsque la commande useradd n'a pas d'options, elle apparaît :

  • Créer un répertoire personnel avec le même nom ;
  • Créer un groupe primaire avec le même nom ;
  • Le shell par défaut est bash ;
  • L'UID de l'utilisateur et le GID du groupe primaire sont automatiquement enregistrés à partir de 1000, et généralement les UID et GID sont les mêmes.
Shell > useradd test1

Shell > tail -n 1 /etc/passwd
test1:x:1000:1000::/home/test1:/bin/bash

Shell > tail -n 1 /etc/shadow
test1:! :19253:0:99999:7
:::

Shell > tail -n 1 /etc/group ; tail -n 1 /etc/gshadow
test1:x:1000:
test1:!::

Règles de nommage des comptes :

  • Pas d’accents, de majuscules ni caractères spéciaux ;
  • Différents du nom d’un groupe ou fichier système existant ;
  • Facultatif : spécifier les options -u, -g, -d et -s lors de la création.

Warning

L’arborescence du répertoire de connexion doit être créée à l’exception du dernier répertoire.

Le dernier répertoire est créé par la commande useradd qui en profite pour y copier les fichiers de /etc/skel.

Un utilisateur peut appartenir à plusieurs groupes en plus de son groupe principal.

Exemple :

$ sudo useradd -u 1000 -g GroupeA -G GroupeP,GroupeC albert

Note

Sous Debian, il faudra spécifier l’option -m pour forcer la création du répertoire de connexion ou positionner la variable CREATE_HOME du fichier /etc/login.defs. Dans tous les cas, l’administrateur devrait privilégier, sauf dans des scripts ayant la vocation d’être portables sur toutes les distributions Linux, les commandes adduser et deluser comme précisé dans le man :

$ man useradd
DESCRIPTION
    **useradd** est un utilitaire de bas niveau pour ajouter des utilisateurs. Sur Debian, les administrateurs devraient généralement utiliser **adduser(8)**
     à la place.

Valeur par défaut de création d’utilisateur.

Modification du fichier /etc/default/useradd.

useradd -D [-b repertoire] [-g groupe] [-s shell]

Exemple :

$ sudo useradd -D -g 1000 -b /home -s /bin/bash
Option Description
-D Définit les valeurs par défaut de création d’utilisateur.
-b repertoire Définit le répertoire de connexion par défaut.
-g groupe Définit le groupe par défaut.
-s shell Définit le shell par défaut.
-f Nombre de jours suivant l’expiration du mot de passe avant que le compte ne soit désactivé.
-e Date à laquelle le compte sera désactivé.

La commande usermod

La commande usermod permet de modifier un utilisateur.

usermod [-u UID] [-g GID] [-d repertoire] [-m] login

Exemple :

$ sudo usermod -u 1044 carine

Options identiques à la commande useradd.

Option Observation
-m Associé à l'option -d , déplace le contenu de l'ancien répertoire de connexion vers le nouveau. Si l'ancien répertoire personnel n'existe pas, le nouveau répertoire personnel ne sera pas créé ; Si le nouveau répertoire personnel n'existe pas, il est créé.
-l login Nouveau nom de connexion. Une fois que vous avez modifié le nom de connexion, vous devez également modifier le nom du répertoire personnel pour le correspondre.
-e AAAA-MM-JJ Date d’expiration du compte.
-L Verrouiller définitivement le compte. C'est-à-dire, un ! est ajouté au début du champ de mot de passe /etc/shadow
-U Déverrouille le compte.
-a Ajoute les groupes supplémentaires de l'utilisateur, qui doivent être utilisés avec l'option -G.
-G Modifier les groupes secondaires de l'utilisateur pour écraser les groupes secondaires précédents.

Astuce

Pour être modifié, un utilisateur doit être déconnecté et ne pas avoir de processus en cours.

Après modification de l’identifiant, les fichiers appartenant à l’utilisateur ont un UID inconnu. Il faut leur réattribuer le nouvel UID.

1000 est l’ancien UID et 1044 le nouveau. En voici quelques exemples :

$ sudo find / -uid 1000 -exec chown 1044: {} \;

Verrouillage et déverrouillage du compte d'utilisateur. En voici quelques exemples :

Shell > usermod -L test1
Shell > grep test1 /etc/shadow
test1:!$6$n.hxglA.X5r7X0ex$qCXeTx.kQVmqsPLeuvIQnNidnSHvFiD7bQTxU7PLUCmBOcPNd5meqX6AEKSQvCLtbkdNCn.re2ixYxOeGWVFI0:19259:0:99999:7
:::

Shell > usermod -U test1

La différence entre l'option -aG et l'option -G peut être expliquée par l'exemple suivant :

Shell > useradd test1
Shell > passwd test1
Shell > groupadd groupA ; groupadd groupB ; groupadd groupC ; groupadd groupD
Shell > id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1)

Shell > gpasswd -a test1 groupA
Shell > id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1002(groupA)

Shell > usermod -G groupB,groupC test1
Shell > id test1 
uid=1000(test1) gid=1000(test1) gorups=1000(test1),1003(groupB),1004(groupC)

Shell > usermod -aG groupD test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1003(groupB),1004(groupC),1005(groupD)

La commande userdel

La commande userdel permet de supprimer le compte d’un utilisateur.

$ sudo userdel -r carine
Option Observation
-r Supprime le répertoire de connexion de l'utilisateur et les fichiers de messagerie situés dans le répertoire /var/spool/mail/

Astuce

Pour être modifié, un utilisateur doit être déconnecté et ne pas avoir de processus en cours.

La commande userdel supprime les lignes correspondantes dans /etc/passwd, / <unk> shadow, /etc/group, /etc/gshadow. Comme mentionné ci-dessus, userdel -r supprimera également le groupe principal correspondant de l'utilisateur.

Le fichier /etc/passwd

Ce fichier contient les informations des utilisateurs (séparées par :).

$ sudo head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
(1)(2)(3)(4)(5)  (6)    (7)
  • 1: Login ;
  • 2 : Identification du mot de passe, x indique que l'utilisateur a un mot de passe, ce mot de passe encrypté est enregistré dans le second champ du fichier /etc/shadow ;
  • 3: UID ;
  • 4: GID du groupe primaire ;
  • 5: Commentaires ;
  • 6: Répertoire de connexion ;
  • 7: Interpréteur de commandes (/bin/bash, /bin/nologin, ...).

Le fichier /etc/shadow

Ce fichier contient les informations de sécurité des utilisateurs (séparées par :).

$ sudo tail -1 /etc/shadow
root:$6$...:15399:0:99999:7
:::
 (1)    (2)  (3) (4) (5) (6)(7,8,9)

  • 1: Login.
  • 2: Mot de passe chiffré. Utilise l'algorithme de chiffrement SHA512, défini par l' ENCRYPT_METHOD de /etc/login.defs.
  • 3: La date à laquelle le mot de passe a été modifié pour la dernière fois, au format de l'horodatage, en jours. L'horodatage est basé sur le 1er janvier 1970 comme heure standard. Chaque fois qu'un jour se passe, l'horodatage est +1.
  • 4: Durée de vie minimale du mot de passe. C'est-à-dire L'intervalle de temps entre deux changements de mot de passe (liés au troisième champ), en jours. Défini par le PASS_MIN_DAYS de /etc/login.defs, la valeur par défaut est 0, c'est-à-dire lorsque vous changez le mot de passe pour la deuxième fois, il n'y a pas de restriction. Cependant, s'il est de 5, cela signifie qu'il n'est pas autorisé à changer le mot de passe dans les 5 jours, et seulement après 5 jours.
  • 5: Durée de vie maximale du mot de passe. C'est-à-dire la période de validité du mot de passe (lié au troisième champ). Défini par le PASS_MAX_DAYS de /etc/login.defs.
  • 6: Le nombre de jours d'avertissement avant l'expiration du mot de passe (lié au cinquième champ). La valeur par défaut est de 7 jours, définie par le PASS_WARN_AGE de /etc/login.defs.
  • 7: Le nombre de jours de grâce après l'expiration du mot de passe (lié au 5ème champ).
  • 8: Heure d'expiration du compte, le format de l'horodatage, en jours. Notez que l'expiration d'un compte diffère de l'expiration d'un mot de passe. En cas d'expiration d'un compte, l'utilisateur ne sera pas autorisé à se connecter. En cas d'expiration du mot de passe, l'utilisateur n'est pas autorisé à se connecter en utilisant son mot de passe.
  • 9: Réservé pour une utilisation future.

Danger

Pour chaque ligne du fichier /etc/passwd doit correspondre une ligne du fichier /etc/shadow.

Pour la conversion de l'horodatage et de la date, veuillez vous référer au format de commande suivant :

# L'horodatage est converti en date, "17718" indique l'horodatage à remplir.
Shell > date -d "1970-01-01 17718 days" 

# La date est convertie en un horodatage, "2018-07-06" indique la date à remplir.
Shell > echo $(($(date --date="2018-07-06" +%s)/86400+1))

Les propriétaires des fichiers

Danger

Tous les fichiers appartiennent forcément à un utilisateur et à un groupe.

Le groupe principal de l'utilisateur qui crée le fichier est, par défaut, le groupe propriétaire du fichier.

Commandes de modifications

La commande chown

La commande chown permet de modifier les propriétaires d’un fichier.

chown [-R] [-v] login[:groupe] fichier

Exemples :

$ sudo chown root monfichier
$ sudo chown albert:GroupeA monfichier

Option Observation
-R Modifie les propriétaires du répertoire et de son contenu.
-v Affiche les modifications exécutées.

Pour ne modifier que l’utilisateur propriétaire :

$ sudo chown albert fichier

Pour ne modifier que le groupe propriétaire :

$ sudo chown :GroupeA fichier

Modification de l’utilisateur et du groupe propriétaire :

$ sudo chown albert:GroupeA fichier

Dans l'exemple suivant, le groupe assigné sera le groupe principal de l'utilisateur spécifié.

$ sudo chown albert: fichier

Changer le propriétaire et le groupe de tous les fichiers dans un répertoire

$ sudo chown -R albert:GroupA /dir1

La commande chgrp

La commande chgrp permet de modifier le groupe propriétaire d’un fichier.

chgrp [-R] [-v] groupe fichier

Exemple :

$ sudo chgrp groupe1 fichier

Option Observation
-R Modifie les groupes propriétaires du répertoire et de son contenu (récursivité).
-v Affiche les modifications exécutées.

Note

Il est possible d’appliquer à un fichier un propriétaire et un groupe propriétaire en prenant comme référence ceux d’un autre fichier :

chown [options] --reference=RRFICHIER FICHIER

Par exemple :

chown --reference=/etc/groups /etc/passwd

Gestion des invités

La commande gpasswd

La commande gpasswd permet de gérer un groupe.

gpasswd [option] groupe

Exemples :

$ sudo gpasswd -A alain GroupeA
[alain]$ gpasswd -a patrick GroupeA
Option Observation
-a login Ajoute l’utilisateur au groupe. Pour l'utilisateur ajouté, ce groupe est un groupe supplémentaire.
-A login, ... Définit la liste des administrateurs du groupe.
-d login Retire l’utilisateur du groupe.
-M login,... Définit la liste exhaustive des invités.

La commande gpasswd -M agit en modification et non en ajout.

# gpasswd GroupeA
New Password :
Re-enter new password :

Note

En plus de l'utilisation de gpasswd -a pour ajouter des utilisateurs à un groupe, vous pouvez également utiliser le usermod -G ou le usermod -AG mentionné précédemment.

La commande id

La commande id affiche les noms des groupes d’un utilisateur.

ID UTILISATEUR

Exemple :

$ sudo id alain
uid=1000(alain) gid=1000(GroupeA) groupes=1000(GroupeA),1016(GroupeP)

La commande newgrp

La commande newgrp peut sélectionner un groupe parmi les groupes supplémentaires de l'utilisateur comme le nouveau groupe principaltemporaire de l'utilisateur. La commande newgrp à chaque fois que vous basculez le groupe principal d'un utilisateur, créera un nouveau shell enfant (processus fils). Attention ! le shell enfant et sous shell sont différents.

newgrp [groupesecondaire]

Exemple :

Shell > useradd test1
Shell > passwd test1
Shell > groupadd groupA ; groupadd groupB 
Shell > usermod -G groupA,groupB test1
Shell > id test1
uid=1000(test1) gid=1000(test1) groups=1000(test1),1001(groupA),1002(groupB)
Shell > echo $SHLVL ; echo $BASH_SUBSHELL
1
0

Shell > su - test1
Shell > touch a.txt
Shell > ll
-rw-rw-r-- 1 test1 test1 0 10月  7 14:02 a.txt
Shell > echo $SHLVL ; echo $BASH_SUBSHELL
1
0

# Generate a new child shell
Shell > newgrp groupA
Shell > touch b.txt
Shell > ll
-rw-rw-r-- 1 test1 test1  0 10月  7 14:02 a.txt
-rw-r--r-- 1 test1 groupA 0 10月  7 14:02 b.txt
Shell > echo $SHLVL ; echo $BASH_SUBSHELL
2
0

# You can exit the child shell using the `exit` command
Shell > exit
Shell > logout
Shell > whoami
root

Sécurisation

La commande passwd

La commande passwd permet de gérer un mot de passe.

passwd [-d] [-l] [-S] [-u] [login]

Exemples :

Shell > passwd -l albert
Shell > passwd -n 60 -x 90 -w 80 -i 10 patrick
Option Observation
-d Supprime définitivement le mot de passe. Réservé à l'utilisateur root (uid=0) uniquement.
-l Verrouiller définitivement le compte utilisateur. Réservé à l'utilisateur root (uid=0) uniquement.
-S Affiche le statut du compte. Réservé à l'utilisateur root (uid=0) uniquement.
- u Déverrouille définitivement le compte utilisateur. Réservé à l'utilisateur root (uid=0) uniquement.
-e Expiration permanente du mot de passe. Réservé à l'utilisateur root (uid=0) uniquement.
-n jours Durée de vie minimale du mot de passe. Changement permanent. Réservé à l'utilisateur root (uid=0) uniquement.
-x jours Durée de vie maximale du mot de passe. Changement permanent. Réservé à l'utilisateur root (uid=0) uniquement.
-w jours Délai d’avertissement avant expiration. Changement permanent. Réservé à l'utilisateur root (uid=0) uniquement.
-i jours Délai avant désactivation lorsque le mot de passe expire. Changement permanent. Réservé à l'utilisateur root (uid=0) uniquement.

Utiliser password -l ajoute "!!" devant le mot de passe de l'utilisateur correspondant qui est contenu dans le fichier /etc/shadow.

Exemple :

  • Alain change son mot de passe :
[alain]$ passwd
  • root change le mot de passe d’Alain :
$ sudo passwd alain

Note

La commande passwd est accessible aux utilisateurs pour modifier leur mot de passe (l’ancien mot de passe est demandé). L’administrateur peut modifier les mots de passe de tous les utilisateurs sans restriction.

Ils devront se soumettre aux restrictions de sécurité.

Lors d’une gestion des comptes utilisateurs par script shell, il peut être utile de définir un mot de passe par défaut après avoir créé l’utilisateur.

Ceci peut se faire en passant le mot de passe à la commande passwd.

Exemple :

$ sudo echo "azerty,1" | passwd --stdin philippe

Warning

Le mot de passe est saisi en clair, passwd se charge de le chiffrer.

La commande chage

La commande chage est chargée de changer les informations d'expiration du mot de passe utilisateur.

chage [-d date] [-E date] [-I jours] [-l] [-m jours] [-M jours] [-W jours] [login]

Exemple :

$ sudo chage -m 60 -M 90 -W 80 -I 10 alain
Option Observation
-I jours Délai avant désactivation, mot de passe expiré (i majuscule). Changement permanent.
-l Affiche le détail de la stratégie (l minuscule).
-m jours Durée de vie minimale du mot de passe. Changement permanent.
-M jours Durée de vie maximale du mot de passe. Changement permanent.
-d LAST_DAY Dernière modification du mot de passe. Vous pouvez utiliser le style de l'horodatage des jours ou le style AAAA-MM-JJ. Changement permanent.
-E DATE_EXPIRATION Date d’expiration du compte. Vous pouvez utiliser le style de l'horodatage des jours ou le style AAAA-MM-JJ. Changement permanent.
-W jours Délai d’avertissement avant expiration. Changement permanent.

Exemples :

# La commande `chage` offre également un mode interactif.
$ sudo chage philippe

# L'option `-d` force le mot de passe à changer à la connexion.
$ sudo chage -d 0 philippe

Gestion du compte utilisateur avec chage

Gestion avancée

Fichiers de configuration :

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel

Note

L’édition du fichier /etc/default/useradd se fait grâce à la commande useradd.

Les autres fichiers sont à modifier avec un éditeur de texte.

Fichier /etc/default/useradd

Ce fichier contient le paramétrage des données par défaut.

Astuce

Lors de la création d’un utilisateur, si les options ne sont pas précisées, le système utilise les valeurs par défaut définies dans /etc/default/useradd.

Ce fichier est modifié par la commande useradd -D (useradd -D saisie sans autre option affiche le contenu du fichier /etc/default/useradd).

Shell > grep -v ^# /etc/default/useradd 
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
Paramètres Commentaire
GROUP Groupe par défaut.
HOME Définir le chemin du répertoire du niveau supérieur au répertoire de connexion d'un l'utilisateur standard.
INACTIVE Nombre de jours de grâce après l'expiration du mot de passe. Correspond au 7ème champ du fichier /etc/shadow. La valeur -1 signifie que la fonctionnalité de période de grâce est désactivée.
EXPIRE Date d’expiration du compte. Correspond au 8ème champ du fichier /etc/shadow.
SHELL Interpréteur de commandes.
SKEL Répertoire squelette du répertoire de connexion.
CREATE_MAIL_SPOOL Création de la boîte aux lettres dans /var/spool/mail.

Si vous n'avez pas besoin d'un groupe primaire portant le même nom lors de la création d'utilisateurs, vous pouvez faire :

Shell > useradd -N test2
Shell > id test2
uid=1001(test2) gid=100(users) groups=100(users)

Fichier /etc/login.defs

# Comment line ignored
shell > cat  /etc/login.defs
MAIL_DIR        /var/spool/mail
UMASK           022
HOME_MODE       0700
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

UMASK 022: Cela signifie que la permission de créer un fichier est 755 (rwxr-xr-x). Cependant, pour des raisons de sécurité, GNU/Linux n'a pas l'autorisation x pour les fichiers nouvellement créés, cette restriction s'applique à root(uid=0) et aux utilisateurs ordinaires (uid>=1000). Par exemple :

Shell > touch a.txt
Shell > ll
-rw-r--r-- 1 root root     0 Oct  8 13:00 a.txt

HOME_MODE 0700: Les permissions du répertoire personnel d'un utilisateur standard. Ne fonctionne pas pour le répertoire personnel de root.

Shell > ll -d /root
dr-xr-x---. 10 root root 4096 Oct  8 13:12 /root

Shell > ls -ld /home/test1/
drwx------ 2 test1 test1 4096 Oct  8 13:10 /home/test1/

USERGROUPS_ENAB yes: "Quand vous supprimez un utilisateur en utilisant la commande userdel -r , le groupe principal correspondant est également supprimé." Pourquoi ? C'est la raison.

Fichier /etc/skel

Lors de la création d’un utilisateur, son répertoire personnel et ses fichiers d’environnement sont créés. Vous pouvez considérer les fichiers du répertoire /etc/skel/ comme les modèles de fichiers dont vous avez besoin pour créer des utilisateurs.

Ces fichiers sont copiés automatiquement à partir du répertoire /etc/skel.

  • .bash_logout
  • .bash_profile
  • .bashrc

Tous les fichiers et répertoires placés dans ce répertoire seront copiés dans l’arborescence des utilisateurs lors de leur création.

Changement d’identité

La commande su

La commande su permet de modifier l’identité de l’utilisateur connecté.

su [-] [-c command] [login]

Exemples :

$ sudo su - alain
[albert]$ su - root -c "passwd alain"
Option Observation
- Charge l’environnement complet de l’utilisateur.
-c command Exécute la commande sous l’identité de l’utilisateur.

Si le login n’est pas spécifié, ce sera root.

Les utilisateurs standards devront taper le mot de passe de la nouvelle identité.

Astuce

Vous pouvez utiliser la commande exit/logout pour déconnecter les utilisateurs. Il devrait être noté qu'après un changement d'utilisateur, il n'y a pas de nouveau child shell or sub shell, par exemple :

Shell > whoami
racine
Shell > écho $SHLVL ; echo $BASH_SUBSHELL
1
0

Shell > su - test1
Shell > echo $SHLVL ; echo $BASH_SUBSHELL
1
0

Attention s'il vous plaît ! su et su - sont différents, comme indiqué dans l'exemple suivant :

Shell > whoami
test1
Shell > su root
Shell > pwd
/home/test1

Shell > env
...
USER=test1
PWD=/home/test1
HOME=/root
MAIL=/var/spool/mail/test1
LOGNAME=test1
...
Shell > whoami
test1
Shell > su - root
Shell > pwd
/root

Shell > env
...
USER=root
PWD=/root
HOME=/root
MAIL=/var/spool/mail/root
LOGNAME=root
...

Donc, lorsque vous voulez changer d'utilisateurs, n'oubliez pas le -. Comme les fichiers de variables d'environnement nécessaires ne sont pas chargés, il peut y avoir des problèmes pour exécuter certains programmes.