Administration & Sécurité des Systèmes d’Exploitation Par : Samir CHERIF cherif.samir@gmail.com
Administration & Sécurité des Systèmes d’Exploitation Chapitre 4 Gestion de Disques Par : Samir CHERIF cherif.samir@gmail.com
Plan de partitionnement Objectifs : Concevoir le plan de partitionnement des disques d'un système Linux. L'allocation de systèmes de fichiers ou d'espaces de swap. L'adaptation de ce plan aux besoins auxquels le système devra répondre.
Plan de partitionnement Partitions / et swap : Lorsque l'on fait une installation, il est nécessaire de créer au minimum deux partitions : / (système de fichiers racine): partition contenant la distribution Linux. Espace de swap : partition permettant au noyau de faire tourner plus de processus que la RAM seule ne pourrait en supporter.
Plan de partitionnement Partitions Swap : La partition de swap n'a pas besoin d'un système de fichiers. Le noyau pourra y accéder en mode brut (raw mode). Cela permet d'éviter les surcoûts dus aux appels systèmes nécessaires à l'utilisation d'un système de fichiers.
Problèmes de vitesse des disques. Usage : Avant de décider votre plan de partitionnement, vous devez connaitre les types d'applications qui tourneront sur votre système. Serveur de mails Serveur Web Applications graphiques s'appuyant sur X-Window et plus encore
Problèmes de vitesse des disques. Usage : Si votre système possède plusieurs disques, utilisez le plus rapide pour conserver la majorité de vos données. / Contient la plupart des utilitaires systèmes qui ne sont pas souvent utilisés. le disque le plus lent. /var/log contient beaucoup d'informations de log. Le disque le plus rapide. /usr : La prévision d'utiliser de nombreux clients démarrant de nombreuses applications graphiques pousse souvent à mettre cette partition sur un disque rapide.
Problèmes de vitesse des disques. Exemple d'applications systèmes: Pour distribuer les e-mails, Sendmail écrits dans deux queues de mail. Généralement /var/spool/mqueue et /var/spool/mail ainsi qu'à d'autres endroits. Apache utilise différents fichiers, deux fichiers de logs pour enregistrer et accéder aux pages actuelles. Apache passe un temps non négligeable à écrire dans ces fichiers de logs.
Gestionnaire d'amorçage (boot manager) Objectif : Sélectionner, installer et configurer un gestionnaire d'amorçage.
Gestionnaire d'amorçage (boot manager) Amorçage de Linux:
Gestionnaire d'amorçage (boot manager) Amorçage de Linux: Quand un système démarre, ou est redémarré, le processeur exécute du code à une adresse fixe. Cette adresse fixe est celle du BIOS (Basic Input/Output System), qui est stocké dans une ROM sur les cartes mères. Le BIOS doit déterminer quels périphériques sont candidats pour démarrer dessus. Quand un périphérique sur lequel on peut démarrer est trouvé, le premier programme du processus de démarrage est chargé en RAM puis exécuté. Ce chargeur de démarrage fait au plus 512 octets (un secteur) et son rôle est de charger le deuxième programme.
Gestionnaire d'amorçage (boot manager) Amorçage de Linux: Quand le deuxième programme (le chargeur d'amorçage) est chargé en RAM et exécuté, un splash-screen est souvent affiché et le noyau linux ainsi que l'optionnel initrd (initial RAM disk: le système de fichier principal temporaire) sont chargés en mémoire. Après que les images ont été chargées, le deuxième programme passe la main à l'image du noyau et le noyau est alors décompressé. À ce stade, le deuxième programme vérifie aussi le matériel, énumère les périphériques attachés, monte le périphérique principal et charge les modules du noyau nécessaires. Quand tout cela est fini, le premier programme de l'espace utilisateur (init) démarre. C'est ainsi que se déroule le démarrage d'un système linux.
Gestionnaire d'amorçage (boot manager) Les Familles chargeurs: Microsoft : NTLDR (Windows NT) WINLOAD (Vista) Open source : GRUB (GRand Unified Bootloader) LILO (Linux loader) IsoLinux de Syslinux pour booter à partir d'un DVD ISO 9660 PXELinux de Syslinux pour booter à partir d'une carte réseau Apple : Boot Camp
Gestionnaire d'amorçage (boot manager) Exemple d’interface du GRUB
Gestionnaire d'amorçage (boot manager) Caractéristiques du boot manager: Un gestionnaire d'amorçage permet de sélectionner l'image à partir de laquelle on désire démarrer. On peut éventuellement lui passer des paramètres, de manière prédéfinie ou interactivement. Pour Linux, il s'agit de déterminer le noyau sur lequel on veut démarrer et de lui passer des paramètres (comme la partition à utiliser comme racine).
Gestionnaire d'amorçage (boot manager) Cohabitation des boot manager: De nombreux systèmes d'exploitations installe leur propre gestionnaire de démarrage sans se préoccuper de l'existence d’autre gestionnaire. Ainsi, si on veut faire cohabiter linux avec d'autres systèmes, il est plus sûr de l'installer en dernier. GRUB est le gestionnaire par défaut de nombreuses distributions linux actuelles.
Gestionnaire d'amorçage (boot manager) GRUB vs LILO: Les deux sont utilisés pour charger une image d'un disque vers la RAM. GRUB possède les avantages suivants sur LILO: Plus de commandes pré-OS. Peut charger des images placées au-dela de la limitation BIOS du cylindre 1024. Peut accéder à son fichier de configuration via le système de fichiers.
Gestionnaire d'amorçage (boot manager) GRUB vs LILO: Si vous utilisez LILO, à chaque fois que vous ajoutez une nouvelle image ou que vous changez une image, un nouveau LILO doit être installé sur le MBR. LILO conserve ses informations de démarrage dans le MBR. GRUB conserve ses informations de démarrage dans le filesystem (menu.lst). LILO possède aussi un fichier de configuration: /etc/lilo.conf.
Gestionnaire d'amorçage (boot manager) Installer un boot manager: Pour installer GRUB sur le MBR, utilisez grub. Cette commande va écraser le MBR. Pour installer LILO sur le MBR, utilisez lilo. Lilo va utiliser le fichier /etc/lilo.conf pour savoir quoi écrire sur le MBR.
Gestionnaire d'amorçage (boot manager) Exemple de contenu de /boot/grub/menu.lst : # GRUB default values timeout 10 # Démarer le noyau par défaut apres 10 secondes. default 0 # Noyau par défaut. # Grub for Linux section 0 title GNU/Linux # Titre root (hd0,1) # /dev/hda2 système de fichiers racine # Noyau et paramètres à passer au noyau. kernel /boot/vmlinuz root=/dev/hda2 read-only initrd /boot/initrd boot # Grub for DOS/Windows section title Windows root (hd0,2) # /dev/hda3 makeactive # Positionnez le drapeau active de la partition chainloader+1 # Chargez le gestionnaire d'amorçage
Gestionnaire d'amorçage (boot manager) Convention de nommage La syntaxe des périphériques utilisée dans GRUB est un tout petit peu différente de ce que vous avez pu voir. Exemple : (hd0,1) Tout d'abord, GRUB exige que les noms de périphériques se trouvent entre ( et ). hd signifie qu'il s'agit d'un disque dur. Le premier nombre 0 indique le numéro du disque, qui est ici le premier disque, alors que le second entier 1 indique le numéro de la partition Notez que les numéros de partitions sont déterminés à partir de zéro, et non depuis un.
Gestionnaire d'amorçage (boot manager) Convention de nommage (hd0,4) Ceci désigne le premier lecteur logique du premier disque dur. Notez que les numéros des lecteurs logiques sont comptés à partir de 4. Remarquez que GRUB ne distingue pas l'IDE du SCSI, il compte simplement les disques depuis zéro, sans faire attention à leur type. (hd0,0)/vmlinuz Cette ligne désigne le fichier nommé vmlinuz qui se trouve sur la première partition du premier disque dur.
Gestionnaire d'amorçage (boot manager) Exemple de contenu de /etc/lilo.conf : # LILO global section boot = /dev/hda # Cible d'installation de LILO : le MBR vga = normal # (normal, extended, ou ask) read-only # Monte le système de fichiers en lecture seule # LILO Linux section image=/boot/vmlinuz # Image à charger label=linux # Nom de l'entrée du menu root=/dev/hda1 # Partition racine pour le noyau initrd=/boot/initrd # disque en RAM # LILO DOS/Windows section other=/dev/hda3 label=windows # LILO memtest section image=/boot/memtest.bin label=memtest86
Gestionnaire d'amorçage (boot manager) Exercice : 1- Quelle est votre gestionnaire d’amorçage ? 2- Changer le titre des systèmes d’exploitations qui apparaissent lors du démarrage de la machine
Administration & Sécurité des Systèmes d’Exploitation Les RunLevel : init Par : Samir CHERIF cherif.samir@gmail.com
Amorçage de Linux
Amorçage de Linux (plus de détails) INITial RamDisk : fichier spécial (disque RAM), initialisé avant de charger le noyau, Il permet de "pré-charger" les modules contenu dans /etc/modules.conf, Run Command : ensemble de scripts de démarrage des services
Les RunLevel Linux Offre plusieurs modes d’exploitation appelés runlevel. A chaque runlevel correspond a un etat dans lequel se trouve le système. Il y’a en tous 7 états possibles. Chaque état est caractérisé par sa propre configuration.
Les RunLevel 0 : provoque un arrêt (shutdown) de la machine 1,s,S : pour rentrer en mode mono-utilisateur, réservé à root 2 : mode multi-utilisateurs, sans réseau, sans graphique 3,4 : mode multi-utilisateurs avec tous les services réseaux, sans graphique 5 : mode multi-utilisateurs, avec réseau, avec graphique 6 : redémarrage de la machine.
Le fichier inittab Le niveau d’exécution par default est positionné dans le fichier /etc/inittab sur la ligne initdefault
La commande init Il est possible de changer le niveau d’exécution d’une machine après son démarrage grâce a la commande init Exemple : # init 6 Cette commande redémarre la machine La commande telinit joue le même rôle que la commande init et utilise la même syntaxe La commande runlevel affiche le runlevel actuelle
Les rc Dans le répertoire /etc se trouve une liste de répertoire commençant par rc. Exemple : Le répertoire rc0.d contient tous les services du runlevel 0 Si le nom du service commence par K (kill) il sera arrêté Si le nom du service commence par S (start) il sera démarré
Chkconfig La commande chkconfig affiche l’état d’un service pour chaque un des runlevel Exemple # Chkconfig –list NetworkManager Affiche l’etat du service NetworkManager pour chaque Runlevel (marche ou arrêt)
Administration & Sécurité des Systèmes d’Exploitation FHS : Filesystem Hierarchy Standard Par : Samir CHERIF cherif.samir@gmail.com
Introduction Objectifs : La disposition des fichiers dans l'arborescence des systèmes Unix n'est pas d'une compréhension évidente de prime abord. Il est cependant indispensable de connaître les règles qui président à la distribution des fichiers et répertoires dans le système des fichiers afin de : - Déterminer un plan de sauvegarde - Gérer la sécurité - Agir efficacement lors de la résolution des problèmes - Installer des logiciels non disponibles sous formes de paquetage
Introduction Objectifs : Un document, le FHS (Filesystem Hierarchy Standard) disponible sur cette page : http://www.pathname.com/fhs/ A pour ambition de proposer la normalisation de l'organisation de système de fichiers pour les systèmes Unix. La plupart des distributions Linux s'y conforme même s'il reste beaucoup de différences dans les détails d'implémentation.
Introduction Sous Unix un fichier est : Un fichier peut être : toujours désigné par un nom. possède un unique inode (certaines informations concernant le fichier). possède les fonctionnalités suivantes : ouverture fermeture. lecture (consultation). écriture (modification) Un fichier peut être : ordinaire (on utilise parfois le terme "normal") (-) un répertoire (d) un lien symbolique (l) un pseudo-fichier : accès caractère par caractère (c) dispositif de communication (p) accès par bloc (b)
Filesystem Hierarchy Standard FHS: La racine de l'arborescence Linux contient ces répertoires : bin programmes utilisateur essentiels (nécessaires au démarrage du système) boot fichiers nécessaires au chargement de Linux (bootloader, initrd, noyau) dev fichiers spéciaux offrant l'accès aux périphériques etc configuration du système et des services home répertoires principaux des utilisateurs lib librairies partagées essentielles (nécessaires au démarrage du système) mnt contient des points de montage temporaires (cdrom, floppy, etc.) proc et sys systèmes de fichiers virtuels permettant d'accéder aux structures internes du noyau (sys est nouveau depuis la version 2.6 de Linux) root répertoire principal de l'utilisateur root sbin exécutables système essentiels (nécessaires au démarrage du système) tmp répertoire pour le stockage de fichiers temporaires usr arborescence contenant la plupart des fichiers des applications var données vivantes du système et des applications
/etc /lib /etc /etc/X11 : fichiers et répertoires de configuration du système et des applications /etc/rc* : configuration du système X11 /etc/pam.d : configuration, par service, des Pluggable Authentication Modules /etc/httpd : fichiers de configuration du serveurWeb Apache /etc/mail : fichiers de configuration du système de messagerie Sendmail /etc/ssh : fichiers de configuration et clés asymétriques d'OpenSSH /lib /lib/modules modules du noyau /lib/security librairies PAM (Pluggable Authentication Modules) /lib/iptables greffons iptables /lib/kbd codages clavier et polices de la console
/usr /usr /usr/bin la plupart des programmes utilisateur /usr/games jeux … /usr/include en-têtes standards pour le développement /usr/lib librairies (.so pour Shared Objects) et autres ressources partagées /usr/libexec binaires exécutables appelés par d'autres programmes /usr/share ressources partagées indépendantes de la plate-forme (pages de manuel, documentation, fichiers de données, etc.) /usr/src sources du système (noyau, paquetages, etc.) /usr
/var /var/tmp fichiers temporaires préservés entre deux démarrages /var/www racine du serveurWeb /var/log journaux du système et des applications /var/spool données en attente d'un traitement /var/spool/mail boîtes aux lettres des utilisateurs /var/spool/cron tâches planifiées par les utilisateurs /var/spool/lpd files pour le système d'impression /var
Les catégories La FHS spécifie deux catégories indépendante de fichiers A données partagées / non partagées A données variables / non variables (statique) Les données partagées peuvent être partagées entre les hôtes Les données non partagées sont spécifique à une hôte donné (comme les fichiers de configuration). Les données variables peuvent être modifiés Les données statiques ne sont pas modifiable (sauf via les fichier de configuration)
Les inodes Les inodes (contraction de « index » et « node », en français : nœud d'index) 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 aussi des informations concernant le fichier, tel que son créateur (ou propriétaire), son type d'accès (par exemple sous Unix : lecture, écriture et exécution), etc.
Les inodes Les inodes contiennent notamment les métadonnées des systèmes de fichiers, et en particulier celles concernant les droits d'accès. Les inodes sont créés lors de la création du système de fichiers. La quantité d'inodes (généralement déterminée lors du formatage et dépendant de la taille de la partition) indique le nombre maximum de fichiers que le système de fichiers peut contenir.
Les inodes Le numéro d'inode est un entier unique pour le périphérique dans lequel il est stocké. Le numéro d'inode d'un fichier toto peut être affiché avec la commande ls -i toto
Les Inodes
La taille du fichier en octets Norme POSIX La taille du fichier en octets L'identifiant du groupe auquel appartient le fichier Le standard POSIX s'est basé sur les systèmes de fichiers traditionnels d'Unix. Cette norme impose donc que les fichiers réguliers aient les attributs suivants : Identifiant du périphérique contenant le fichier Le mode du fichier qui détermine quel utilisateur peut lire, écrire et exécuter ce fichier Un compteur indiquant le nombre de liens physiques sur cet inode. L'identifiant du propriétaire du fichier Le numéro d'inode qui identifie le fichier dans le système de fichier Horodatage
Les Inodes Les Commandes ls –i df -i
Les Inodes La Commande stat
Les Systèmes de fichier Les systèmes de fichiers existent pour vous permettre de stocker, lire et manipuler des données sur un lecteur block. En fait, les systèmes de fichiers sont la seule manière efficace d'accéder au contenu des lecteurs block. Un système de fichiers maintient la structure interne des données (meta-data) qui fait que vos données restent organisées et accessibles. Exemple de lecteur block : Disque dur, DVD, Disquette …
Structure d’un disque dur (A) Piste (B) Secteur géométrique (C) secteur d'une piste (D) cluster (la plus petite unité pour un SE) 1 secteur = 512o. La taille d’un cluster varie en fonction de l’utilisation
La Journalisation Un journal est la partie d'un système de fichiers journalisé qui trace les opérations d'écriture tant qu'elles ne sont pas terminées et cela en vue de garantir l'intégrité des données en cas d'arrêt brutal. L'intérêt est de pouvoir plus facilement et plus rapidement récupérer les données en cas d'arrêt brutal du système d'exploitation (coupure d'alimentation, plantage du système, etc.), alors que les partitions n'ont pas été correctement synchronisées et démontées.
Les Types ext2: Ancien et très stable. Fonctionne pour des fichiers dont la taille est supérieurs à ~2-3K. ext3: Extension pour la journalisation de ext2. Journaliser un système de fichiers revient à ajouter une nouvelle structure de données appelée un journal. reiserfs: Système de fichiers journalisé. Plus performant pour les fichiers de petit taille (internet) XFS: Système de fichiers journalisé; pour optimiser la manipulation des très gros fichiers, de plus de 9 ExaBytes (9'000'000'000 GigaBytes). JFS: Un autre système de fichiers journalisé créé par IBM. FAT32 et NTFS: Le système de fichiers journalisé de MS-Windows.
Les Types
Créer des partitions /systèmes de fichiers Deux utilitaires : fdisk mkfs
Créer des partitions Pourquoi créer différentes partitions ? Comment créer une partition ? Avec la commande fdisk [disque] Exemple : fdisk /dev/hda Options: n : ----> pour ajouter une partition p : ----> pour afficher la table de partitions m : ---->pour afficher le help fdisk est un programme utilisé pour la création et la manipulation de tables de partitions.
Créer des partitions
Créer des partitions
Créer des partitions Pour enregistrer les modification il faut appuyer sur « w » avant de quitter fdisk
Création d’un Systèmes de fichiers Pour créer un système de fichiers sur une partition, il faut utiliser mkfs. mkfs est utilisé pour formater un système de fichiers Linux sur un périphérique, généralement une partition de disque dur. mkfs [options] -t [fstype] lecteur [blocksize] Principales options: -t: fstype: Type de système de fichiers. -c: Contrôle des bad blocks du lecteur avant la construction d'un système de fichiers. mkfs.ext3 /dev/hda1 mkfs -t ext3 /dev/hda1 les 2 commandes sont équivalentes
Création d’un Systèmes de fichiers
Création d’un Systèmes de fichiers étendus Pour créer un système de fichiers étendu (ext2, ext3) sur une partition, il faut utiliser mke2fs. mke2fs [options] device [blocksize] Principales options: -b: Specify the block sizefstype: Type de système de fichiers. -c: Contrôle si le lecteurs contient des blocks défectueux avant de construire le système de fichiers. -j: Crée le système de fichiers avec un journal ext3. -L: Donne un label au système de fichiers.
Contrôle du systèmes de fichiers L’utilitaire dumpe2fs permet d’afficher les information du système de fichier d’une partition Exemple : dumpe2fs –b /dev/sda1 Affiche la liste des bloc défectueux
Modification d’un Système de fichier Pour modifier un système de fichiers étendu, il faut utiliser tune2fs. tune2fs [options] device Principales options: -l: Liste le contenu du superblock d'un système de fichiers. -L: Donne un label au volume d'un système de fichiers. -j : Pour passer de ext2 a ext3
tune2fs
fsck Si le système de fichier est endommagé ou corrompu, l’utilitaire fsck est utilisé pour vérifier et corriger le système L’option –i permet de corriger les fichier corrompu
Monter et démonter un système de fichiers maniére temporaire La commande mount permet de monter un système de fichiers (partition, lecteur de disquette, DVD ...). La commande mount -a permet de monter tous les systèmes de fichiers déclarés dans le fichier /etc/fstab. La syntaxe : mount -t système_de _fichier -o option point_de_montage Exemple montage : mount -t vfat /dev/hda1 -o ro /Dos mount /dev/hda1 /Dos mount /dev/cdrom /cdrom Exemple démontage : umount /Dos On peut préciser l'option -o suivie ro pour monter un périphérique en lecture seule, tel qu'un CD-ROM ou une disquette protégée en écriture par exemple.
Monter et démonter un système de fichiers maniére temporaire
Montage permanant /etc/fstab Le fichier /etc/fstab contient tous les fichiers systèmes et les informations relatives qui seront utilisées pour monter un lecteur au démarrage du système Exemple de fichier fstab : L'emplacement physique du système de fichiers Le point de montage le répertoire doit déjà exister Le type de système de fichiers Les options de montage séparées par des virgules : (ro, rw, noauto, user, exec …) 1 = Sauvegardé la partition Ordre de vérification 0 = ne pas verifier
Les option de montage de /etc/fstab ro pour monter le système de fichiers en lecture seule, rw pour monter le système de fichiers en lecture-écriture, noauto pour que le système de fichiers ne soit pas monté au démarrage (option contraire : auto), user pour qu'un simple utilisateur puisse monter et démonter le système de fichiers et pas seulement le root (option contraire : nouser), uid, gid et umask pour définir des permissions pour l'ensemble du système de fichiers (pour les systèmes déficients comme fat ou ntfs), defaults pour les options par défaut (notamment rw, auto et nouser), et enfin sw pour les systèmes de swap.
Administration & Sécurité des Systèmes d’Exploitation Les Quotas Par : Samir CHERIF cherif.samir@gmail.com
Gérer les quotas disque Les quotas permettent de poser des limites à l’utilisation du système de fichier. Il existe deux limites : 1- limite sur le nombre d’inode donc sur le nombre de fichiers crées 2- limite sur le nombre de block donc sur la taille du disque -espace utilisé- Il existe pour chaque limite, deux types de limites : • La limite matérielle (hard =): spécifie la limite absolue, sur le disque géré par des quotas, au delà de laquelle l'utilisateur ne peut pas aller. • La limite logicielle (soft =): l’utilisateur peut dépasser cette limite mais dans ce cas le système affiche un warning
Mise en place des quotas utilisateurs Vérifier l’existance du paquetage : rpm -qa | grep quota Puis : grep -i quota /boot/config-2.6.5-1.358 Ajouter ensuite dans chaque système de fichiers (dans le répertoire racine) le fichier aquota.user ou/et aquota.group
Mise en place des quotas utilisateurs Il faut installer le paquetage quota si il n’existe pas Les mots clé usrquota ou/et grpquota doivent être ajoutés dans le fichier /etc/fstab dans les options de la partition en question. Redémarrer pour que les modifications du fichier fstab sous prisent en compte
Mise en place des quotas utilisateurs Vérifier et mettre jour la configuration avec : quotacheck –acmugv Mettre en place les quotas disque: quotaon -av
Mise en place des quotas utilisateurs Configurer les limites : edquota –u user ou edquota –g group
Mise en place des quotas utilisateurs Pour lister les quotas utilisateurs ou groupes, il faut utiliser quota. quota [options] [user|group] Principales options: -u: Par défaut, affiche les quotas utilisateurs. -g: Affiche les quotas groupe, du groupe de l'utilisateur courant.
Afficher un rapport de quota Pour afficher un rapport de quota, il faut utiliser repquota. Principales options: -a: Rapport sur tous les systèmes de fichiers indiquées dans /etc/mtab en lecture-écriture avec quotas. -g: Rapport pour le groupe