Unix/Linux : Droits d'Accès et Permissions
Unix/Linux : Droits d'Accès et Permissions
1
Administration système et réseaux
Architecture du système Unix/Linux
Protections et Droits d’accès
Sous Unix/Linux, tout utilisateur possède une identification (uid) et appartient à un
groupe particulier (gid).
Aussi, pour un fichier/répertoire donné, les utilisateurs du système peuvent être
classés en trois catégories :
le propriétaire du fichier, "user ", (u);
les membres du groupe propriétaire du fichier, "group ", (g);
les autres utilisateurs (reste des utilisateurs enregistrés sur les machines de
réseau), "others ", (o);
Tous les utilisateurs, "all ", (a) ou (u g o).
Trois types d’opérations élémentaires sont contrôlées par le système :
la lecture (r): lire un fichier / lister un répertoire ;
l’écriture (w): écrire un fichier / ajouter ou supprimer des fichiers dans le
répertoire;
et l’exécution (x): exécuter un fichier / se déplacer dans le répertoire.
Il y a donc neuf combinaisons possibles, qui sont codées en utilisant 9 bits de l’i-node
du fichier. Ces droits (ou permissions) d’accès ne peuvent être changés que par le
propriétaire du fichier (ou par son groupe d’utilisateurs ou tous autres s’ils ont les
droits d’accès), grâce à la commande chmod. 3
2
Administration système et réseaux
Architecture du système Unix/Linux
Les protections (Droits d’accès aux fichiers) des fichiers
A la création d'un compte d'utilisateur, l'administrateur affecte celui-ci à un
groupe. Chaque groupe possède un nom. Un utilisateur peut changer de
groupe par la commande newgrp.
On peut donner des droits d'accès particuliers à certains fichiers pour les
membres d'un même groupe.
Au total, il existe 3 types d'accès : propriétaire (u = user), groupe (g = group),
autres (o = other). L'ensemble est désigné par a (all).
L'expression des droits nécessite 12 bits :
Pour un fichier, r = droit de lecture, w = droit d'écriture, x = droit d'exécuter
(1 = oui, 0 = non)
Pour un répertoire,
r : on peut consulter la liste des fichiers qui y sont contenus
w : on peut créer ou effacer des fichiers à l'intérieur
x : on peut utiliser ce répertoire en argument d'une commande et s'y
positionner
Ces 9 bits sont précédés par 3 autres bits pour compléter la description des
protections : 5
3
Administration système et réseaux
Architecture du système Unix/Linux
Les protections (Droits d’accès aux fichiers) des fichiers
user group other
1 1 0 1 1 1 1 0 1 1 0 0
r w x r w x r w x
set uid 0 : - - - (aucun droit)
attribut spécifique 1 : - - x (exécution)
set-gid 2 : - w - (écriture)
7 4 3 : - w x (écriture et exécution)
6 5 4 : r - - (lecture seule)
5 : r - x (lecture et exécution)
6 : r w - (lecture et écriture)
en octal
7 : r w x (lecture, écriture et
exécution) 7
4
Administration système et réseaux
Architecture du système Unix/Linux
Les protections (Droits d’accès aux fichiers) des fichiers
Droits d’accès en octal
En octal, chaque « groupement » de droits (pour user, group et other) sera
représenté par un chiffre et à chaque droit correspond une valeur :
r (read) = 4
w (write) = 2
x (execute) = 1
-=0
Par exemple,
0 : - - - (aucun droit)
Pour rwx, on aura : 4+2+1 = 7
1 : - - x (exécution)
Pour rw-, on aura : 4+2+0 = 6 2 : - w - (écriture)
Pour r--, on aura : 4+0+0 = 4 3 : - w x (écriture et exécution)
Ce qui permet de faire toutes 4 : r - - (lecture seule)
les combinaisons : 5 : r - x (lecture et exécution)
6 : r w - (lecture et écriture)
7 : r w x (lecture, écriture et exécution) 9
5
Administration système et réseaux
Architecture du système Unix/Linux
Les protections (Droits d’accès aux fichiers) des fichiers
Exemple 2: -rw-r--r--1 root root 0 Mar 1 19:16 [Link]
11
group
type
-rw-r--r--
user
others 12
6
Administration système et réseaux
Architecture du système Unix/Linux : l’arborescence
répertoire racine /
• le répertoire de login: ~
bin tmp home
• le répertoire courant: .
• le répertoire supérieur: ..
• connaître le rép. courant: pwd
unbuntu
• lister le contenu: ls
(voir “man ls”)
13
• le répertoire de login: ~
bin tmp home
• le répertoire courant: .
• le répertoire supérieur: ..
• connaître le rép. courant: pwd
unbuntu
• lister le contenu: ls
(voir “man ls”)
14
7
Administration système et réseaux
Architecture du système Unix/Linux : l’arborescence
• pwd retourne:
/home/unbuntu/SIM
/
• se déplacer: cd
[/home/unbuntu/SIM]$ cd ..
[/home/unbuntu]$ tmp home
[/home/unbuntu]$ cd /tmp
[/tmp]$
FST unbuntu
• chemin relatif
• chemin absolu
16
8
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Linux étant multiutilisateur, les personnes employant celui-ci doivent être identifiées afin
d’assurer la confidentialité. Pour identifier tous ces utilisateurs au niveau du système, un
numéro unique leur sera attribué : le UID (User’s ID).
UID User IDentifier. Identifiant unique d’utilisateur. L’UID identifie l’utilisateur tout au
long de sa connexion.
Il est utilisé pour le contrôle de ses droits et de ceux des processus qu’il a lancé.
Chaque utilisateur possède un groupe principal et peut être invité dans un ou plusieurs
groupes secondaires.
GID Group IDentifier. Identifiant unique de groupe.
Les groupes et utilisateurs se gèrent par leur identifiant numérique unique GID et UID.
Ce sont les UID et GID qui sont stockés au sein de la table des inodes, dans la table des
processus et non les logins.
Plusieurs utilisateurs peuvent faire partie d’un même groupe.
Les fichiers de déclaration des comptes et groupes se trouvent dans /etc.
Recommandation:
Il est recommandé d’utiliser les commandes d’administration au lieu de modifier
manuellement les fichiers.
17
9
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Les comptes utilisateur ne sont pas tous égaux sur Linux. On distingue trois types :
Super utilisateur (root):
• Il n’est pas concerné par les droits d’accès aux fichiers.
• Son UID égal à 0 (zéro) lui confère sa spécificité.
• Ce super utilisateur aura donc à sa charge les tâches d’administration du système.
Comptes ordinaires :
• leur vocation est de permettre à des utilisateurs standard de se connecter.
• L’UID d’un utilisateur ordinaire sera un nombre supérieur ou égal à 500.
19
20
10
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux: Le fichier /etc/passwd
Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs
(login, mots de passe, ...). Seul le superutilisateur (root) doit pouvoir le modifier. Il
faut donc modifier les droits de ce fichier de façon à ce qu'il soit en lecture seule
pour les autres utilisateurs.
Ce fichier possède un format spécial permettant de repérer chaque utilisateur,
chacune de ses lignes possède le format suivant:
nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe :
commentaire : répertoire :
programme_de_demarrage
Il est important de savoir que les mots de passe situés dans ce fichier sont chiffrés. Il
est donc inutile de l'éditer et de remplacer le champ mot_de_passe en tapant
directement le mot de passe, cela conduirait uniquement au blocage du compte.
Lorsqu'un utilisateur se connecte, le programme login compare le mot de passe tapé
par l'utilisateur (après l'avoir chiffré) à celui qui est dans le fichier passwd. Si ils sont
différents, la connexion ne peut être établie.
Pour pouvoir modifier le mot de passe d'un compte grâce à la commande passwd, il
faut être soit administrateur systême, soit propriétaire du compte (le système
demandera alors à l'utilisateur d'entrer l'ancien mot de passe avant de lui demander
d'enter 2 fois son nouveau mot de passe).
22
11
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux : fichier /etc/passwd
Le fichier /etc/passwd (en format texte) centralise toutes les informations
relatives aux utilisateurs connus sur le système.
Liste d'utilisateurs (un par ligne), dont chaque ligne contient 7 champs :
• le nom (login) : pas de majuscule et pas plus de 8 caractères sur certains
systèmes (éviter les caractères accentués).
• mot de passe : mot de passe chiffré ou «x» si le mot de passe est stocké
dansle fichier /etc/shadow
• le numéro d'utilisateur (UID) : identifiant entre 0 et 32767 (ou 65432 selon
les UNIX) unique de l'utilisateur
• le numéro de groupe d'utilisateurs (GID) : groupe par défaut de l'utilisateur.
Entre 0 et 32767. (ou 65432 selon les UNIX)
• le nom complet de l'utilisateur (gecos) : pour information.
• le répertoire d'accueil (homedir ) : répertoire par défaut quand on se
connecte et à laquelle est initialisée la variable $HOME
• le shell : le shell par défaut. S'il est vide, /bin/sh sera pris.
23
Le fichier /etc/passwd est lisible par tous les utilisateurs, mais n'est
modifiable que par root
24
12
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux : fichier /etc/passwd
25
13
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux : fichier /etc/group
Les attributs qui caractérisent un groupe Unix/Linux sont :
• un nom (unique);
• un mot de passe (souvent jamais utilisé) ;
• un identifiant numérique unique (GID) ;
• une liste d'utilisateurs membres qui n'ont pas ce groupe
par défaut.
L'ensemble de ces éléments est stocké dans le fichier
/etc/group au format texte.
groupe :mot-de-passe :gid :liste
28
14
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux : /etc/shadow
À l'origine d'Unix, les mots de passe étaient stockés dans le
fichier /etc/passwd (deuxième champs)
• cryptés avec l'algorithme traditionnel crypt.
• Le fichier /etc/passwd est en lecture par tous
Comme ce fichier doit être accessible en lecture pour tout
les utilisateurs, le stockage des mots de passe été déplacé
vers le fichier a /etc/shadow dont l'accès en lecture est
restreint
• cryptés avec l'algorithme MD5 (de plus en plus utilisé).
• Le mot de passe chiffré n'est pas déchiffrable... mais une
attaque brutale à base de dictionnaires peut aboutir
• Seul root peut lire/modifier ce fichier
29
30
15
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux : /etc/shadow
Exemple
Il n'est pas possible de se logguer directement si le mot de passe est '*' ou '!!‘
Les dates se font en nombre de jours écoulés depuis le 1er janvier 1970 31
16
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Création/suppression d’un compte utilisateur : useradd
33
34
17
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Modification d’un compte utilisateur : usermod
La commande « usermod » modifie les informations d'un compte
utilisateur.
Syntaxe : usermod [options] user
•Ne pas modifier l'uid pendant que l'utilisateur exécute une application
•Accepte les mêmes options que la commande useradd
•Mais dispose aussi des options particulières
35
18
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Changement de mot de passe
La commande passwd permet de changer un mot de passe.
• Tout utilisateur a le droit de changer son mot de passe, dans le délai
précisé par le 4 champ de /etc/shadow.
Tous les champs de /etc/shadow peuvent être modifiés par la
commande passwd.
37
38
19
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Commandes de gestions des groupes
La commande « groupdel » supprime un groupe.
• Le groupe ne peut pas être supprimé si c’est un groupe principale
d’un utilisateur.
La commande « groups » permet de vérifier l'appartenance à un
groupe
• affiche les groupes auxquels l'utilisateur appartient
La commande newgrp permet de changer à titre temporaire de
groupe principal
•À condition que le nouveau groupe précisé soit un groupe
secondaire de l’utilisateur et/ou que l’utilisateur dispose du mot
de passe du groupe.
• Les modifications sont temporaires, le fichier des mots de passe
n’est pas modifié.
39
40
20
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Commandes additionnelles
La commande pwck effectue une vérification des fichiers /etc/passwd et /etc/shadow
et reporte les erreurs.
• un shell inexistant, un répertoire personnel absent, etc.
La commande grpck fait la même chose pour les groupes.
• Dans ce cas le contrôle se limite aux doublons et à l’existence des utilisateurs
pour les groupes secondaires
La commande «lastlog» est utilisée pour imprimer la dernière heure de connexion
pour les comptes système. L’information de connexion est lue du fichier
/var/log/lastlog.
• -t n : affiche seulement les connexions plus récentes qu’il y a 'n’ jours.
• -u username :affiche seulement l’information pour le nom d’utilisateur.
La commande «last» est utilisée pour afficher la liste des derniers utilisateurs
connectés. Les informations des derniers utilisateurs connectés sont lues du fichier
/var/log/wtmp.
41
42
21
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
L’environnement utilisateur :/etc/skel
À la création d’un utilisateur et de son répertoire personnel,
l’environnement de l’utilisateur est mis en place.
L’environnement contient par exemple les alias, les variables
d’environnement, l’exécution de divers scripts.
Lors de la création d’un compte, les divers fichiers de configuration
sont copiés depuis le contenu du répertoire /etc/skel (skeleton) vers le
répertoire personnel .
Si vous souhaitez modifier les environnements de façon globale AVANT
la création des utilisateurs, vous pouvez placer dans /etc/skel tous les
fichiers que vous souhaitez et les modifier selon votre convenance.
Si par exemple vous souhaitez que tout le monde dispose des mêmes
icônes par défaut sur son bureau, et la même configuration par
défaut du bureau, placez-y le réspertoire Desktop et .kde d’un
compte modèle. 43
44
22
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Configuration avancée : /etc/default/passwd
Le fichier /etc/default/passwd contient quelques règles
utilisées par la commande passwd pour le cryptage des mots
de passe.
45
23
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Configuration avancée : /etc/[Link]
Exemple du fichier /etc/[Link]
47
48
24
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) ( liste de contrôle d'accès) : Désigne
traditionnellement deux choses en sécurité informatique :
• En Système UNIX/Linux : un système permettant de faire
une gestion plus fine des droits d'accès aux fichiers que ne le
permet la méthode employée par les systèmes UNIX/Linux.
• En réseau, une liste des adresses et ports autorisés ou
interdits par un pare-feu.
49
25
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) sous Unix/Linux
Les systèmes de type UNIX n'acceptent, classiquement, que trois types de droits :
•lecture (Read);
•écriture (Write);
•exécution (eXecute).
pour trois types d'utilisateurs :
•le propriétaire du fichier ;
•les membres du groupe auquel appartient le fichier ;
•tous les autres utilisateurs.
Cependant, cette méthode ne couvre pas suffisamment de cas, notamment en entreprise. En
effet, les réseaux d'entreprises nécessitent l'attribut de droits pour certains membres de
plusieurs groupes distincts, ce qui nécessite diverses astuces lourdes à mettre en œuvre et à
entretenir sous Unix.
L'intervention de l'administrateur est souvent nécessaire pour créer les groupes
intermédiaires qui permettront de partager des fichiers entre plusieurs utilisateurs ou groupes
d'utilisateurs, tout en les gardant confidentiels face aux autres.
Les ACL permettent de combler ce manque. On peut permettre à n'importe quel utilisateur,
ou groupe, un des trois droits (lecture, écriture et exécution) et cela sans être limité par le
nombre d'utilisateurs que l'on veut ajouter. 51
52
26
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) sous Unix/Linux
Vérifier la configuration du noyau
La ligne suivante indique que le support général des ACL est présent :
CONFIG_FS_POSIX_ACL=y
53
Commandes
Les deux commandes permettant de visualiser les droits ACL et de les
modifier sont, sous Unix/Linux :
54
27
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) sous Unix/Linux
Commande setfacl
Le nom de la commande se comprend set file's ACL
(« régler l'ACL du fichier »). Elle possède de nombreuses
options dont il convient de prendre connaissance en
consultant la page de manuel ( man setfacl).
55
28
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) sous Unix/Linux
Commande setfacl : Ajouter des permissions
Pour ajouter une ACL, vous devez utiliser la commande setfacl avec l'option -m :
setfacl -m permissions fichierOuDossier
les permissions s'écrivent sous cette forme :
préfixe:[utilisateur / Groupe:]droits
Exemple:
setfacl -m u::rwx,g::rwx,o:--- [Link]
29
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Access Control List (ACL) sous Unix/Linux
Commande getfacl
Cette commande suivie d'un nom de fichier affiche l'ACL de
ce fichier (get file's ACL « récupérer l'ACL du fichier »).
60
30
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
L’authentification sous UNIX/Linux
Identitification
Désigne l’action consistant à identifier (donner, attribuer un nom ou un code
en propre à la chose ou la personne ainsi reconnue) un objet ou un individu.
Authentification
Est la procédure qui consiste, à vérifier l’identité d’une personne ou d’un
ordinateur.
L’identification permet donc de connaître l’identité d’une entité alors que
l’authentification permet de vérifier cette identité (autoriser).
/etc/passwd :
login:pass:uid:gid:gecos:home:shell
/etc/group :
nom:pass:gid:member...
Problématiques des temps anciens
mots de passe (chiffrés) lisible par tous
pas d’expiration des comptes
pas d’expiration des mots de passe
62
31
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
L’authentification sous UNIX/Linux : Besoins
/etc/passwd : login:pass:uid:gid:gecos:home:shell
63
32
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
L’authentification sous UNIX/Linux : Besoins
Le fichier shadow : login:passwd:lstchg:min:max:warn:inact:expire:flag
mots de passe dans le /etc/passwd : x en temps normal !! pour les comptes bloqués
Chiffrement (Linux): mots de passe chiffrés (chiffrement: MD5, DES ,…).
65
66
33
Administration système et réseaux
L’authentification sous UNIX/Linux
modules d'authentification enfichables (PAM)
Modules d'authentification enfichables (PAM) sont des mécanismes permettant
d'intégrer plusieurs schémas d'authentification de bas niveau dans une API de haut
niveau, qui permet aux programmes qui reposent sur l'authentification d'être écrits
indépendamment du schéma d'authentification sous-jacent.
PAM se positionne en interface entre les applications et les méthodes
d’authentification. Application
API
Modules
Une application demande à PAM si un utilisateur peut se connecter. PAM en fonction
de sa configuration, appelle des modules fonctionnels qui vont exploiter une
méthode d’authentification. Si le résultat est positif (l’utilisateur a fourni les bons
éléments d’authentification), PAM renvoie l’autorisation de connexion à l’application.
67
68
34
Administration système et réseaux
modules d'authentification enfichables (PAM)
Fichiers de configuration PAM
Le répertoire /etc/pam.d/ contient les fichiers de configuration PAM pour chaque
application compatible PAM.
Chaque application s’appuyant sur PAM aura besoin d’un fichier (en général du même nom
que l’application) qui contiendra sa configuration PAM.
Format d’un fichier de /etc/pam.d
Le fichier contiendra autant de lignes qu’on souhaite appeler de modules avec pour chaque
ligne la structure suivante : type contrôle module arguments
Ou : <module interface> <control flag> <module name> <module arguments>
Type (module interface): Représente le type d’action qui nécessite le recours à PAM. Les
quatre valeurs possibles sont : auth, account, password et session.
contrôle : Indique comment le module doit réagir au succès ou à l’échec de son exécution. Les
valeurs courantes sont required, requisite, sufficient et optional. (obligatoire, requis, suffisant et
facultatif).
module (module name): Le nom du module appelé. Le format normalisé est :
pam_service.so, où service représente le nom courant du module.
arguments : Paramètres optionnels envoyés au module pour modifier son fonctionnement.
69
Dans cet exemple, il est question d’authentification (auth), l’exécution du module est requise
(requisite), le module exploite le fichier pam_nologin.so.
70
35
Administration système et réseaux
modules d'authentification enfichables (PAM)
Format d’un fichier de /etc/pam.d
type contrôle module arguments
(<module interface> <control flag> <module name> <module arguments>)
Les Interface du module (types d’action de PAM )
Quatre types d'interface de module PAM sont actuellement disponibles. Chacun d'eux
correspond à un aspect différent du processus d'autorisation :
[Link] : Cette interface de module authentifie les utilisateurs. Par exemple, il demande et vérifie
la validité d'un mot de passe. Les modules dotés de cette interface peuvent également définir
des informations d'identification, telles que des appartenances à des groupes ou des tickets
Kerberos.
[Link] : Cette interface de module vérifie que l'accès est autorisé. Par exemple, il peut
vérifier si un compte utilisateur a expiré ou si un utilisateur est autorisé à se connecter à un
moment particulier de la journée.
[Link] : Cette interface de module est utilisée pour changer les mots de passe des
utilisateurs.
4. session : Cette interface de module configure et gère les sessions utilisateur. Les modules
dotés de cette interface peuvent également effectuer des tâches supplémentaires nécessaires
pour autoriser l'accès, comme le montage du répertoire personnel d'un utilisateur et la mise à
disposition de la boîte aux lettres de l'utilisateur. 71
Rlogin : rlogin est une commande Unix de la famille des commandes R (initiale de remote : « à
distance » en anglais) qui permet d'ouvrir une session à distance sur une autre machine de type
Unix, via TCP sur le port 513.
Rlogin :Une des utilisations majeures de la commande rlogin est de se connecter à une machine
Unix, en fournissant un identifiant, puis un mot de passe. On a alors accès à la machine, en ligne de
72
commandes : # rlogin ''machine distante'‘
36
Administration système et réseaux
modules d'authentification enfichables (PAM)
Telnet, ssh, rcp, rsh, scp,…
SSH (Secure Shell) est à la fois un programme informatique et un protocole de communication
sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de
connexion. Par la suite, tous les segments TCP sont authentifiés et chiffrés. Il devient donc
impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur.
Le protocole SSH a été conçu avec l'objectif de remplacer les différents protocoles non chiffrés
comme rlogin, telnet, rcp et rsh.
Telnet (terminal network ou telecommunication network, ou encore teletype network) est un
protocole utilisé sur tout réseau TCP/IP, permettant de communiquer avec un serveur distant en
échangeant des lignes de texte et en recevant des réponses également sous forme de texte (le texte
étant échangé en clair) .
rcp (remote copy) est un programme issu du package rlogin qui permet de copier des fichiers sur ou
à partir d'une autre machine, reliée en réseau. Pour des raisons de sécurité, les administrateurs
peuvent bloquer les accès rcp ; on lui préfère maintenant scp.
SCP (Secure copy) désigne un transfert sécurisé de fichiers entre deux ordinateurs utilisant le
protocole de communication SSH. Le terme SCP désigne aussi bien le programme scp que le
protocole scp.
rsh (remote shell) est une commande de shell sous UNIX/LINUX. Ce programme est issu du package
rlogin, et permet de se connecter (logger) sur une autre machine pour exécuter une unique commande.
Pour des raisons de sécurité, les administrateurs peuvent bloquer les accès rsh. Aujourd'hui, on lui préfère
SSH. 73
37
Administration système et réseaux
modules d'authentification enfichables (PAM)
Format d’un fichier de /etc/pam.d
Pam_nologin.so; pam_securetty.so
75
38
Administration système et réseaux
modules d'authentification enfichables (PAM)
Format d’un fichier de /etc/pam.d
(<module interface> <control flag> <module name> <module arguments>)
Nom de module
Le nom de module donne à PAM le nom du module enfichable contenant l'interface de
module spécifiée. Le format normalisé est : pam_service.so, où service représente le nom
courant du module. (pam_permit.so; pam_deny.so; …)
Arguments des modules
PAM utilise des arguments pour transmettre des informations à un module enfichable lors du
processus d'authentification de certains modules.
Par exemple, le module pam_userdb.so utilise des indications secrètes stockées dans un
fichier de la base de données Berkeley pour authentifier les utilisateurs. La base de données
Berkeley est une base de données Open Source intégrée dans de nombreuses applications. Le
module nécessite un argument db pour spécifier à la base de données Berkeley quelle base de
données précise doit être utilisée pour le service demandé.
Une ligne pam_userdb.so typique d'un fichier de configuration PAM ressemble à l'extrait
suivant : auth required pam_userdb.so db=<path-to-file>
Dans l'exemple précédent, remplacez <chemin-au-fichier> par le chemin d'accès complet au
fichier de la base de données Berkeley DB.
Les arguments non-valides ne sont pas pris en compte et n'ont aucune incidence sur la
réussite ou l'échec du module PAM. Toutefois, la plupart des modules rapporteront une erreur
dans le fichier /var/log/messages. 77
/etc/pam.d/common-auth:
78
39
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Exemples de fichiers de configuration PAM
Ci-dessous figure quelques exemples des fichiers de configuration PAM :
/etc/pam.d/common-account:
/etc/pam.d/common-password:
79
/etc/pam.d/common-session-noninteractive:
80
40
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Exemples de fichiers de configuration PAM
Dans chacun des trois premiers cas, selon la réponse du module pam_unix.so, le deuxième
module, pam_deny.so, sera ignoré ou non. Si c'est le cas, le prochain et dernier module à
traiter sera pam_permit.so, qui autorise toujours l'accès. S'il n'est pas ignoré, non seulement
pam_deny.so refusera l'accès, mais en raison de la directive requise, le contrôle sera
immédiatement rendu à l'application avant que pam_permit.so ne soit jamais atteint.
81
82
41
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
NSS : Définition et fonctionnalités
NSS ( Name Service Switch) : est une fonction dans les systèmes d'exploitation Unix/Linux
qui fournit une variété de sources pour les bases de données de configuration courantes et les mécanismes
de résolution de noms.
Elle fournit les bases de données que le système d'exploitation et les applications utilisent pour
découvrir des informations comme les noms d'hôtes; les attributs d'utilisateur comme le répertoire
personnel, le groupe principal et le shell de connexion ; ….
Ces bases de données sources incluent des fichiers de système d'exploitation locaux, par
exemple, /etc/passwd, /etc/group et /etc/hosts, le système de noms de domaine (DNS), le service
d'information réseau (NIS), LDAP et autres.
NSS a pour objet de normaliser la résolution de noms au sein d’un système. NSS permet de résoudre un
nom en une autre information associée, comme par exemple un nom d’utilisateur et son uid, un nom de
groupe et son gid, ou encore un nom d’hôte et son adresse IP.
Sun Microsystems a d'abord développé NSS pour son système d'exploitation Solaris, mais par la suite les
programmeurs l'ont porté sur de nombreux autres systèmes d'exploitation, notamment FreeBSD, NetBSD,
GNU/Linux, HP-UX, IRIX et AIX.
NSS est un mécanisme complémentaire au PAM. Semblable à PAM, NSS est configurable et utilise des
modules afin d'interagir avec différents types de fournisseurs.
NSS Fait partie du système d'exploitation (par défaut) : « bibliothèque C ».
83
Remarque : NSS ne fournit pas d'authentification.
84
42
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
NSS : Définition et fonctionnalités
NSS: Name Service Switch
Il unifie la traduction/mapping entre les identifiants numériques (uid, gid, ip...) et les
noms (username, groupname, domainname...).
Login : Sim2022
85
43
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
NSS: Name Service Switch
Fichiers de configuration : /etc/[Link] :
Définissez l'ordre des requêtes (de gauche à droite) parmi les méthodes
d'identification possibles par la bibliothèque GNU C :
types de recherche
87
88
44
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
NSS + LDAP: identification User/group
Pour activer l'identification des utilisateurs/groupes LDAP dans le
système, l'intégration entre NSS et LDAP est nécessaire :
L'administrateur système doit installer le package libnss-ldap :
• Connecteur NSS--LDAP.
• Suite de bibliothèques et d'outils.
Cela nous permet donc :
• identification des utilisateurs, groupes, hosts, services…
• Mapping entre les identifiants numériques (Uid, gid, ip...) et
les noms (Username, groupname, domainname...).
• $ id <username>.
• $ getent shadow.
Installation de libnss-ldap :
• $ apt-get install libnss-ldap
89
45
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
PAM + LDAP: User authentication
Pour activer l'authentification LDAP dans le système, l'intégration entre PAM et
LDAP est nécessaire :
L'administrateur système Sysadmin doit installer le package libpam-ldap :
• Connecteur PAM-LDAP.
• Suite de bibliothèques et d'outils.
il permet aux applications et aux services d'utiliser LDAP pour l'authentification des
utilisateurs :
Chaque service qui utilise PAM pourra utiliser LDAP comme base de données
d'authentification :
• sshd, login…
… C'est pour ajouter (connecter) LDAP à PAM comme mécanisme d'authentification :
• pam_ldap.so.
Installation du libpam-ldap:
• root@debian:∼ ∼# apt-get install libpam-ldap
91
Pour plus de détails sur la Configuration de NSS/PAM (PAM avec pam_ldap) pour une authentification via un
LDAP, veuillez consulter les lien suivants:
[Link]
[Link] 92
46
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
PAM + NSS: Synthèse
93
94
47
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Authentification PAM / LDAP : processus linux
Un processus linux est un programme en action qui s’exécute en
mémoire et dans le processeur de votre ordinateur.
Il y a deux catégories de processus:
1. Le processus utilisateur (process user) et,
2. le processus système généralement appelé processus démon
(daemon process).
Les processus utilisateurs ce sont des processus qui sont créés par un
utilisateur particulier.
96
48
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Authentification PAM / LDAP : processus démon
La commande ps –x Afficher la liste des processus systèmes (démon)
97
98
49
Administration système et réseaux
Gestion des utilisateurs sous Unix/Linux
Authentification PAM / LDAP : processus démon dans Windows
Dans Windows, les démons sont appelés services .
99
100
50
Administration système et réseaux
Protocole AAA
101
51
Administration système et réseaux
Méthodes d'authentification Linux
Basées sur le Protocole AAA
103
104
52
Administration système et réseaux
Méthodes d'authentification Linux basées sur AAA
Kerberos : Fonctionnement
105
106
53
Administration système et réseaux
Méthodes d'authentification Linux basées sur AAA
Kerberos : Fonctionnement
Utilisations
L'identification Kerberos peut être utilisée par ces
protocoles/applications :
• OpenSSH, PAM
• Apache, Samba, MacOS
Implémentations
Il existe plusieurs implémentations libre ou propriétaire du protocole
Kerberos.
L'implémentation propriétaire la plus courante est la version de
Microsoft Kerberos v5 intégré à Active Directory.
Les principales implémentations libres sont les suivantes :
MIT Krb5, Heimdal, GNU Shishi
La version MIT Kerberos est choisie par les distributions Linux.
107
54
Administration système et réseaux
Méthodes d'authentification Linux basées sur AAA
Diameter
Au fond, le protocole Diameter est sur l'échange de message. Le diamètre est réalisé sous
la forme d'une architecture pair- à-pair , où chaque noeud peut être un client, le
serveur ou l'agent . Les agents de relais des messages entre les clients et les serveurs.
Un message de diamètre est l'unité de base utilisée pour envoyer des commandes ou
envoyer des notifications à d'autres nœuds.
Diamètre gère l'authentification et l'autorisation par voie de passage de messages
généralisée qui est personnalisé par l'application utilisée . De cette façon , diamètre
permet aux applications individuelles pour exécuter des fonctions applicables à leur
utilisation .
Messages comptables sont plus bien définie que les messages d'authentification , et sont
traités comme tels par le protocole.
Pour plus d’informations, merci de consulter:
[Link]
[Link]
[Link] 109
110
55
Administration système et réseaux
Technique de compilation du noyau
111
112
56
Administration système et réseaux
Technique de compilation du noyau
Qu’est ce qu’un noyau ?
Au début de son histoire le développement du noyau Linux était assuré par des développeurs
bénévoles, alors que aujourd'hui en plus des bénévoles il participent aussi des entreprises,
comme Red Hat, Novell, IBM (IBM possédait son propre UNIX, nommé AIX), ou Intel.
Rythme de développement :
Entre mars et avril 2005, le nombre de lignes de code a doublé (de 4,4 millions à 8,8 millions).
Début 2009, la version 2.6.30 du noyau linux est composée de plus de 11,5 millions de lignes
de code dans 28 000 fichiers, alors que 2,8 millions de lignes ont été ajoutées entre Noël 2008
et janvier 2010.
Entre 2005 et mi-2009, 5 000 développeurs et 500 entreprises ont participé à l'écriture du
noyau. Le nombre de patchs proposé est en augmentation, notamment depuis la version
2.6.25
Processus de développement : le processus de développement de Linux est public
sur Internet : les sources du noyau y sont visibles par tous, les modifications de ces
sources sont publiées et revues sur Internet et sont également visibles de tous. Un
cycle de développement incrémental et rapide a été adopté depuis le début
(aujourd'hui une nouvelle version est publiée toutes les 9 semaines environ).
Le code source du noyau Linux est disponible sur le site [Link]
114
57
Administration système et réseaux
Technique de compilation du noyau
Qu’est ce qu’un noyau ?
APPLICATION
SHELL
KERNEL
BIOS
115
Le noyau gère les taches de base du système tels que la gestion des processus
système; la gestion des processus utilisateurs; la gestion du processeur et de la RAM
et la gestion des systèmes de fichiers… 116
58
Administration système et réseaux
Technique de compilation du noyau
Nature du noyau
• Un noyau est un ensemble des fichiers écrits en c/c++.
• Compiler un noyau génère les fichiers binaires (langage de la machine).
117
59
Administration système et réseaux
Technique de compilation du noyau
Pourquoi compiler un noyau ?
• Comprendre comment fonctionne le noyau Linux ;
• Faire fonctionner un matériel qui n'est pas pris en charge
par votre noyau actuel ;
• Appliquer un correctif ;
• Vous voulez utiliser une distribution qui oblige de compiler
votre noyau ;
• Avoir des connaissances sur les noyaux ;
119
120
60
Administration système et réseaux
Technique de compilation du noyau
Numérotation des noyaux : Ex : linux 4.19.189
Les numéros de version du noyau sont composés de plusieurs nombres.
Le noyau Linux se présente sous la forme de versions et de branches.
La version majeure (ou branche) est indiquée par les deux premiers nombres, pris dans leur
ensemble.
patchs de correction de bogues, de sécurité ou d'optimisation sont indiquées par un
quatrième nombre de version, par exemple [Link] ou [Link]. Le fonctionnement
technique et organisationnel de cette branche sera éprouvé avec le temps, sur le moyen et
long terme. Pour plus d’information veuillez consulter
[Link]
4 . 19 . 189
121
étape étape
01 Obtenir le noyau
03 Lancement de
à compiler compilation
122
61
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Version courante du noyau
La commande uname permet de connaître la version courante du
noyau, mais aussi le type d’architecture et le nom de l’ordinateur.
123
124
62
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Installation des outils de compilation, de développement, etc.
126
63
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Installation des outils de compilation
• Installer d’autres outils
127
128
64
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Obtenir le noyau à compiler
• Installer la dernière version de noyau linux à partir de site [Link]
129
130
65
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Obtenir le noyau à compiler
• On obtient un fichier compressé
131
132
66
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
Obtenir le noyau à compiler
On liste le contenu de dossier kernel , on trouve le dossier décompressé qui porte le
nome de noyau
133
Etape 03
Installation des outils Configuration du
de compilation noyau
étape étape
02 04
étape étape
01 Obtenir le noyau
03 Lancement de
à compiler compilation
134
67
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
• Configuration du noyau
135
68
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
• Configuration du noyau
137
Ici on va déclarer les modules que nous souhaitons installer sur notre noyau. 138
69
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
• Configuration du noyau
139
140
70
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
• Lancement de compilation
• Lancer la compilation de noyau
Reboot
141
142
71
Administration système et réseaux
Technique de compilation du noyau
Compilation du noyau
• Après la compilation
143
Références Bibliographique
1. Linux - Administration système et exploitation des services réseau, Philippe BANQUET et Sébastien
BOBILLIER, Edition Eni, 2014
2. Autthenttiiffiicattiion Liinux // MacOSX , Emmanuel Blindauer, Direction Informatique, Université de
Strasbourg
3. José Ángel Herrero Velasco, “Computer System Design and Administration”, Department of Computer
and Electrical Engineering.
4. [Link]
5. [Link]
6. [Link]
7. [Link]
8. [Link]
9. [Link]
10. [Link]
11. [Link]
12. [Link]
13. [Link]
14. [Link]
AP
15. [Link]
16. [Link]
[Link]
17. [Link]
144
72
Références Bibliographique
18. [Link]
19. [Link]
g%C3%A9n%C3%A9ralit%C3%A9s
20. [Link]
source-8/
21. [Link]
22. [Link]
23. [Link]
145
73