RÉALISÉ PAR: SEHLA ZAYEN
E N S E I G N A N T E U N I V E R S I T A I R E
I N G É N I E U R C E R T I F I E L I N U X
Administration Serveur Linux
1
1 . NOTION D’UTILISATEUR
2 . LE FICHIER /ETC/PASSWD, LE FICHIER
/ETC/GROUP, LE FICHIER /ETC/SHADOW
3 . ADMINISTRATION DES UTILISATEURS
4 . CHANGEMENT DES PARAMÈTRES DU MOT DE PASSE
5 . ADMINISTRATION DES GROUPES
6 . GESTION DU PROPRIÉTAIRE ET GROUPE D’UN
FICHIER/RÉPERTOIRE
7 . GESTION DES DROITS D’ACCÈS
8 . GESTION DE L’ENVIRONNEMENT D’UN UTILISATEUR
Gestion des utilisateurs et des
groupes
2
Notion d’utilisateurs (Users)
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.
3
Notion d’utilisateurs (Users)
En dehors des comptes personnels, il existe des
utilisateurs qui ne sont pas forcément des
personnes physiques.
C'est le cas :
Du compte root utilisé par l'administrateur pour
l’administration du système.
des comptes en général destinés à des démons qui
doivent avoir accès à certains fichiers sous une
identification spécifique (apache, postfix,etc).
4
Notion d’utilisateurs (Users)
Bien que chaque utilisateur possède un identifiant le
système les reconnaisse à travers un UID (User
Identifier). La valeur que prend l’UID dépend de la
catégorie de l’utilisateur.
Si :
L’UID=0 alors l’utilisateur est un administrateur
qui possède tous les privilèges
L’UID est entre [1..499] l’utilisateur est un
utilisateur spécial (démon)
L’UID >= 500 l’utilisateur est un utilisateur
physique
5
Notion d’utilisateurs (Users)
Chaque utilisateur possède aussi un GID (Group
Identifier ).
Le GID représente le numéro du initial de
l’utilisateur.
Le GID attribué par le système est égal à l’UID (par
défaut).
L’utilisateur peut être aussi membre d’autres groupes
système.
6
Les fichiers systèmes pour la gestion des
utilisateurs
Les fichiers importants que le système consulte pour la
gestion des utilisateurs sont :
le fichier /etc/passwd
le fichier /etc/shadow
le fichier /etc/group
7
Le fichier système /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:
login:password:UID:GID:commentaire:répertoire_
personnel: programme_de_démarrage
8
Le fichier système /etc/passwd
Chaque ligne contient sept champs séparés par le
caractère « : »
Login: le nom du compte de l'utilisateur
Password : le mot de passe de l'utilisateur (codé
bien sûr). Ce champs n’est plus utilisé (remplacé par
le caractère X).
UID: c’est un entier qui identifie l'utilisateur
pour le système d'exploitation.
GID: c’est un entier qui identifie le groupe de
l'utilisateur
9
Le fichier système /etc/passwd
Commentaire: ce champ peut inclure des
informations sur l'utilisateur ou simplement son
nom réel
répertoire personnel: qui est celui dans lequel il
se trouve après s'être connecté au système
Programme de démarrage: ce programme est
exécutée après connexion au système (c'est
fréquemment un interpréteur de commandes: bash,
sh,etc.)
10
Le fichier système /etc/passwd
Exemple du fichier /etc/passwd:
root:x:0:0:root:/root:/bin/bash
Apache:x:43:43:ServeurWeb:/var/www:/sbin/nolgin
Postfix:x:73:73::/var/spool/postfix:/sbin/nologin
Joe:x:500:500:Joe Smith:/home/joe:/bin/bash
Alex:x:501:501::/home/alex:/bin/sh
11
Le fichier système /etc/group
Ce fichier contient la liste des groupes systèmes ainsi
que leurs membres. Le format d’une ligne est le
suivant:
Nom_du_groupe:x:GID :membre1, membre2…
Exemple:
root:x:0:root
Bin:x:1:root,bin,daemon
Apache:x:43:
Joe:x:500:
Alex:x:501:
Developper:x:1000:Alex,Joe
12
Le fichier système /etc/shadow
Le fichier /etc/shadow contient les informations suivantes:
username:passwd:last:may:must:warn:expire:
disable:reserved
En détail:
Username Le Nom de l'Utilisateur
Passwd Le mot de passe encodé
Last Date de la dernière modification (en nombre de jours
depuis le 1er janvier 1970).
May Nombre de jours avant que le mot de passe puisse être
modifié
Must Nombre de jours avant que le mot de passe doive être
modifié
13
Le fichier système /etc/shadow
Expire Nombre de jours entre l'expiration du mot de passe
et la fermeture du compte.
Disable Date de la fermeture du compte (en nombre de
jours depuis le 1er janvier 1970).
Reserved Champ réservé
Exemple :
alex:Npge08pfz4wuk:9479:0:10000::::
14
Gestion des utilisateurs
Cette étape consiste à gérer les opérations suivantes:
Ajout d’un nouvel utilisateur
Modification d’un paramètre d’un utilisateur
Suppression d’un utilisateur
Modification des paramètres d’expiration du mot de passe
15
Ajout d’un nouvel utilisateur
La commande de base qui permet d’ajouter une nouvel utilisateur est:
#useradd login
#passwd login
Cette commande va apporter une ensembles de changements:Ajout d’une
nouvelle ligne dans le fichier /etc/passwd
1. Ajout d’une ligne dans le fichier /etc/group
2. Copie du répertoire /etc/skel dans un répertoire sous /home qui porte
le nom du nouvel utilisateur
3. Rendre le propriétaire et le groupe de ce répertoire l’utilisateur en
question
4. Ajout d’une nouvelle ligne dans le fichier /etc/shadow
Exemple:
#useradd alex
#passwd alex
16
Suppression d’un utilisateur
La commande de base qui permet de supprimer un utilisateur
est:
#userdel login
Cette commande va supprimer toutes les entrées
correspondantes à l’utilisateur dans les fichier s :
/etc/passwd, /etc/group et /etc/shadow
Pour supprimer le répertoire de l’utilisateur il faut ajouter
l’option « -r »
#userdel -r login
Exemple:
#userdel -r alex
17
Modification des paramètres d’un utilisateur
La commande de base qui permet de modifier les paramètres
d’un utilisateur déjà exisitant est:
#usermod options login
Les options sont les suivantes:
-l nom_connexion Le nom de l'utilisateur passera de login à
login_name. Rien d'autre n'est modifié. En particulier, le
répertoire personnel de l'utilisateur devra probablement
être changé pour refléter le nouveau nom de connexion.
-u uid La valeur numérique de l'ID de l'utilisateur.
18
Modification des paramètres d’un utilisateur
-g groupe_initial Le nom du groupe ou le numéro du groupe
de connexion initial de l'utilisateur. Le nom du groupe doit
exister.
-G groupe,[...] Une liste de groupes supplémentaires
auxquels fait également partie l'utilisateur. Chaque groupe
est séparé du suivant par une virgule, sans espace entre les
deux.
-c commentaire La nouvelle valeur du champ de
commentaire du fichier /etc/passwd .
-d rép_perso Le nouveau répertoire de connexion de
l'utilisateur
19
Modification des paramètres d’un utilisateur
-s shell Le nom du nouveau shell de connexion de
l'utilisateur. Si shell n'est pas fourni, le système
sélectionnera le shell de connexion par défaut.
-L Verrouiller le mot de passe d'un utilisateur. Cette option
ajoute un `!' devant le mot de passe crypté, ce qui désactive
le mot de passe.
-U Déverrouiller le mot de passe d'un utilisateur. Cela
supprime le `!' situé devant le mot de passe crypté.
-e date_expiration La date à laquelle le compte utilisateur
sera désactivé. La date est spécifiée dans le format AAAA-
MM-JJ.
20
Modification des paramètres d’un utilisateur
Exemple:
#usermod – G devlelopper,web alex
#usermod -s /sbin/nologin usermail
#usermod -s /bin/sh joe
#usermod -L alex
#usermod -U alex
21
Changement des paramètres du mot de passe
La commande chage permet de modifier les informations de
validité d'un mot de passe. Ces informations seront
sauvegardées au niveau du fichier /etc/shadow.
Syntaxe:
#chage options login
Parmi les options:
-m nbre de jours : nombre de jours minimum entre deux
modifications de mot de passe
-M nbre de jours : nombre de jours maximum entre deux
modifications de mot de passe
-E date : la date d’expiration du mot de passe
-l : affiche tous les paramètres du mot de passe
22
Changement des paramètres du mot de passe
Exemple:
#chage -m 20 alex
#chage -M 45 alex
# chage -E 2011-31-12 alex
23
Gestion des groupes
Un groupe est un ensemble d'utilisateurs qui partagent les
mêmes fichiers et répertoires.
Chaque utilisateur doit faire partie au moins d'un groupe,
son groupe primaire. Celui-ci est défini au moment de la
création du compte, et par défaut, 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.
24
Gestion des groupes
Ajout d’un nouveau groupe:
#groupadd nomdugroup
Exemple:
#groupadd developper
Modification des paramètres d’un groupe:
#groupmod option nomdugroup
Exemple:
#groupmod –n developper2 developper
Suppression d’un groupe:
#groupdel nomdugroupe
Exemple:
#groupdel developper
25
Commandes de gestion du compte
Id: Affiche des informations sur l'identité d'un utilisateur.
Groups: Affiche des groupes auxquels appartient un
utilisateur.
Whoami : affiche le login de l’utilisateur
Who : affiche la liste des utilisateur connectés
Last : affiche l’historique des connexions.
26
Notion de propriétaire et groupe d’un
fichier/répertoire
Quand un fichier ou un répertoire est créé, il appartient
forcément à un utilisateur (réel ou système). Cet utilisateur
sera le « propriétaire » du fichier.
La possession d’un fichier est caractérisée sur 3 niveaux :
Le 1er niveau : Propriétaire du fichier ; souvent, il s’agit du créateur du
fichier. Caractérisé par la lettre « u » (user, comme utilisateur).
Le 2nd niveau : Groupe Propriétaire du fichier ; il est possible pour un
utilisateur membre du groupe propriétaire du fichier d’avoir des
permissions exclusives. Caractérisé par la lettre « g » (group, comme
groupe).
Le 3ème niveau : les Autres ; tout utilisateur qui n’est ni
propriétaire, ni membre du groupe propriétaire fera partie des «
Autres ». Caractérisé par la lettre « o » (other, comme autre).
27
Notion de propriétaire et groupe d’un
fichier/répertoire
Pour changer le propriétaire d’un fichier/répertoire l’administrateur ou
le propriétaire utilise la commande suivante:
#chown nouveauproprietaire fichier/répertoire
Exemple:
#chown alex script.sh
Pour changer le groupe d’un fichier/répertoire l’administrateur ou le
propriétaire utilise la commande suivante:
#chgrp nouveauproprietaire fichier/répertoire
Exemple:
#chgrp developper script.sh
Remarque:
#chown alex.developper script.sh
28
Notion de permission d’accès d’un fichier ou
répertoire
Pour chaque identité (propriétaire, groupe et autres), il existe 3 droits
d'accès :
r - read : fournit le droit de lecture sur le fichier ou répertoire. Ce droit
possède la valeur 4.
w - write : fournit le droit d'écriture sur le fichier ou répertoire. Ce droit
possède la valeur 2.
x - execute : fournit le droit d'exécution. Ce droit possède la valeur 1.
La commande ls -l nous permet d'afficher les droits d'un fichier sous
Linux.
29
Notion de permission d’accès d’un fichier ou
répertoire
L'affichage des droits est représenté par une chaîne de 9 caractères,
précédée d'un caractère, représentant le type de l’entrée.
Ces 9 caractères, regroupés 3 par 3 (rwx rwx rwx), définissent les droits
des 3 identités (propriétaire, groupe et les autres).
Pour chaque droit existant on voit une lettre parmi r,w ou x . Si un droit
n'existe pas on utilise le tiret.
Exemple:
-rwxr-xr-x 1 root admi 872 2010-07-28 22:44 /usr/bin/crontab
drwxr-xr-x 1 alex commercial 26872 2011-08-30 08:12 /tmp/doc
30
Notion de permission d’accès d’un fichier ou
répertoire
La commande chmod (CHangeMODe) permet de définir et de changer
les droits d'accès d'un fichier ou un ensemble de fichiers.
Il y a deux modes d'utilisation de la commande chmod : de façon littérale
ou de façon numérique.
La façon littérale
Il s'agit de l'utilisation des lettres déjà citées u, g et o pour l’identité de
l’utilisateur d’un côté ainsi que r, w et x pour spécifier les droits voulus.
On utilisera une notation pour attribuer et/ou retirer des droits. + (plus)
pour attribuer et - (moins) pour retirer .
Exemple:
#chmod u+x script.sh
#chmod go-w script.sh
31
Notion de permission d’accès d’un fichier ou
répertoire
La façon numérique
On sommera triplet par triplet les valeurs des droits qu’on désir activer.
On passera la valeur (sur 3 chiffres) des droits d’accès finaux à la
commande chmod.
Exemple:
#chmod 751 script.sh
#chmod 711 /tmp/doc/
32
Droits d’accès par défaut
La commande umask permet de définir les droits par défaut d'un fichier
ou répertoire à sa création.
Autrement dit elle indique les droits qu'il faut retirer lors de leur création.
La commande umask, à l'instar de la commande chmod (façon
numérique) prend en argument 3 chiffres, qui cette fois représentent
les droits que nous ne voulons pas accorder.
Ces droits seront retirés du droit d’accès maximum 666 pour le cas des
fichiers et 777 pour la cas des répertoires
$ umask 022 (modifier la valeur de l’umask)
$umask (afficher la valeur de l’umask)
33
Notion d’inode
Les inodes sont des structures de données contenant des informations
concernant les fichiers stockés dans certains systèmes de fichiers
(notamment de type Linux/Unix).
À chaque fichier correspond un numéro d'inode (i-number) dans le
système de fichiers dans lequel il réside, unique au périphérique sur
lequel il est situé.
Les inodes peuvent, selon le système de fichiers, contenir des
informations concernant le fichier, tel que son propriétaire, son groupe,
son type d'accès,etc.
Pour visualiser le contenu de l’inode d’un fichier, on peut utiliser la
commande:
$stat nomduficher
Exemple:
$stat script.sh
34
Notion d’inode
L’inode d’un fichier contient les attributs suivants :
La taille du fichier en octets
Identifiant du périphérique contenant le fichier
L'identifiant du propriétaire du fichier (UID)
L'identifiant du groupe auquel appartient le fichier (GID)
Le numéro d'inode qui identifie le fichier dans le système de
fichier
Le mode du fichier qui détermine quel utilisateur peut lire,
écrire et exécuter ce fichier
35
Notion d’inode
horodatage (timestamp) pour :
La date de dernière modification ctime de l'inode (affichée par la
commande stat ou par ls -lc, modification des droits du fichier)
La date de dernière modification du fichier mtime (affichée par le
classique ls -l)
La date de dernier accès atime (affichée par la commande stat ou
par ls -lu)
Un compteur indiquant le nombre de liens physiques sur cet
inode. (Nlinks)
36
Gestion de l’environnement d’un utilisateur
Lorsqu’un utilisateur se voit attribué un SHELL au moment
de sa connexion, ce SHELL lui offrira les fonctions
suivantes:
1. Un interpréteur de commande
2. La gestion de l’environnement qui inclut:
1. La gestion des variables d’environnement
2. La gestion des alias
3. Un langage de programmation
37
Gestion de l’environnement d’un utilisateur
Les variables d’environnement
Pour visualiser ses variables d’environnement chaque utilisateur
peut utiliser la commande:
$env
$set
Chaque variable possède un nom (en majuscule) et une valeur.
Pour afficher le contenu d’une variable on utilise la commande:
$echo $NOMVAR
Pour modifier le contenu d’une variable:
$NOMVAR=valeur
38
Gestion de l’environnement d’un utilisateur
Exemples:
1. Affichage du contenu de quelque variables d’environnement:
echo $HOME
/home/alex
echo $HITSFILE
.bash_history
echo $HISTFILESIZE
1000
echo $PATH
/bin:/usr/local/bin:/home/alex/bin
2. Pour modifier la variable PATH en lui ajoutant le répertoire
/home/alex/scripts
PATH=$PATH:/HOME/alex/scripts
39
Gestion de l’environnement d’un utilisateur
Pour rendre permanent la déclaration d’une nouvelle variable ou le
changement de la valeur d’une variable déjà existante on doit l’exporter
au niveau du fichier $HOME/.bash_profile comme suit:
$vi .bash_profile
export X=100
export PATH=$PATH:/HOME/alex/scripts
Le fichier .bash_profile est lu au moment de la connexion de l’utilisateur
et après son authentification.
40
Gestion de l’environnement d’un utilisateur
Notion d’alias sur les commandes
La commande alias permet à un utilisateur de créer des alias sur les
commandes système.
La syntaxe est la suivante:
$alias nomalias= ‘commande’
Exemple:
$alias cls=‘clear’
$alias dir=‘ls –lRa’
$alias (affiche la liste des alias)
Pour désactiver un alias:
$unalias nomalias
Exemple:
$unalias dir
41
Gestion de l’environnement d’un utilisateur
Pour rendre permanant la déclaration d’un alias l’utilisateur doit le
déclarer dans son fichier $HOME/.bashrc
Exemple:
$vi .bashrc
alias cls=‘clear’
alias dir=‘ls -lRa’
42