Administration système et sécurité sous LINUX
La gestion des utilisateurs Et des groupes
Par : L’équipe administration et sécurité LINUX
1
1
Préambule
La compréhension et
la gestion des comptes utilisateurs constituent un sujet très important pour l'administration et la sécurité des systèmes Unix même si on est la seule personne à l’utiliser.
L’importance est d’autant plus conséquente si
la machine héberge plusieurs comptes de plusieurs personnes.
2
Objectifs
La maitrise de ces différentes tâches d’administration :
La gestion des utilisateurs,
La gestion des groupes,
Les droits d’accès des utilisateurs.
3
Prérequis
4
L’identification et l’authentification
L'accès aux services du système repose sur deux opérations essentielles :
L'opération d'identification consiste à annoncer qui on est, afin de permettre au système de déterminer les permissions auxquels on a droit.
L'opération d'authentification consiste à « prouver » qu'on est bien celui qu'on prétend être. Le système refuse ses services à tout utilisateur inconnu ou qui n'a pas passé avec succès la phase d'authentification.
5
Mécanisme d’authentification
INIT : crée un terminal fils
1
2
Terminal : Attente du nom d’utilisateur
5
Login : Sortie
3
Terminal : saisie du nom d’utilisateur et Lancement du programme login
4
Login : Saisie de mot de passe
?
5
6
Non
concordance
Oui
1:init lance un terminal (processus getty)
2: le programme getty demande le nom de l'utilisateur,
3: le processus getty passe ce nom au programme login qui l'authentifie en lui demandant son mot de passe.
4: authentification de l’utilisateur afin de donner à chacun les droits d'accès aux différents services du système en fonction de ses privilèges.
5: lancement du programme shell préféré de l’utilisateur et chargement des fichiers d’environnement (si oui) ou redonner la main au processus init (sinon)
Login : lancement du shell
6: Une fois la session est terminée (fin du shell), init relance un nouveau terminal.
Shell : exécution des commandes
Shell : sortie
NB : Les processus (getty -> login -> shell ) se substituent, cela veut dire qu’il garde le même PID et c’est ainsi que d’une connexion,
reconnait
init
fin
la
6
Principe d’un utilisateur
Un utilisateur est l’association d’un nom de connexion (le login), à un UID et au moins un GID.
UID : User ID. GID : Group ID.
Le login, le UID et le GID sont uniques.
7
Types d’utilisateurs
Il existe trois types d’utilisateurs sur le système :
L’administrateur Appelé aussi le root, il possède le contrôle total sur le système.
Les utilisateurs applicatifs Leur principal intérêt est de faciliter la gestion des droits d'accès des applications et des démons. (exemple: un compte nommé mail)
Les simples utilisateurs: Ce sont des comptes permettant aux utilisateurs de se connecter et d'utiliser les ressources de la machine.
8
Le LOGIN
Le login contient en principe 8 caractères
Il doit commencer par une lettre et comporte au maximum 32
caractères,
L’utilisation des caractères spéciaux est déconseillée dans le
nom d’utilisateur tel que (_) , (.), l’espace…
Le login est sensible à la casse, les utilisateurs « esprit» et
« Esprit » sont différents
9
Le UID (User IDentifier)
L’UID est un entier strictement positif
Il sert à identifier l’utilisateur (ou le compte applicatif) tout au
long de sa connexion.
Les UID d’une valeur inférieure à 100 sont associés à des
comptes spéciaux avec des droits étendus.
Seul le UID 0 et le GID 0 sont standardisés et qui identifie le
root
Selon les distributions, à partir de 100, 500 ou 1000, et ce
jusqu’à environ 60 000, ce sont les UID des utilisateurs sans pouvoirs particuliers.
10
Les groupes(1/3)
Un groupe est un ensemble d’utilisateurs qui partagent les
même ressources sur le système, et sont identifiés par un GID
Chaque utilisateur fait partie d’au moins un groupe.
Comme pour les logins, le GID du groupe accompagne toujours
l’utilisateur pour le contrôle de ses droits.
Un utilisateur peut faire partie de plusieurs groupes,
Il existe deux types de groupes pour un utilisateur : le groupe
primaire et les groupes secondaires.
11
Types des groupes (2/3)
Le groupe primaire est celui qui est toujours appliqué à la
création d’un fichier.
Si l’utilisateur «esprit» a pour groupe primaire users, alors les groupe
«esprit»
comme
auront
créés
fichiers par d’appartenance users.
Un utilisateur dispose de tous les droits associés à ses groupes
secondaires.
Si «esprit» a comme groupe secondaire video et qu’un fichier dispose des droits d’écriture pour ce groupe, alors «esprit» aura le droit de modifier son contenu.
12
Les groupes (3/3)
La commande id permet de connaître les informations essentielles sur un utilisateur : uid, gid, groupes secondaires
Pour un fichier créé par esprit, son propriétaire sera esprit et son
groupe sera le groupe principal de esprit : users.
13
Le GID (Group IDentifier)
Le GID c’est un entier positif identifiant un groupe d’utilisateurs
sur le système,
Si le groupe n’est pas spécifié au moment de la création de
l’utilisateur, deux stratégies sont employées pour assigner un groupe par défaut :
Le groupe par défaut est le même pour tous, le groupe « users » avec
le GID 100
Le nom du groupe est semblable à celui de login, c’est la notion de groupe privé par utilisateur (UPG user private group), c’est la stratégie la plus utilisée actuellement.
14
Les mots de passe (1/2)
Les mots de passe permettent d’authentifier les utilisateurs.
La saisie est masquée (rien ne s’affiche).
Ils doivent être assez complexes pour ne pas être découverts facilement, mais assez intuitifs pour que l’utilisateur s’en souviennent.
Les mots de passe sont cryptés (MD5, DES par exemple) et ne sont pas directement lisibles sous leur forme cryptée par l’utilisateur afin que personne ne puisse tenter de le décrypter via un quelconque traitement.
Un utilisateur devrait changer régulièrement son mot de passe.
Publicité
15
Les mots de passe (2/2)
Il est possible de forcer la longueur et la complexité via les mécanismes d’authentification PAM et le fichier /etc/login.defs. Ce fichier est également consulté afin de modifier informations relatives aux utilisateurs (uid,gid,umask,…).
les
Exemple : /etc/login.defs
16
Les fichiers
/etc/passwd
/etc/group
/etc/shadow
17
Le fichier /etc/passwd (1/3)
Contient la liste des utilisateurs du système local.
Il est lisible par tout le monde.
Les informations qu’il contient sont publiques et utiles tant
pour le système que pour les utilisateurs.
Chaque ligne représente un utilisateur et comprend 7
champs, séparés par le symbole « : »
18
Le fichier /etc/passwd (2/3)
1
2
3
4
5
6
7
LOGIN : Nom de connexion de l’utilisateur
Mot de passe chiffré par la fonction a sens unique crypt ou md5. La valeur spéeciale < x > indique que le mot de passe chiffré est stocké dans /etc/shadow
UID : Numéro unique de l’utilisateur
GID : Numéro unique du groupe principal de l'utilisateur
Commentaire : champ de renseignements qui contient habituellement un descriptif de l'utilisateur
19
1
2
3
4
5
Le fichier /etc/passwd (3/3)
6
7
Répertoire personnel : C’est un répertoire attribué à l’utilisateur afin de sauvegarder ces données personnelles (la variable d'environnement $HOME indique le répertoire personnel de l’utilisateur)
SHELL: C’est le programme ou la commande qui va être lancé suite à la connexion au système. Il s’agit généralement d’un interpréteur de commandes,
20
Le fichier /etc/group (1/2)
Ce fichier contient la définition des groupes d’utilisateurs et pour chacun la liste des utilisateurs dont il est groupe secondaire.
Chaque ligne est composé sur 4 champs :
1
2 3
4
1
2
Le nom du groupe
Le mot de passe du groupe
21
Le fichier /etc/group (2/2)
3
Le groupe identifier
4 La liste des utilisateurs appartenant à ce groupe(secondaire).
NB : Il est inutile de replacer dans le quatrième champ les utilisateurs ayant
ce groupe pour groupe principal, c’est induit.
Le champ mot de passe pour les groupes est rarement utilisé en
pratique:
Un utilisateur a le droit de changer de groupe afin de prendre un groupe
secondaire comme groupe principal avec la commande newgrp.
Dans ce cas, l’administrateur peut mettre en place un mot de passe sur
le groupe pour protéger l’accès à ce groupe en tant que groupe principal .
22
Le fichier /etc/shadow (1/3)
Le fichier /etc/shadow accompagne le fichier /etc/passwd et sert à stocker le mot de passe crypté des utilisateurs.
Il contient toutes les informations sur le mot de passe et sa validité dans le temps.
Chaque ligne est composée de 9 champs séparés par des « : »
1
2
3
4
5
6
9
7 8
23
Le fichier /etc/shadow (2/3)
1
2
3
4
5
6
7
8
9
Le login
Le mot de passe crypté. Le $xx$ initial indique le type de cryptage.
Nombre de jours (depuis le 1 er janvier 1970) du dernier changement de mot de passe.
Nombre de jours avant lesquels le mot de passe ne peut pas être changé (0 : il peut être changé n’importe quand).
Nombre de jours après lesquels le mot de passe doit être changé.
Nombre de jours avant l’expiration du mot de passe durant lesquels l’utilisateur doit être prévenu.
Nombre de jours après l’expiration du mot de passe après lesquels le compte est désactivé.
Nombre de jours depuis le 1 er janvier 1970 à partir du moment où le compte a été désactivé.
Réservé.
24
Le fichier /etc/shadow (3/3)
Pour connaître la date en fonction du 01/01/1970 utilisez la commande date comme ceci, en ajoutant le nombre de jours désiré:
25
La gestion des utilisateurs
26
Ajout d’un utilisateur (1/4)
La création d’un utilisateur pourrait être entièrement effectuée à la main :
1- Rajouter une ligne dans /etc/passwd,
2- Rajouter d’une ligne dans /etc/shadow,
3- Rajouter d’éventuelles informations dans /etc/group,
4- Créer le répertoire personnel et mettre à jour son contenu avec /etc/skel,
5- Changer les permissions et le propriétaire du répertoire personnel,
6- Changer le mot de passe (encodé).
NB: Le répertoire /etc/skel est une squelette du répertoire de connexion des nouveaux utilisateurs.
27
Ajout d’un utilisateur (2/4)
Toutes les étapes précédentes peuvent être remplacées par la commande «useradd »,
Syntaxe :
$ useradd < options > nom_utilisateur
Description :
Elle ajoute un nouveau compte et effectue les principales opérations :
Création de l’utilisateur et remplissage des fichiers,
Création d’un groupe privé d’utilisateur (de même nom que celui-ci),
Création du répertoire personnel, remplissage et modification des droits.
28
Ajout d’un utilisateur (3/4) Options:
L’option Le rôle
-m
-u
Publicité
-g
-G
-d
-c
-k
-s
-p
-D
Crée aussi le répertoire personnel /home/login. Elle est parfois comprise par défaut.
Précise l’UID numérique de l’utilisateur.
Précise le groupe principal de l’utilisateur, par GID ou par son nom
Précise les groupes secondaires de l’utilisateur séparés par des virgules
Chemin du répertoire personnel. Généralement /home/<login>, mais n’importe quel chemin peut être précisé.
Un commentaire associé au compte.
Chemin du répertoire contenant le squelette de l’arborescence du répertoire utilisateur. C’est généralement /etc/skell.
Shell par défaut de l’utilisateur.
Le mot de passe de l’utilisateur.
Examiner les valeurs par défaut de la commande useradd
29
Ajout d’un utilisateur (4/4)
N.B
Si aucune option n’est précisée, les valeurs par défaut sont récupérées au sein du fichier /etc/default/useradd.
identifiant du groupe primaire racine des rép. personnels nb de jours avant destruction du compte nb de jours avant expiration du mot de passe shell de connexion attribué au compte recopiés par défaut dans chaque rép. personnel
30
Exercice :
Donner la commande qui ajoute la ligne suivante dans le fichier
/etc/passwd
grep robert /etc/passwd robert:x:1010:100:Compte de Robert:/home/robert:/bin/bash
La commande ne crée pas de mot de passe. Il faut le faire à la main
avec la commande passwd.
passwd robert Changing password for robert. Nouveau mot de passe : Retaper le nouveau mot de passe : Mot de passe changé.
31
Modifier le mot de passe (1/6)
La commande passwd permet de gérer les mots de passe mais aussi les autorisations de connexion et la plupart des champs présents dans /etc/shadow.
Tout utilisateur a le droit de changer son mot de passe, dans le délai
précisé par le champ 4 de /etc/shadow.
L’action par défaut est de changer le mot de passe de l’utilisateur
courant.
L’ancien mot de passe est demandé par sécurité.
L’utilisateur root a le droit de modifier les mots de passe de tous les utilisateurs du système, sans avoir à connaître le précédent mot de passe.
32
Modifier le mot de passe (2/6)
La commande passwd :
Syntaxe :
$ passwd <options> login
Description :
Permet le gestion des informations de validité
Tous les champs de /etc/shadow peuvent être modifiés par la
commande passwd.
33
Modifier le mot de passe (3/6)
Options:
Option
Rôle
-l
-u
-d
-n <j>
-x <j>
Lock : verrouille le compte (! devant le mot de passe crypté).
Unlock : déverrouille le compte. Il n’est pas possible de déverrouiller un compte qui n’a pas de mot de passe, il faut utiliser en plus -f pour cela.
Supprime le mot de passe du compte.
Durée de vie minimale en jours du mot de passe.
Durée de vie maximale en jours du mot de passe.
-w <j>
Nombre de jours avant avertissement.
-i <j>
Délai de grâce avant désactivation si le mot de passe est expiré.
-S
Statut du compte.
34
Exercice
Le compte esprit doit être modifié comme ceci :
• Il doit attendre 5 jours après saisie d’un nouveau mot de passe pour pouvoir le changer, • Son mot de passe est valide 45 jours, • Il est prévenu 7 jours avant qu’i l doit changer de mot de passe, • S’il ne change pas de mot de passe après 45 jours, il dispose encore de 5 jours avant d’être désactivé.
Donnez la commande passwd :
passwd -n 5 -x 45 -w 7 -i 5 esprit
Voici la ligne de /etc/shadow associée. esprit:$2a$10$dwbUGrC75bs3l52V5DHxZefkZyB6VTHsLH5ndjsNe/vF/HAzHOcR2 :13 984:5:45:7:5::
35
Modifier le mot de passe (4/6)
La commande chage permet de faire à peu près la même chose que passwd.
Syntaxe :
$ chage <options> login
Description :
Elle n’est accessible que par le root .
Lancée sans autre argument que le login de l’utilisateur, elle est interactive.
Notez à la fin la possibilité de modifier la date du dernier changement du mot de passe et une date fixe d’expiration du mot de passe (champ 8) :
36
Modifier le mot de passe (5/6)
Options:
Option
Rôle
-E
-M
-m
-W
-d
permet de fixer une date d'expiration sous la forme Unix standard (nombre de jours depuis le 1er janvier 1970) ou sous la forme YYYY/MM/DD
permet de changer la valeur du nombre maximal de jours de validité du mot de passe.
permet de changer la valeur du nombre minimal de jours de validité de mot de passe.
permet de changer le nombre de jours d'alerte avant un changement obligatoire de mot de passe.
permet de changer la date de dernier changement de mot de passe
37
Modifier le mot de passe (6/6)
38
Modification d’un utilisateur (1/2)
La commande usermod est utilisée pour modifier un compte.
Syntaxe :
$ usermod <options> login
Description :
Elle prend la même syntaxe et les mêmes options que
useradd mais dispose aussi d’une syntaxe complémentaire
39
Modification d’un utilisateur (2/2)
Options:
Option
Rôle
-L
-U
verrouillage du compte, comme passwd -l .
Déverrouillage du compte, comme passwd -u.
-e <n>
Expire : le mot de passe expire n jours après le 01/01/1970.
-u <UID>
Modifie l’UID associé au login. Le propriétaire des fichiers appartenant à l’ancien UID au sein du répertoire personnel est modifié en conséquence.
-l <login>
Modifie le nom de login.
-m
Move : implique la présence de -d pour préciser un nouveau répertoire personnel. Le contenu de l’ancien répertoire est déplacé dans le nouveau.
40
Suppression d’un utilisateur
Publicité
Supprimez un utilisateur avec la commande userdel.
Par défaut le répertoire personnel n’est pas supprimé.
Vous devez pour ceci passer l’option -r.
userdel -r esprit
41
La gestion des groupes
42
Ajout d’un groupe
Vous pouvez créer un groupe directement dans le fichier /etc/group ou bien passer par les commandes associées.
La commande groupadd permet de créer un groupe.
Sa syntaxe simple accepte l’argument -g pour préciser un GID précis.
Pour lister tous les groupes (primaire et secondaires) d'un utilisateur :
groups Salah Esprit Ecole Admin
43
Modification d’un groupe
La commande groupmod permet de modifier un groupe.
Syntaxe:
$ groupmod <options> nom_du groupe
Options:
Option
Role
-n <nom>
Renomme le groupe.
-g <GID>
Modifie le GID.
-A <user>
Ajoute l’utilisateur spécifié dans le groupe (groupe secondaire).
-R <user>
Supprime l’utilisateur spécifié du groupe.
44
Suppression d’un groupe
La commande groupdel supprime un groupe.
La commande vérifie d’abord si le groupe que vous voulez supprimer est le groupe principal d’un utilisateur.
Dans ce cas le groupe ne peut pas être supprimé.
Il faut alors vérifier le système de fichiers pour supprimer toute trace de ce groupe.
Exemple :
groupdel amis
45
Contrôle du propriétaire d'un fichier
La commande chfn (change full name) permet d'indiquer dans le champ numéro 5 du fichier /etc/passwd différentes informations sur un utilisateur.
Pour changer le propriétaire d'un fichier ou d'un répertoire, il faut utiliser chown. # chown nom_user nom_fich
Pour modifier le groupe d'un fichier ou d'un répertoire, il faut
utiliser chgrp.
chgrp nom_group nom_fich
46
Récapitulatif
useradd, usermod, userdel
groupadd, groupmod, groupdel
gestion des comptes utilisateur
gestion des groupes
passwd
changer le mot de passe d'un utilisateur
chfn, id, groups, chage
utilitaires divers
47
Les droits étendus
48
Les droits étendus (SUID,SGID) (1/3)
Il est possible d’établir des droits d’accès étendus pour les fichiers exécutables.
Quand on applique ces droits à une commande, cette dernière s’exécutera avec les droits du propriétaire ou du groupe d’appartenance de la commande et non plus avec les droits d’utilisateurs l’ayant lancée.
49
Les droits étendus (SUID,SGID) (2/3)
L’exemple le plus simple est le programme passwd permettant de changer son mot de passe. Si la commande était exécutée avec les droits d’un utilisateur classique, passwd ne pourrait pas ouvrir et modifier les fichier /etc/passwd et /etc/shadow
Seul le root peut modifier le fichier. La commande passwd ne pourrait donc pas modifier ce fichier pour un simple utilisateur.
50
Les droits étendus (SUID,SGID) (3/3)
Si on regarde les droit de la commande passwd :
Un nouveau droit est apparu: le droit s pour les droits de root, Ce nouvel attribut permet l’exécution de la commande avec des droits d’accès étendus. Pendant le traitement, le programme est exécuté avec les droit du propriétaire du fichier ou de son groupe d’appartenance, Le droit s sur l’utilisateur est appelé le SUID-bit (Set User ID bit), et sur le groupe GUID-Bit (Set Group ID bit),
51
Attribution des droits étendus (1/2)
La commande chmod permet de placer les SUID-Bit et GUID-Bit :
Méthode littérale :
chmod u+s commande # chmod g+s commande
Méthode numérique : Les valeurs octales sont 4000 pour le SUID-Bit et 2000 GUID-Bit.
chmod 4755 commande # chmod 2755 commande
52
Attribution des droits étendus (2/2)
NB:
Seul le propriétaire ou l’administrateur peut attribuer ce droit.
Affecter le SUID ou le GUID n’a pas de sens que si les droits d’exécution ont préalablement été établis (attribut x sur le propriétaire ou le groupe).
Si ceux-ci ne sont pas présents, le s et remplacé par S
53
Le sticky bit (1/2)
Le sticky bit (bit collant) permet d’affecter une protection contre l’effacement du contenu d’un répertoire. Prenant l’exemple du répertoire /tmp, tout les utilisateurs ont tous les droits sur son contenu :
Dans ce répertoire, tout le monde peut supprimer des fichiers y compris ceux qui ne lui appartiennent pas.
54
Le sticky bit (2/2)
Le sticky bit appliqué à un répertoire, empêche cette manipulation. Le fichier peut encore être visualisé et modifié , mais seul son propriétaire et le root peuvent le supprimer.
Méthode littérale
Méthode numérique En octal, on utilisera la valeur 1000 pour le sticky bit :
chmod 1777
/tmp
55
Environnement utilisateur
56
Les fichiers d’environnement (1/2)
Comme tout autre programme, le shell se base sur des fichiers de configuration. Pour le Bash, les deux types de fichiers de configuration utilisés pour la personnalisation de l'environnement:
Les fichiers de configuration utilisateur se trouvant dans les répertoires personnels des utilisateurs (~/.bashrc et ~/.profile ou ~/.bash_profile ). Ces deux fichiers sont spécifiques à chaque utilisateur et permettent à chacun d'entre eux de spécifier leurs préférences personnelles
Les fichiers de configuration globaux se trouvant sous le répertoire /etc (/etc/profile et /etc/bashrc). Ce sont les fichiers de configuration dans lesquels on défini toutes les options communes à tous les utilisateurs et ne sont éditables que par un administrateur.
57
Les fichiers d’environnement (2/2)
Lors du démarrage d’une session, le fichier de configuration /etc/profile est exécuté, puis les fichiers de configuration ~/.bash_profile et ~/.bashrc sont exécutés pour charger les données personnelles de l’utilisateur qui vient de se loguer.
Le fichier ~/.bash_profile n'est exécuté que lors d'un nouveau login, alors que le fichier ~/.bashrc est exécuté à chaque nouveau lancement de bash.
58
Les variables d’environnement (1/3)
Variables dynamiques stockant des données et des options de programmes, des informations sur l’ordinateur qui peuvent être le comportement de ces derniers selon la manière appropriée à l’environnement courant.
pour modifier
programmes
utilisées
par
les
L'utilisation de ces
chaque programme, certaines variables définissent des fonctions précises:
variables est définie par
59
Les variables d’environnement (2/3)
• PATH : indique la liste des chemins où trouver les programmes à
lancer.
• SHELL : indique l’interpréteur shell utilisé par défaut. • HOME : contient le chemin absolu vers le répertoire personnel de
l'utilisateur connecté.
• LOGNAME : pour le nom de l'utilisateur • HISTFILE : pour le fichier historique. • HISTSIZE : pour la limite de commandes historiques accessibles. • EDITOR : pour l'éditeur de ligne de commandes.
60
Les variables d’environnement (3/3)
Pour afficher la valeur d'une variable: $ echo $VAR_ENV
Pour déclarer des variables d’environnement $VARNAME=valeur $export VARNAME export rend la variable visible pour tous les shells et les programmes Pour remplacer les deux commandes précédentes: $export VARNAME=valeur
Pour effacer le contenu d'une variable $unset VARNAME
Afficher toutes les variables d'environnements $ env
61