1.4 Gestion des utilisateurs et des groupes

1.4.1 En mode console:

1.4.1.1 Création d'utilisateurs:

Seul l'utilisateur root est autorisé à ajouter des utilisateurs.
La commande permettant de créer des utilisateurs est useradd (ou adduser):
Exemple:
[root@DeepGlue steph]# useradd toto
Cette commande ajoute l'utilisateur toto sans mot de passe (il faudra le définir plus tard).

Cette commande peut prendre des paramètres.
Pour obtenir la liste de ces paramètres: man useradd
En voici quelques uns:
-d pour préciser un chemin pour le dossier personnel.
Par défaut, pour l'utilisateur toto, le dossier personnel créé est /home/toto
[root@DeepGlue steph]# useradd toto -d /home/eleves/3A/toto
Cela permet de grouper les dossiers d'élèves et plus précisément d'élèves de 3A dans un même point de l'arborescence (et ainsi d'éviter un /home contenant directement 400 utilisateurs).

-m -k /etc/skel_special pour définir un contenu spécial du dossier personnel.
Par défaut, c'est le contenu de /etc/skel qui est utilisé pour "meubler" le dossier personnel lors de sa création.
En définissant un autre dossier /etc/skel_special, vous pouvez définir un autre contenu par défaut.
[root@DeepGlue steph]# useradd toto -m -k /etc/skel_eleve
/etc/skel_eleve est un dossier créé pour disposer du contenu standard du dossier personnel d'un élève type.

-p <motdepasse> permet de saisir le mot de passe directement sans demande de confirmation.
Exemple:
[root@DeepGlue steph]# useradd toto -p monmotdepasse

-s permet de préciser le shell de l'utilisateur.
Par défaut, le shell utilisé est /bin/bash, mais il en existe d'autres comme /bin/csh, /bin/zsh,...
Il est même possible, en mettant /bin/false, de faire en sorte que l'utilisateur ne puisse pas se connecter directement à la machine Linux.
C'est intéressant pour un utilisateur samba qui accède à des partages depuis un client Window$, mais qui n'est pas autorisé à accéder directement au serveur.
Exemple:
[root@DeepGlue steph]# useradd toto -s /bin/csh

D'autres paramètres permettent de choisir l'uid de l'utilisateur ou de fixer une date d'expiration du compte.
Enfin, deux autres paramètres permettent de placer l'utilisateur dans des groupes: Voir plus bas.


1.4.1.2 Suppression d'utilisateurs:

Seul l'utilisateur root est autorisé à supprimer des utilisateurs.
La commande permettant de supprimer des utilisateurs est userdel:
Exemple:
[root@DeepGlue steph]# userdel toto
La suppression d'un utilisateur ne détruit pas son dossier personnel.
Vous pouvez ensuite le supprimer à la main, ou passer un paramètre à la commande:
Exemple:
[root@DeepGlue steph]# userdel -r toto

Il existe de la même façon une commande groupdel.

Pour ne pas supprimer un utilisateur, mais néanmoins suspendre/bloquer le compte:
[root@DeepGlue steph]# passwd -l toto
Et pour le déverrouiller:
[root@DeepGlue steph]# passwd -u toto
Remarque: l pour lock et u pour unlock.

1.4.1.3 Mots de passe:

La commande permettant de créer des utilisateurs est passwd.
L'utilisateur root est le seul autorisé à changer les mots de passe de tous les utilisateurs sans connaitre le mot de passe actuel de l'utilisateur.
Un autre utilisateur ne peut changer que sont propre mot de passe et doit d'abord fournir son mot de passe actuel avant de le changer.
Exemple:
[steph@DeepGlue steph]$
[steph@DeepGlue steph]$ passwd
Changing password for user steph.
Changing password for steph
(current) UNIX password: <la saisie masquée>
New UNIX password: <la saisie masquée>
Retype new UNIX password: <la saisie masquée>
passwd: all authentication tokens updated successfully.
[steph@DeepGlue steph]$

Un utilisateur ne peut pas saisir un mot de passe trop court ou basé sur un mot du dictionnaire (anglais), alors que root peut outrepasser les avertissements.
Exemple:
[steph@DeepGlue steph]$ passwd
Changing password for user steph.
Changing password for steph
(current) UNIX password:
New UNIX password: <--- J'ai saisi truc
BAD PASSWORD: it is too short
New UNIX password: <--- J'ai saisi famous
BAD PASSWORD: it is based on a dictionary word
New UNIX password:
...

Il suffit de taper passwd pour changer son mot de passe, mais attention:
Ainsi invoqué par root, c'est le mot de passe personnel de root qui est changé.
Pour changer le mot de passe d'un autre utilisateur, root doit en passer le nom en paramètre.
[root@DeepGlue steph]# passwd toto

Remarque:
Le système ne gère pas les propriétaires en termes de nom d'utilisateurs et en termes de noms de groupes, mais en termes d'UID (identifiant d'utilisateur) et de GID (identifiant de groupe).
Les correspondances utilisateurs/UID et groupes/GID sont stockées dans /etc/passwd et /etc/group.
Les mots de passe sont pour des raisons de sécurité dans un fichier /etc/shadow qui fait lui une correspondance avec /etc/passwd en termes de noms d'utilisateurs et non d'UID cette fois.
Pour quelques jeux sur ces noms d'utilisateurs, de groupes et sur ces UID/GID voir la page liée.


1.4.1.4 Création de groupes:

Seul l'utilisateur root est autorisé à ajouter des groupes.
La commande permettant de créer des groupes est groupadd:
Exemple:
[root@DeepGlue steph]# groupadd eleves
Voir man groupadd pour les options de cette commande.


1.4.1.5 Affecter des utilisateurs dans un groupe:

Il est possible de définir des droits accordés à des groupes d'utilisateurs (notamment lors de la création d'un fichier/dossier, les droits sont définis pour l'utilisateur d'une part, pour le groupe principal de l'utilisateur d'une autre part et pour d'une dernière part tous les autres utilisateurs).
Il est donc intéressant d'affecter les utilisateurs dans des groupes pour gérer leurs droits et relations.

- lors de la création de l'utilisateur:
Par défaut le groupe principal d'un utilisateur est un groupe du même nom que l'utilisateur.
Ce n'est pas intéressant, surtout si pour 400 élèves, on se retrouve avec 400 groupes.
Pour créer toto avec pour groupe principal eleves:
[root@DeepGlue steph]# useradd toto -g eleves

Pour affecter en plus toto dans des groupes secondaires clubbd, unss,...
[root@DeepGlue steph]# useradd toto -g eleves -G clubbd,unss

 

- après la création de l'utilisateur:
On utilise la commande usermod.

Pour affecter toto dans les groupes secondaires classe3A et clubbd:
[root@DeepGlue steph]# usermod -G classe3A,clubbd toto
[root@DeepGlue steph]#

Vérification:
[root@DeepGlue steph]# cat /etc/group | grep toto
classe3A::500:toto
clubbd::507:toto
[root@DeepGlue steph]#

Pour changer le groupe principal de toto d'eleves à professeurs (il a eu de la promotion):
[root@DeepGlue steph]# usermod -g professeurs toto
[root@DeepGlue steph]#

Si on veut changer tous les groupes :
[root@DeepGlue steph]# usermod -g classe3A -G sport,dessin,musique toto
[root@DeepGlue steph]#

La commande usermod permet d'effectuer d'autres modifications, notamment sur le dossier personnel, le shell par défaut,...
Voir man usermod.

Toutes ces manipulations sont possibles en éditant les fichiers /etc/passwd et /etc/group.
Pour modifier le groupe principal de l'utilisateur toto:
Relever le GID du groupe principal souhaité.
Editer /etc/passwd et modifier le numéro du GID.
Ci-dessous il s'agit du deuxième 503.
toto:x:503:503::/home/toto:/bin/false
Remarque: Cela ne change pas le groupe propriétaire sur les fichiers déjà créés par toto.

Pour affecter toto dans un groupe secondaire, par exemple classe3A:
Editer /etc/group.
A la fin de la ligne concernant le groupe classe3A:
classe3A:x:511:tata,titi
Ajouter le nom toto (avec une virgule pour séparateur):
classe3A:x:511:tata,titi,toto

 

Pour voir dans quels groupes, l'utilisateur toto est affecté:
Existe-t-il une commande?
Il est possible de fouiner dans /etc/passwd et dans /etc/group:
[steph@DeepGlue steph]$ cat /etc/passwd | grep toto
toto:x:503:503::/home/toto:/bin/false
L'UID de toto est 503 et son GID est également 503.
[steph@DeepGlue steph]$ cat /etc/group | grep 503
eleves:x:503:
Le nom du groupe dont le GID est 503 est eleves.
[steph@DeepGlue steph]$ cat /etc/group | grep toto
partimag:x:512:toto
On trouve que toto est dans un autre groupe: partimag

Sommaire - Précédent - Suivant