Vous êtes sur la page 1sur 25

Plan 1/25

1. Introduction à l’administration des systèmes


L’administrateur systèmes 2/25

Son rôle : gérer un parc de machines (PCs + matériel réseau)


I gestion des comptes des utilisateurs
I installation/mise à jour des logiciels
I sauvegarde des données
I support technique
I planification : mise en place de procédures automatiques
I mise en place de services pour les utilisateurs : NFS, DHCP, . . .
I identification/correction des problèmes de sécurité
I identification/correction des problèmes de performance
...
Plan 3/25

1. Introduction à l’administration des systèmes


1.1 Gestion des utilisateurs
1.2 Tâches planifiées
Notions de groupes et d’utilisateurs 4/25

I Unix est un système multi-utilisateurs.


I Un utilisateur a
I un login/nom utilisé pour se connecter au système
I un mot de passe
I un identifiant (l’UID)
I Des groupes d’utilisateurs peuvent être créés par l’administrateur.
I Un groupe a :
I un nom
I un mot de passe (utilisé pour modifier les caractéristiques du groupe)
I un identifiant (le GID)
I Un utilisateur a un groupe principal et peut appartenir à plusieurs groupes
secondaires.
I Un utilisateur a tous les droits attribués au(x) groupe(s) auxquel(s) il
appartient.
I Un fichier appartient à un utilisateur et à un groupe.
Afficher les droits et les propriétaires : ls -l 5/25

Exemple : afficher les droits sur le fichier exec

$ ls -l exec
-rwxr-x--x 1 max users 54678 24 sept. 09:08 exec

I max = utilisateur propriétaire du fichier exec


I users = groupe propriétaire du fichier exec
I rwx = droits de l’utilisateur propriétaire
I lecture (r) + écriture (w) + exécution (x)
I r-x = droits des membres du groupe propriétaire
I lecture (r) + exécution (x)
I --x = droits des autres utilisateurs
I exécution (x)
I En représentation octale (base 8) les droits du fichier sont codés 751.
I 7= r + w + x
|{z} |{z} |{z}
4 2 1
I 5=r +x
I 1=x
Le fichier des utilisateurs : /etc/passwd 6/25

I Il contient la liste des utilisateurs (une ligne / utilisateur).


I consultable par tous / modifiable uniquement par root
I Structure des lignes :
Uname:x:UID:GID:commentaire:home:shell
I Uname = login de l’utilisateur
I x = mot de passe stocké dans /etc/shadow
I UID = identifiant de l’utilisateur
I GID = identifiant du groupe principal de l’utilisateur
I commentaire = généralement, le nom complet de l’utilisateur
I home = répertoire de connexion de l’utilisateur
I shell = shell (interpréteur de commandes) de l’utilisateur
Exemple :
root : x :0:0: root :/ root :/ usr / bin / bash
max : x :1000:1000: Max le terrible :/ home / max :/ usr / bin / bash
L’utilisateur root 7/25

I Sur tous les systèmes Linux il y a toujours un utilisateur root.


I root = administrateur du système
I root a toujours le UID 0.
I Les règles de lecture/écriture ne s’appliquent pas à root :
root a toujours les droits rw sur tous les fichiers/répertoires.
Le fichier des mots de passe : /etc/shadow 8/25

I Il contient les mots de passes cryptés des utilisateurs (une ligne /


utilisateur) et leur validité dans le temps.
I consultable uniquement par root
I Structure des lignes :
Uname:passwd:C3:C4:C5:C6:C7:C8:C9
I Uname = login de l’utilisateur
I passwd = mot de passe. 2 possibilités :
1. * ou ! si le compte est désactivé (impossible de se connecter)
2. chaı̂ne sous la forme $... : mot de passe crypté
I C3, . . . , C8 = sert à contrôler la validité du mot de passe dans le temps
I C9 = inutilisé, réservé à un usage futur

Exemple :
root : $ 6 $ 1 6 y G 8 o Q I X D W 3 D l l 0 $ X p C q l x m :1 5 8 04 : 0:9 9 9 99 : 7 :: :
sshd :!:15714::::::
max : $6 $ x6o G E I i v $ 2 8 S r L 2 d 4 : 15 8 2 1: 0 : 99 9 9 9: 7: ::
Chiffrement des mots de passe 9/25

I Le système ne stocke jamais de mots de passe en clair.


I Quand un utilisateur modifie son mot de passe, le système :
1. chiffre ce mot de passe en utilisant un algorithme de chiffrement (SHA,
MD5, . . . )
2. stocke le mot de passe chiffré dans /etc/shadow
I Quand un utilisateur saisit son mot de passe pour se connecter, le
système :
1. chiffre ce mot de passe
2. et compare le mot de passe chiffré à celui qui est dans /etc/shadow
I L’opération de chiffrement est irréversible : impossible de retrouver le mot
de passe en clair à partir de la version chiffrée.
⇒ Même si un pirate a accès au fichier il ne peut pas retrouver le mot de
passe.
Droits des processus 10/25

I Les processus peuvent accéder aux systèmes de fichiers et modifier le


contenu des fichiers.
⇒ Les processus ont également des droits d’accès aux fichiers.
I Par défaut, les droits d’un processus sont ceux de l’utilisateur ayant lancé
le processus.

Problème
I passwd permet de modifier le mot de passe d’un utilisateur.
I Tous les utilisateurs peuvent exécuter cette commande.
I Or, cette commande modifie les fichiers /etc/passwd et /etc/shadow
possédés par root.
⇒ impossible en théorie car lorsque la commande est exécutée par l’utilisateur
machin, un processus est lancé avec les droits de machin qui n’a pas les
droits pour modifier /etc/passwd et /etc/shadow.
Les bits SUID et SGID 11/25

Solution : le bit SUID, u+s


I SUID = Set User ID
I Si le bit SUID est positionné à 1 sur un fichier exécutable alors le processus
créé lors du lancement de l’exécutable a les droits du propriétaire du fichier
I Exemple : le bit SUID de /usr/bin/passwd est positionné à 1 ⇒ tout
processus créé par l’exécution de passwd a les droits de root (et peut
modifier /etc/passwd et /etc/shadow).

Le bit SGID, g+s


I SGID = Set Group ID
I bit SGID : même fonctionnement que le bit SUID mais pour les groupes. Le
processus créé a tous les droits du groupe propriétaire du fichier exécutable.
Le bit de collage 12/25

Initialement ce bit a été introduit pour assurer le maintien de l’exécutable en


mémoire même lorsqu’aucune exécution n’est en cours. . .

Bit de collage (sticky bit, +t)


Si le sticky bit est positionné à 1 sur un répertoire avec le droit exécutable,
alors tous les utilisateurs peuvent utiliser ce répertoire, mais ils ont accès
exclusivement à leurs fichiers.

I Exemple : le répertoire /tmp a le sticky bit positionné.


Le fichier des groupes : /etc/group 13/25

I Il contient la liste des groupes (une ligne / groupe).


I consultable par tous, modifiable uniquement par root
I Structure des lignes :
Gname:x:GID:liste-Unames
I Gname = nom du groupe
I x = mot de passe stocké dans /etc/gshadow
I GID = identifiant du groupe
I liste-Unames = noms des utilisateurs du groupe (dont ce n’est pas le
groupe principal) séparés par une virgule
Exemple :
root : x :0:
bin : x :1: root , toto
daemon : x :2: ivan
max : x :500:

root et toto sont dans le groupe bin. ivan est dans le groupe max
Commandes de gestion des groupes/utilisateurs 14/25

groupadd créer un groupe


groupmod modifier un groupe
groupdel supprimer un groupe
useradd créer un utilisateur
usermod modifier un utilisateur
userdel supprimer un utilisateur
id afficher les informations sur un utilisateur
passwd modifier le mot de passe d’un utilisateur
chsh modifier le shell d’un utilisateur
newgrp modifier le groupe principal d’un utilisateur
su se connecter sous une autre identité
pwck vérifier la cohérence des fichiers de configuration des
utilisateurs (/etc/passwd, /etc/group, . . . )
La plupart de ces commandes nécessite d’être identifié en tant que root.
Utilisateurs système 15/25

I Un processus est associé à un utilisateur et a tous les droits de cet


utilisateur.
I C’est aussi le cas des services.
I Les services sont exposés à des tentatives d’intrusion.
I En cas de faille de sécurité, un pirate peut par exemple prendre le contrôle
du service.
⇒ Si le service est associé à root, le pirate peut faire ce qu’il veut sur la
machine . . .
I Pour éviter ce problème, on utilise un utilisateur système.
I Ce n’est pas un utilisateur réél (humain) :
I impossible de se connecter sous cette identité
I pas de répertoire personnel
I Cet utilisateur système sert uniquement à lancer le service.
I Il a des droits restreints sur le système.
Plan 16/25

1. Introduction à l’administration des systèmes


1.1 Gestion des utilisateurs
1.2 Tâches planifiées
Tâches périodiques avec cron 17/25

I Certaines tâches doivent être effectuées périodiquement


mais ne nécessitent pas d’intervention humaine.
⇒ Un programme peut se charger du lancement de ces tâches.
I Avantages :
1. Gain de temps.
2. Pas de possibilité d’oubli/erreur humaine.
I Exemples typiques :
I Supprimer les fichiers temporaires toutes les heures pour faire de l’espace sur
le disque.
I Sauvegarder des données tous les jours.
Principe de cron 18/25

I cron est un programme qui lance périodiquement des tâches.


I Le nom cron vient du dieu grec Chronos, dieu du temps.
I Ce programme est lancé par le service crond.
I Une fois une tâche planifiée, l’utilisateur n’a plus à intervenir.
I Le service se charge de les lancer au bon moment.
I Les tâches à lancer sont décrites dans une table appelée crontab.
I Chaque utilisateur a sa propre table.
Fonctionnement du service crond 19/25

I Le système réveille le service crond toutes les minutes (la fréquence la plus
élevée de lancement des tâches planifiées).
I Une fois réveillé, il
1. consulte le répertoire /var/spool/cron qui contient, pour chaque
utilisateur les dernières tâches qu’il a saisies
2. mémorise ces tâches
3. lance les tâches mémorisées et qui doivent être lancées à cet instant
4. envoie un mail au propriétaire de la tâche concerné contenant le résultat
5. puis il se rendort.
La table des tâches 20/25

I Chaque utilisateur a une table appelée crontab contenant des règles


décrivant une tâche planifiée :
1. la fréquence de lancement
2. la commande lancée à la fréquence précisée
I Chaque règle contient 6 champs :
Quand ? Quoi ?
jour jour de la
minute heure mois
du mois semaine commande
Valeurs à exécuter
0 à 59 0 à 23 1 à 31 1 à 12 1 à 7
possibles
I Meta-caractères pour exprimer la fréquence :
I * ⇒ toutes les minutes (ou heures, ou jours, . . . )
I */N ⇒ tous les N minutes (ou heures, ou jours, . . . )
I X-Y ⇒ X à Y
I X,Y ⇒ X et Y
Exemples d’enregistrements 21/25

# supprimer l e s f i c h i e r s temporaires
# toutes les 4 heures
0 */4 * * * rm - rf / tmp /*

# a f f i c h e r ” Bonne ann é e ” t o u s l e s p r e m i e r s de l ’ an
0 0 1 1 * echo " Bonne ann é e "

# a f f i c h e r ” Bon week−e n d ” l e v e n d r e d i à 17 h .
# ( s e u l e m e n t de S e p t e m b r e à J u i n )
0 17 * 1 -6 ,9 -12 5 echo " Bon week - end "
La commande crontab 22/25

I crontab permet de voir/modifier la table de l’utilisateur qui l’exécute.


I Syntaxe :
crontab [ options ] action
I actions possibles :
I -e (édition) — ouvre l’éditeur de texte par défaut. L’utilisateur saisit ses
règles qui sont ensuite sauvegardées dans /var/spool/cron.
I -l (list) — affiche les règles de la table
I -r (remove) — suppression de la table
I option courantes :
I -u util — applique l’action pour l’utilisateur util.
I Permet, par exemple, de modifier les règles d’un autre utilisateur.
I Option utilisable par root uniquement.
Tâches à occurence unique avec at 23/25

I cron est utile pour définir des tâches exécutées périodiquement


I mais pas pour des tâches à occurence unique
I (des tâches effectuées une seule fois)
I On utilise pour cela at.
I at permet d’exécuter
I à un instant t
I une tâche donnée sous la forme de commandes.
La commande at 24/25

Syntaxe :

at [ options ] [temps]
Déroulement :
1. at rend la main à l’utilisateur qui peut saisir les commandes à exécuter.
2. Une fois la saisie terminée l’utilisateur presse Ctrl+D (fin de fichier).
3. at attribue un numéro à la tâche créé.
4. Au temps spécifié, at exécute les commandes écrites par l’utilisateur.

Spécification du temps
I absolu — Exemples : ”12 :00”, ”10 :00 2011-24-06”
I relative — Exemples : ”now + 10 minutes”, ”midnight - 15 minutes”
⇒ syntaxe complexe, penser à consulter le manuel
Utilisation de at — Exemple 25/25

$ # r e b o o t d e l ’ o r d i n a t e u r d a n s 10 m i n u t e s
$ at " now + 10 minutes "
at > reboot < EOT >
job 18 at Wed Jun 22 15:13:00 2011

$ # l a n c e m e n t du programme s a u v e g a r d e de mon
$ # r é p e r t o i r e b i n à m i n u i t
$ at -f ~/ bin / sauvegarde " midnight "
job 19 at Thu Jun 23 00:00:00 2011

$ # a n n u l a t i o n du r e b o o t
$ at -d 18

Remarque. EOT est affiché lorsque l’utilisateur presse Ctrl+D.