Vous êtes sur la page 1sur 13

Gestion des comptes et groupes d'utilisateurs

sur Linux
Généralités - notion d'utilisateurs

Même si on est la seule personne à utiliser son système Linux, la compréhension et


la gestion des comptes utilisateurs constituent un sujet très important pour
l'administration du système. Et encore plus si la machine héberge plusieurs
comptes de plusieurs personnes.

Les comptes utilisateur servent à beaucoup de choses sur les systèmes UNIX et
Linux :

- Ils permettent de distinguer les différents utilisateurs qui ont accès au système,
pour des raisons de sécurité. Chacun d'eux possède un compte personnel, auquel il
accède par un identifiant et un mot de passe secret.

- Ces utilisateurs peuvent définir des permissions d'accès à leurs données, afin
d'en autoriser ou d'en interdire l'exploitation par les autres.

- Les comptes permettent l'authentification de chaque utilisateur accédant au


système, ce qui permet bien d'autres actes de gestion tels que gérer les courriers
électroniques des utilisateurs par exemple ou savoir qui a fait une bêtise en
examinant les fichiers de trace du système.

En dehors des comptes personnels, il existe des utilisateurs qui ne sont pas
forcément des personnes physiques. Ces utilisateurs remplissent des fonctions
administratives. C'est le cas du compte root utilisé par l'administrateur pour
effectuer la maintenance par exemple. C'est aussi le cas des comptes en général
destinés à des démons qui doivent avoir accès à certains fichiers sous une
identification spécifique (le compte news par exemple permet de recevoir les news
Usenet en provenance d'un autre site).

1. Utilisateurs et groupes Linux


1. Commande su
su (substitute user ou switch user) est une commande Unix permettant
d'exécuter un interpréteur de commandes en changeant d'identifiant de GID et
de UID. Sans argument, la commande utilise les UID 0 et le GID 0, c'est-à-dire
ceux du compte utilisateur root.

Cette commande est surtout utilisée pour obtenir les privilèges d'administration
à partir d'une session d'utilisateur normal, c’est-à-dire, non privilégiée.

L’option - place le shell de l’utilisateur.


$ su
$ su -
$ su tintin
$ su - tintin
2. Programme sudo
sudo (abréviation de substitute user do, en anglais : «exécuter en se
substituant à l'utilisateur») est une commande qui permet à l'administrateur
système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la
possibilité de lancer une commande en tant qu'administrateur, ou comme autre
utilisateur, tout en conservant une trace des commandes saisies et des
arguments.

Pour configurer sudo :

# visudo

qui ouvre le fichier de configuration sudo avec l'éditeur vi.

Un utilisateur devient "sudoer" en modifiant finement ce fichier ou ses fichiers


inclus jusqu'à définir les commandes seules autorisées. On peut profiter comme
dans cet exemple d'une configuration par défaut qui rend "sudoer" tout membre
d'un groupe défini (le groupe wheel sous Centos et le groupe sudo sous
Debian / Ubuntu).

Par exemple, ajouter un utilisateur au système en tant que non-root :

$ sudo useradd zozo

3. Utilisateurs
Toute entité (personne physique ou programme particulier) devant interagir
avec un système UNIX est authentifiée sur cet ordinateur par un utilisateur ou
"user".

Ceci permet d'identifier un acteur sur un système UNIX. Un utilisateur est


reconnu par un nom unique et un numéro unique.

Sur tout système UNIX, il y a un super-utilisateur, généralement appelé root,


qui a tous les pouvoirs sur le système. Il peut accéder librement à toutes les
ressources de l'ordinateur, y compris à la place d'un autre utilisateur, c'est-à-
dire sous son identité. En général, du moins sur les systèmes de production,
seul l'administrateur système possède le mot de passe root. L'utilisateur root
porte le numéro 0.

4. Utilisateurs : fichier /etc/passwd
On peut créer un utilisateur de plusieurs manières mais la finalité est toujours la
même : pour chaque utilisateur, une entrée doit être créée dans le
fichier /etc/passwd sous ce format :

account:passwd:UID:GID:GECOS:directory:shell
Par exemple, on ajoute un utilisateur "user1" :

echo
"user1:x:2000:2000:user1:/home/user1:/bin/bash" >>
/etc/passwd
Mais faut-il encore créer le groupe correspondant, vérifier la validité des UID et
GID, créer le répertoire utilisateurs, y donner les droits et y placer une
structure ...

5. Mots de passe : fichier /etc/shadow


Le mot de passe est écrit dans le fichier /etc/shadow avec ses paramètres :

1. nom de connexion de l'utilisateur (« login »)


2. mot de passe chiffré : $1$ (MD5),$2$ (Blowfish), $5$ (SHA-256), $6$ (SHA-512)
3. date du dernier changement de mot de passe
4. âge minimum du mot de passe
5. âge maximum du mot de passe
6. période d'avertissement d'expiration du mot de passe
7. période d'inactivité du mot de passe
8. date de fin de validité du compte
9. champ réservé

Par exemple :
francois:$6$d/
uLirbD$s90XRAj6g14036jIuvYYQaSOSrcJKqiNNywIQplztkTlyIrySZE1o2zjF
vSobewvyORXFdZ7bGeF0U1OTPoOm.:16842:0:99999:7:::

6. Générer un mot de passe aléatoire


 pwmake est un outil qui permet de générer des mots de passe (Centos 7) :

# pwmake 128
Ib9AHK3boravZUSuNuffYPExunEn

 Voici un exemple à utiliser dans un exercice de récupération de mot de passe :

pwmake 128 | passwd --stdin root


Changing password for user root.
passwd: all authentication tokens updated
successfully.
On peut utiliser des outils natifs :

 Avec les utilitaires de génération d’empreinte :

date +%s | sha256sum | base64 | head -c 32 ; echo

7. Groupes
Un utilisateur UNIX appartient à un ou plusieurs groupes.

Les groupes servent à rassembler des utilisateurs afin de leur attribuer des
droits communs.

Le groupe principal est le groupe initial de l’utilisateur.

L’utilisateur peut appartenir à des groupes secondaires.

8. Fichiers /etc/group et /etc/gshadow
Les fichiers /etc/group et /etc/gshadow définissent les groupes.
Le fichier /etc/group comporte 4 champs séparés par ":".

1. Nom- du groupe
2. mot de passe du groupe (ou x si le fichier gshadow existe)
3. le GID
4. liste des membres séparés par une virgule

9. Appartenance à un groupe
On peut vérifier son identifiant et l’appartenance aux groupes via les
commandes id et groups :
$ id
uid=1000(francois) gid=1000(francois) groupes=1000(francois),10(wheel)
contexte=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

$ groups
francois wheel

Gestion des comptes d'utilisateurs

A- Création d'un compte d'utilisateur


La création d'un compte demande plusieurs opérations : l'ajout d'une entrée dans
le fichier /etc/passwd, la création du répertoire personnel de l'utilisateur, et la mise
en place de la configuration par défaut dans le répertoire de cet utilisateur.

L'ensemble de ces opérations est pris en charge par la commande adduser.ou


useradd dont la syntaxe se présente comme suit :

adduser [-c commentaires] [-d rep_personnel]


[-e date_expiration] [-f tps_inactivité]
[-g groupe_initial] [-G groupe[,...]
[-m [-k squelette_rep | -M] [-p motdepasse]
[-s shell] [-u uid [-o]] [-n] [-r] utilisateur

Utilisée sans aucun argument, cette commande demande de manière interactive


toutes les informations nécessaires pour identifier l'utilisateur en cours de création.
Utilisée sans option (donc uniquement avec l'argument nom d'utilisateur, cette
commande applique un ensemble de valeurs par défaut qui sont consignées dans
le fichier:

 /etc/default/useradd 

Voici un exemple de ce fichier, auquel de brefs commentaires sont rajoutés.

GROUP=100 identifiant du groupe primaire


HOME=/home racine des rép. Personnels
INACTIVE=-1 (nb de jours avant destruction du compte
EXPIRE= nb de jours avant expiration du mot de passe
SHELL=/bin/bash shell de connexion attribué au compte
SKEL=/etc/skel fichiers recopiés par défaut dans chaque rép. personnel

Le tableau ci-dessous synthétise les options les plus utilisées

Option Résumé

Nom complet de l'utilisateur et des commentaires


-c commentaires
divers

-d rep_personnel Par défaut dans le répertoire /home

Fixe la date d'expiration du compte (format


-e date_expiration
MM/JJ/AA)

Nombre de jours entre l'expiration et la


-f tps_inactivité
désactivation permanente du compte

Groupe d'affectation du compte. Doit exister


-g groupe_initial
avant la création du compte.

Fixe l'appartenance de l'utilisateur à une liste de


-G liste
groupes secondaires (séparateur , sans espace)

Le répertoire personnel sera créé s'il n'existe pas.


-m L'option -k n'est valide qu'en conjonction avec
l'option -m
Recopie le contenu du répertoire squelette_rep
-k squelette_rep
dans le rép. Personnel ; par défaut /etc/skel

Mot de passe crypté. Par défaut le compte


-p motdepasse
est désactivé

-s shell Par défaut, attribution du shell par défaut bash

-u uid Pour fixer l'identifiant uid à l'utilisateur

Un groupe ayant le même nom que le


compte en cours de création sera crée sur le
-n système par défaut. Cette option
désactivera ce comportement spécifique à
Linux Mandriva

B - Suppression d'un compte d'utilisateur :

Pour supprimer le compte d'un utilisateur (non connecté), on utilise la commande


userdel

userdel [-r] utilisateur

L'option -r supprime aussi le répertoire. personnel et les fichiers de l'utilisateur.


La commande supprime toute trace de l'utilisateur dans le fichier de
configuration : /etc/passwd y compris dans les groupes d'utiliseurs.

C- Modification d'un compte d'utilisateur :

Pour modifier le compte d'un utilisateur, on utilise la commande usermod comme


suit :
usermod [options] utilisateur

Les options sont les mêmes que adduser

usermod -G stagiaire,prof stagex 

ajoute stagex dans les 2 groupes stagiaire et profs (qui doivent exister au


préalable)

Pour lui attribuer le nouveau mot de passe stgx : passwd stagex


La saisie du nouveau mot de passe sera demandée deux fois.

Remarques :

- Si root souhaite redéfinir son propre mot de passe, il doit passer la


commande passwd !

- Un utilisateur quelconque ne peut pas créer de compte, même s'il a le privilège


de faire partie du groupe root.! Par contre, il peut modifier lui-même son mot de
passe.
- Pour avoir plus d'informations sur les options, ne pas hésiter à faire recours aux
pages man de la commande adduser ou utiliser la commande : useradd -h

Attention ! Le compte créé permet à l'utilisateur d'accéder au système de fichier


Linux (avec des droits que nous verrons).

- Pour pouvoir se connecter au réseau SAMBA, à partir d'une station distante


Windows, il faut créer un compte Samba avec l'utilitaire smbpasswd

Gestion des groupes d'utilisateurs

Un groupe sous Linux est un ensemble d'utilisateurs qui partagent les mêmes
fichiers et répertoires. Nous verrons que les fichiers accordent des droits d'accès
réglables à ces groupes.

Chaque utilisateur doit faire partie au moins d'un groupe, son groupe initial ou
primaire. Celui-ci est défini au moment de la création du compte, et par défaut
sous Linux Mandriva, l'utilisateur appartient à un nouveau groupe créé, portant son
nom.
Ainsi, dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé
par son identifiant gid dans ce fichier.

L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut


faire partie de plusieurs autres groupes, appelés ses groupes secondaires.

Mais le rôle joué par le groupe primaire demeure prépondérant, comme nous le
verrons dans le système des permissions des fichiers.

Pour lister tous les groupes (primaire et secondaires) d'un utilisateur : 


groups utilisateur

Pour créer un nouveau groupe :


groupadd groupe

Supprimer le groupe .stagiaires : 
groupdel stagiaires ( Le groupe est alors supprimé du fichier /etc/group).

Pour ajouter un utilisateur à un groupe, le plus simple est d'éditer le


fichier /etc/group et d'ajouter une liste d'utilisateurs (séparés par des virgules)
sur la ligne du groupe (ou utiliser Linuxconf).

Structures des fichiers /etc/passwd et /etc/group

Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans
un seul fichier /etc/passwd 

La gestion des groupes est assurée par /etc/group


Les mots de passe cryptés sont souvent placés dans /etc/shadow, par sécurité
lisible seulement par root.

A- Structure de /etc/passwd

Ce fichier comprend 7 champs, séparés par le symbole « : »


1. nom de connexion (encore appelé nom d'utilisateur ou login)
2. ancienne place du mot de passe crypté
3. numéro d'utilisateur uid, sa valeur est le véritable identifiant pour le
système Linux; l'uid de root est 0, le système attribue conventionnellement
un uid à partir de 500 aux comptes créés.
4. numéro de groupe gid, dans lequel se touve l'utilisateur par défaut;
le gid de root est 0, les groupes d'utilisateurs au delà de 500
5. nom complet, il peut être suivi d'une liste de renseignements personnels (cf
chfn)
6. rép. personnel (c'est également le rép. de connexion)
7. shell, interprétateur de commandes (par défaut /bin/bash)

B- Structure de /etc/group

Ce fichier comprend 4 champs, séparés par le symbole « : »


1. nom du groupe
2. x pour remplacer un mot de passe non attribué maintenant
3. numéro de groupe, c-à-d l'identifiant gid
4. la liste des membres du groupe
Pour Connaitre l'uid et le gid de l'utilisateur courant, on utilise la
commande id dont le résultat ressemble à ce qui suit :

uid=501(stage1) gid=501(stage1) groups=501(stage1), 504(stagiaire)

Pour décrire un utilisateur on utilise la commande : chfn


Cette commande permet d'indiquer dans le champ numéro 5 du
fichier /etc/passwd différentes informations sur un utilisateur, son nom complet,
son bureau, ses numeros de téléphone (séparées par des virgules).

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash
(2) En tant que root, exécutez la
commande /usr/sbin/newusers , à partir d' un
fichier utilisateur que vous venez de
créer user.txt importer des données, créer un
utilisateur :
# newusers < user.txt

Vous pouvez ensuite exécuter la commande vipw ou vi


/etc/passwd pour vérifier /etc/passwd fichier a été l'émergence des
données de ces utilisateurs, et le répertoire personnel de l'utilisateur a
été créé.

(3) Exécutez / usr / sbin / pwunconv.


Le /etc/shadow généré shadow mot de passe décodé puis réécrit
le /etc/passwd , et /etc/shadow de l' shadow champ mot de passe
supprimé. Ceci est de faciliter la prochaine étape des travaux de
transformation cryptographique, qui est d'annuler le shadow
password l' shadow password fonction.

# pwunconv

(4) pour modifier le fichier de contrôle de mot de


passe de chaque utilisateur.
Exemples de fichiers passwd.txt se lit comme suit :

user001:pass
user002:pass
user003:pass
user004:pass
user005:pass
user006:pass
(5) Exécuter en tant que
root /usr/sbin/chpasswd .
Créer un mot de passe de l' utilisateur, chpasswd passera
par /usr/bin/passwd commande codé mots de passe
écrits /etc/passwdchamp de mot de passe.

# chpasswd < passwd.txt

(6) pour déterminer le mot de passe codé écriture


/ etc / passwd champ mot de passe plus tard.
Exécutez /usr/sbin/pwconv mot de passe codé comme shadow
password de /etc/shadow shadow password , et le résultat est écrit
dans /etc/shadow .

# pwconv

Ceci complète la création d'un grand nombre d'utilisateurs, après quoi


vous pouvez aller vérifier les autorisations sur le répertoire personnel de
l'utilisateur sous / réglages d'origine sont correctes si, et vérifiez que le
mot de passe de connexion utilisateur est correcte.

Outils opérationnels en mode texte

La commande passwd
Elle est chargée du cryptage du mot de passe dans /etc/shadow
Syntaxe : passwd [option] nom-login

Options :
--stdin, la commande abandonne son caractère interactif habituel et examine
son entrée standard pour s'en servir comme mot de passe.
Très utile dans un script : echo mot | passwd --stdin (attention tout
caractère est significatif, y compris les ' ')
-d , pour supprimer le mot de passe, l'utilisateur pourra se connecter sans !
-l , pour verrouiller le compte et empêcher sa connexion.
-u , pour déverrouiller.

Cryptage des mots de passe


Pour des questions de sécurité, les mots de passe cryptés ne sont pas stockés
dans /etc/passwd qui doit etre accessible en lecture par tous.
La commande /usr/sbin/pwconv est chargée de transférer les mots de passes
cryptés, dans /etc/shadow. Pour plus de détails , consulter man pwconv

Pour interdire l'utilisation,


il suffit de remplacer le mot de passe chiffré par une étoile : '*'.

Les accès à un compte peuvent éventuellement être ouverts en laissant le


champ mot_de_passe vide. Toute personne voulant se connecter avec ce
compte pourra alors le faire.
Récapitulatif des principales commandes 

useradd, usermod, Gestion des comptes


userdel utilisateur

groupadd,
groupmod, Gestion des groupes
groupdel

pwck, grpck Vérification des fichiers

Changer le mot de
passwd
passe d'un utilisateur

chfn, id, groups,


Utilitaires divers
finger

La personnalisation du shell

Il est possible à partir du Shell de modifier l'interpréteur de commandes.


Pour ce faire, il faut utiliser la commande chsh ou alors passwd -s. Linux
cherche alors dans le fichier /etc/shells le programme que vous avez spécifié.
Seules les commandes présentes dans ce fichier seront acceptées et remplaceront
la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne
s'appliquent pas au compte du superutilisateur.

Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que


pour le fichier /etc/passwd.

Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il


suffit de remplacer le nom du compte root par celui désiré. Un compte privilégié
est un compte dont l'identifiant (UID, User ID) vaut zéro.

Le fichier /etc/profile permet de configurer le Shell. Il concerne tous les


utilisateurs.
On y trouve tout d'abord les variables du Shell telles que OPENWINHOME, PATH, ..
le type de terminal et la variable TERM. Une partie est consacrée au prompt du
Shell, enfin une dernière permet la définition des couleurs de la commande ls..
Au démarrage de Linux, il est agréable d'avoir le pavé numérique allumé, ce qui
n'est pas le cas par défaut. Il suffit de rajouter au fichier /etc/profile les lignes qui
suivent :
INITTY=/dev/tty[1-7]
for tty in $INITTY;
do setleds -D +num < $tty
done

L'administrateur configure un prompt identique pour tous les utilisateurs du


système en modifiant la variable PS1 dans le fichier /etc/profile.

S'il veut un prompt du genre 'Bonjour#', il lui faut d'éditer le fichier. Toutes les
lignes concernant la variable PS1 doivent alors être précédées d'un dièze: #. Il
suffit alors d'ajouter la ligne PS1='Bonjour#'.

L'utilisateur a le loisir de reconfigurer son prompt en éditant le fichier


~/.bash_profile (donc un fichier caché de son répertoire personnel) et en
positionnant à sa guise la même variable.

Il est vivement conseillé de laisser un blanc après le prompt pour une meilleure
lisibilité. Il est également possible d'utiliser des variables dans le prompt (pour
afficher par exemple l'heure ou le nom de la machine...) :

- d pour ajouter la date (format anglais)


- pour ajouter l'heure (HH:MM:SS)
- u pour ajouter le nom de l'utilisateur
- pour un retour à la ligne
- w pour ajouter le chemin complet du répertoire courant
- W pour ajouter le répertoire courant
- h pour ajouter le nom de la machine

La couleur peut également être changée. Pour ceci, il faut utiliser la


variable PS1 comme ceci:

Le numéro de la couleur sera pris dans la liste suivante:


Noir 0;30 Rouge 0;31 Vert 0;32

Brun 0;33 Bleu 0;34 Violet 0;35

Cyan 0;36 Gris 0;37 Gris 1;30


Clair

Rose 1;31 Vert 1;32 Brun 1;33


Clair Clair

Bleu 1;34 Violet 1;35 Cyan 1;36


Clair Clair Clair

Blanc 1;37

Personnalisation du prompt
Le prompt est personnalisable directement dans le .bashrc.

Pour afficher le prompt d'un utilisateur en vert, avec la date, on peut y ajouter ceci:
Code BASH :
PS1="\# \[\e[0;36m\][\t]\[\e[0;m\] \[\e[0;32m\]\u@\h\[\e[0;m\]: \[\
e[1;35m\]\w\[\e[0;m\] \[\e[1;32m\] \\$\[\e[0;m\] "

Pour l'utilisateur root, on peut changer la couleur pour du rouge:


Code BASH :
PS1="\# \[\e[0;36m\][\t]\[\e[0;m\] \[\e[0;31m\]\u@\h\[\e[0;m\]: \[\
e[1;35m\]\w\[\e[0;m\] \[\e[1;31m\] \\$\[\e[0;m\] "

Ou un prompt tout simple (Comme sur Gentoo) mais coloré :

Pour root en rouge :


Code BASH :
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '

Ou pour les utilisateurs :


Code BASH :
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '

Pour harmoniser les prompts des utilisateurs, on peut créer ce script pour choisir la couleur
en fonction de l'utilisateur (root ou non) :

Code BASH :
if [[ ${EUID} == 0 ]] ; then
#Prompt de root
else
#Prompt de l'utiliateur
fi

Vous aimerez peut-être aussi