source : https://systemzone.net/user-management-in-linux-redhat-centos/

Management d'utilisateurs et de groupes dans CentOS

Types d'utilisateurs

Il existe 3 types d'utilisateurs :

  • Super utilisateur : C'est le big boss, il a les pleins pouvoirs sur l'ensemble du système. Créer lors de l'installation du système.

  • Utilisateur système : Utilisateurs créer par le système pour le système. Ex : bin, games, ftp, name, mail, daemon, apache etc. C'est utilisateurs de peuvent pas se loger au système car par défaut leur "login shell" est sur "nologin".

  • Utilisateur régulier : Créer par le super utilisateur, l'utilisateur régulier a des droits limités, accordés par le super, pour utiliser le système. L'utilisateur régulier peut être : ftp user, a samba user or a mail user par exemple.

Créer un utilisateur

L'ajout d'utilisateur se fait via la commande useradd.

Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]

Options:
  -b, --base-dir BASE_DIR       base directory for the home directory of the
                                new account
  -c, --comment COMMENT         GECOS field of the new account
  -d, --home-dir HOME_DIR       home directory of the new account
  -D, --defaults                print or change default useradd configuration
  -e, --expiredate EXPIRE_DATE  expiration date of the new account
  -f, --inactive INACTIVE       password inactivity period of the new account
  -g, --gid GROUP               name or ID of the primary group of the new
                                account
  -G, --groups GROUPS           list of supplementary groups of the new
                                account
  -h, --help                    display this help message and exit
  -k, --skel SKEL_DIR           use this alternative skeleton directory
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -l, --no-log-init             do not add the user to the lastlog and
                                faillog databases
  -m, --create-home             create the user's home directory
  -M, --no-create-home          do not create the user's home directory
  -N, --no-user-group           do not create a group with the same name as
                                the user
  -o, --non-unique              allow to create users with duplicate
                                (non-unique) UID
  -p, --password PASSWORD       encrypted password of the new account
  -r, --system                  create a system account
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             login shell of the new account
  -u, --uid UID                 user ID of the new account
  -U, --user-group              create a group with the same name as the user
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

Lors ce qu'un utilisateur utilise cette commande, plusieurs actions sont réalisées :

  • Ajoute une nouvelle entrée dans /etc/passwd et /etc/shadow

  • Ajoute une nouvelle entrée dans /etc/group et /etc/gshadow

  • Créer un repertoire home pour le nouvelle utilisateur

  • Ajoute les droits et permissions au repertoire home

Utilisation

useradd aioli

Nous venons de créer l'utilisateur aioli, mais il faut lui configurer un mot de passe.

passwd aioli
# passwd aioli
Changement de mot de passe pour l'utilisateur aioli.
Nouveau mot de passe : 

Que s'est-il passé !? 0_o

1. Nouvelle entrée dans /etc/passwd

Ce fichier est utilisé pour stocker les informations sur les utilisateurs. La commande useradd ajoute une nouvelle ligne à ce fichier avec les informations entrées.

aioli:x:1001:1001::/home/aioli:/bin/bash

Chaque champs est séparé par des ":"

aioli:x:1001:1001::/home/aioli:/bin/bash
1    :2: 3  : 4  :5:     6    :    7
Champs N° Nom Valeure Description
1 nom d'utilisateur aioli Compris entre 1 et 32 charactères, fournit lors de la création de l'utilisateur, il sert à son authentification
2 mot de passe x Le charactère X indique que le mot de passe est chiffré dans le fichier /etc/shadow. Si on remplace le x par * l'utilisateur ne pourra plus se connecter. Si on le retire il pourra se connecter sans mot de passe
3 ID utilisateur (UID) 1001 User Identification Number, tout utilisateur en a un. 0 => ROOT; 1-99 => autres utilisateurs prédéfinis; 100-999 => Utilisateurs systèmes; 1000-XXXX => Utilisateurs réguliers
4 ID groupe (GID) 1001 Groupe principale de l'utilisateur. Quand un utilisateur est créer, un groupe en son nom est généréet lui est affecté. Il peut avoir plusieurs groupes.
5 Commentaire (optionnel) Juste du commentaire
6 Repertoire home /home/aioli Chemin vers le repertoire home de l'utilisateur. Si blanc, le repertoire racine / est utilisé.
7 SHELL utilisateur /bin/bash Chemin vers le shell utilisé

2. Nouvelle entrée dans /etc/shadow

Ce fichier sert à la gestion des mot de passes des utilisateurs. Le mot de passe chiffré vu précedement est stocké ici.

Juste après l'execution de la commande useradd aioli, la ligne créer est comme tel :

aioli:!!:18490:0:99999:7:::

L'utilisateur est en mode Lock jusqu'à l'execution de la commande passwd aioli qui va initialiser son mot de passe.

Chaque champs est séparé par des ":"

aioli:$6$stHFnKJOnqjUzHlH$K3QnPn0iam.3dlpe6BQpioMJBb4iMpapJzbX0.yYWoEVDCcESsj05hadC1QXgsuM4rnbITEYXyaq8/1Xh9naA0:18490:0:99999:7:::

1:2:3:4:5:6:7:8:9
Champs N° Nom Valeur Description
1 nom d'utilisateur aioli Compris entre 1 et 32 charactères, fournit lors de la création de l'utilisateur, il sert à son authentification
2 mot de passe $6$stHFnKJOnqjUzHlH$K3QnPn0iam.3dlpe6BQpioMJBb4iMpapJzbX0.yYWoEVDCcESsj05hadC1QXgsuM4rnbITEYXyaq8/1Xh9naA0 mot de passe chiffré SHA-512, avant initialisation avec la commande passwd ce champ était à !! => aucun mot de passe => utilisateur bloqué
3 age du mot de passe 18490 jours depuis le dernier changement de mot de passe, si valeure à 0, l'utilisateur doit changer son mot de passe lors de la prochaine connection
4 Minimum 0 Nombre de jour minimum entre deux changements de mot de passe
5 Maximum 99999 Nombre de jour maximum d'un mot de passe
6 Warn 7 Alerte l'utilisateur X jours avant l'expiration de son mot de passe
7 Innactif Nombre de jours avant désactivation du compte si mot de passe expiré. Seulement un super utilisateur peut ré-activer le compte
8 restriction urgence
9 future use pour des fonctionnalités futurs

3. Nouvelle entrée dans /etc/group

A chaque fois qu'un nouvel utilisateur est créé via la commande useradd, un groupe privé à son nom l'est aussi. L'entrée dans le fichier /etc/group se présente comme suit :

aioli:x:1002:
  1  :2:  3 : 4
Champs N° Nom Valeur Description
1 Nom du groupe aioli nom du groupe privé de l'utilisateur
2 Mot de passe du groupe Le mot de passe peut être assigné via la commande gpasswd. Le "x" indique que le mot de passe est stocké dans le fichier /etc/gshadow.
3 GID 1002 Identifiant du groupe
4 Membre(s) Liste des membres du groupes (excepté l'utilisateur)

4. Nouvelle entrée dans /etc/gshadow

systemzone:!::
      1   :2:3:4
Champs N° Nom Valeur Description
1 Nom du groupe aioli nom du groupe privé de l'utilisateur
2 Mot de passe du groupe Le mot de passe peut être assigné via la commande gpasswd. Le "!" indique qu'aucun mot de passe n'est défini. Si ce fichier est supprimer, le mot passe chiffré est déplacé dans /etc/group
3 Administrateur Liste des administrateurs du groupe, par default c'est vide => seul l'utilisateur avec le même nom est administrateur
4 Membre(s) Liste des membres du groupes (excepté l'utilisateur)

5. Création du repertoire HOME

Lors de la création d'un utilisateur, son espace personnel est créé dans le répertoire home comme suit : /etc/home/aioli/. Ce chemin par défaut peut-être modifié en éditant le fichier /etc/default/useradd.

/etc/login.defs & /etc/default/useradd

/etc/login.defs

Ce fichier contient tout un tas d'informations par default sur les utilisateurs. Utiliser notament lors de la création d'utilisateurs.

Nom parametre Valeur par defaut Description
MAIL_DIR Nom du groupe aioli
MAIL_DIR /var/spool/mail This is the directory path where user’s mail will be stored.
PASS_MAX_DAYS 99999 Maximum number of days for password validity.
PASS_MIN_DAYS 0 Minimum number of days allowed between password changes.
PASS_MIN_LEN 5 Minimum character length for a password.
PASS_WARN_AGE 7 How many days the password expiration message will be shown before expired.
UID_MIN 1000 Minimum number for the automatic user ID selection.
UID_MAX 60000 Maximum number for the automatic user ID selection.
SYS_UID_MIN 201 Minimum automatic UID for the system users.
SYS_UID_MAX 999 Maximum automatic UID for the system users.
GID_MIN 1000 It is the minimum numeric value for automatic group ID selection.
GID_MAX 60000 The maximum numeric value for automatic group ID selection.
SYS_GID_MIN 201 Minimum GID for the system accounts.
SYS_GID_MAX 999 Maximum GID for the system accounts.
CREATE_HOME yes This value tells useradd command whether it should create home directory for the user.
ENCRYPT_METHOD SHA512 Password encryption method for any user.
USERGROUPS_ENAB yes This enables userdel to remove user groups if no members exist.
UMASK 077 Default umask that is permission mask for the new users. If not specified, the permission mask will be initialized to 022.

/etc/default/useradd

Ce fichier contient les valeurs par defaut utilisées lors de la création d'un nouvel utilisateur.

# useradd defaults fileGROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes
Nom parametre Valeur par defaut Description
GROUP 100 Maximum number of groups for which a user can be member of.
HOME /home Default directory path where home directory of any user will be created.
INACTIVE -1 After account creation how many days the account remain inactive. Default value ‘-1’ indicates account is never inactive.
EXPIRE Account expiration date and it should be YYYY-MM-DD format.
SHELL /bin/bash Default login shell for new user.
SKEL /etc/skel The files that are kept in this directory will be copied to the user’s home directory at the time of user creation.
CREATE_MAIL_SPOOL yes This option ensures that every new user will have a mail directory followed by username in /var/mail directory where user’s mail will be stored.

Répertoire SKEL

Skel pour skeleton (squelette), dans ce repertoire ce trouve l'état par défaut lors de la création du répertoire HOME. C'est un dossier qui servira de modèle, un copier coller dans dans le nouveau repertoire.

  • .bash_logout
  • .bash_profile
  • .bashrc

Exemples

Créer un utilisateur avec un repertoire home personalisé

useradd -d /var/ftp systemzone

Créer un utilisateur sans repertoire home

useradd -M systemzone

Créer un utilisateur avec un UID personnalisé

useradd -u 1050 systemzone

Créer un utilisateur avec un UID & GID personnalisé

useradd -u 1050 -g 1050 systemzone

Ajouter plusieurs utilisateurs à un groupe

useradd -G admins,developers systemzone

Créer un utilisateur sans groupe

useradd -N systemzone

Créer un utilisateur avec date d'expiration

useradd -e 2020-09-29 systemzone
  • Possible de voir l'age d'un utilisateur :
chage -l systemzone
Last password change                                    : Sep 26, 2017

Password expires                                        : never

Password inactive                                       : never

Account expires                                         : Sep 29, 2017

Minimum number of days between password change          : 0

Maximum number of days between password change          : 99999

Number of days of warning before password expires       : 7