erik jourdain support lux-orsys version 1jd97290.free.fr/pluxml/data/documents/lux-ejo-1.pdf · 2 2...
Post on 06-Feb-2018
263 Views
Preview:
TRANSCRIPT
1
Linux - Administration
Erik JourdainSupport LUX-ORSYS
Version 1.0
2
2
Erik Jourdain
� SGBD Oracle et MySQL
� Administration et Optimisation
� Linux
� Debian, Ubuntu et Centos Version libre de RedHat�
� Cluster et virtualisation ( Xen, KVM et VirtualBox )
� Unix propriétaires� Solaris, HP-UX et AIX
� Langages� SQL, PL/SQL, Perl, Shell
� E-mail : erik.jourdain@adimcor.eu
� Blog : http://www.silverlake.fr
� Twitter : silverlakefr
3
Avertissement� Le cours se fait principalement en ligne de commande.
� Il est important de connaître les commandes de base Linux ainsi que l'éditeur de texte vi.
� L'interface graphique sera toutefois évoquée et mise en place.
� Les différentes distributions Linux sont toutes conçues sur le même modèle.
� Les répertoires, les noms de fichiers ou les commandes sont parfois différents.
� La plate-forme mise en place dans le cadre de ce cours est Centos 6.3 version libre de RedHat.
� Il sera fait référence à Debian 6 Squeeze pour certains aspects.
4
Plan du cours
� Linux
� Installation du système
� Administration de base
� Gestion des disques et autres périphériques
� Noyau, performance et optimisation
� Intégration réseau
� Services réseaux sous Linux� DNS Bind, � Web Apache, � Serveur de fichiers SAMBA
5
Linux
6
Historique
� Créé en 1991, dans une chambre d'étudiant en Finlande, par Linus Torvalds.
� On peut penser que Linux vient de la contraction Linus et Unix.
� Un succès immédiat grâce à Internet Buzz !�
� Le vrai démarrage de Linux date de 1998.
� La mascotte de Linux appelée Tux est un manchot et non un pingouin.
� Aujourd�hui Linux est reconnu comme un système d�exploitation stable, robuste et performant.
� Son emploi est quasi systématique dans les architectures Web.
� LAMP : Linux, Apache, MySQL,PHP
7
Linux� Linux est un système d'exploitation , ou OS ( Operating System ) pour
ordinateur.
� Linux fait parti de la famille des unix, à ce titre il est :
� Multi-tâches : plusieurs programmes peuvent s'exécuter en simultané
� Multi-utilisateurs : Plusieurs personnes peuvent utiliser la même machine au travers une session.
� Linux peut aussi faire tourner un programme sans qu'un utilisateur soit connecté serveur Web�
� Linux en tant que tel n'est qu'un noyau ( kernel ) dont l'unique rôle est d'assurer la communication entre le matériel et les applications.
� Un ensemble de logiciels utilisant Linux s�appelle une distribution Linux.
� Il existe un grand nombre de distributions Linux, CentOS en est une.
� Les plus connues sont RedHat, Fedora, Suse, Debian et Ubuntu
8
Distributions Linux
� A l'heure actuelle, deux tendances existent dans les distributions :
� RedHat like. Gestion de package RPM� RedHat,
� Fedora,
� CentOS,
� Scientific Linux
� Debian like. Gestion de package DEB� Ubuntu,
� Linux Mint
� Le site distrowatch.com recense environ 160 distributions dont 63% sont directement ou indirectement basées sur Debian.
� Beaucoup d'entreprises choisissent RedHat en raison du support et de la structure commerciale du produit.
9
La distribution DEBIAN
10
DEBIAN� Se prononce « débianne », vient du nom des créateurs
Déborah et Ian Murdock. Sa création date de 1993.
� Debian est connue pour sa stabilité légendaire.
� La communauté Debian recense plus de 1100 contributeurs, tous bénévoles
� Il n'existe aucune entreprise Debian, son développement est totalement libre et ouvert.
� Ces deux derniers points sont souvent vus comme un défaut. Beaucoup d'entreprises veulent du support auprès d'un éditeur et préfèrent Redhat.
� HP, entre autre, propose du support sur Debian.
� Debian est supporté sur les architectures Intel, AMD, SPARC, MIPS, PowerPC, Intel Itanium et ARM.
� Site officiel : http://www.debian.org
11
Branches Debian
STABLESqueeze
TESTINGFuture stable
Wheezy
SIDdéconseillée en
production
Sortie février2011
Paquets endéveloppement
constant
Paquets considérés sans bugs critiques
� récents
Paquets éprouvésgrande stabilité
� plus anciens
OLDSTABLELenny
Paquets maintenus18 mois après
la sortie de STABLE
Le passage de TESTING à STABLEest de 18 à 24 mois
La décision est en fait :When it's ready !
Les noms de code des versions de Debian sont tirés du film Toy Story
C'est sur cette branche que s'appuie Ubuntu
12
Pourquoi choisir Debian ?
� Pour la stabilité.
� Le contrat social Debian et sa philosophie de développement très strict sont à la base de cette qualité logicielle.
� Pour la commande apt-get, très en avance sur son temps, ce principe de gestion des dépendances fut copié par tous.
� La richesse de ses packages près de 30 000 à ce jour.
� Un serveur doit assurer un service en 24/7.
� Stable et nouveau ne sont pas forcément synonymes !
� Il vaut mieux une solution "vieillote" mais parfaitement stable et éprouvée qu'un toute neuve sans véritable retour d'expérience.
� L'image parfois "ringarde" de Debian est pour beaucoup un signe de qualité.
� Debian ne dépend d'aucune contrainte commerciale.
13
La distribution CentOS
14
CentOS
� Community enterprise Operating System
� Principalement destinée aux serveurs.
� Tous ses paquets, à l'exception du logo, sont compilés à partir des sources de la distribution RHEL (Red Hat Enterprise Linux), éditée par la société Red Hat.
� Elle est donc quasiment identique et se veut 100 % compatible d'un point de vue binaire.
� Un délai de 48 heures est observé lors des mises à jour entre RedHat et CentOS.
15
De Fedora à CentOS
FedoraRedHatRHEL
CentOS
ScientificLinux
Très "uptodate"Stable, éprouvéeCommercialeSupport
GratuitSupport Communautaire
16
Pourquoi choisir CentOS
� Pour sa compatibilité avec RedHat.
� De nombreux logiciels sont packagés rpm, plus rarement deb.
� Les installations automatiques via kickstart sont plus simples qu'avez Debian.
� RedHat est payant mais apporte du support. CentOS est gratuit, le support est via la communauté.
� Beaucoup de logiciels exigent RedHat, par exemple Oracle.
� La distribution utilisé dans ce cours sera CentOS version 6.3.
� La durée de maintenance élevée : 9 ans.
17
Architecture Linux
18
Architecture matérielle
� Linux existe pour au moins trois architectures matérielles courantes :
� x86 ou i386/i686 pour les ordinateurs dont les processeurs sont du type Intel (du 386 au Pentium 4) ou AMD (Athlon, Duron, Sempron) 32 bits.
� Cette version fonctionne aussi sur les machines à base de processeurs 64 bits.
� x86_64 pour les ordinateurs dont les processeurs sont du type Intel (Pentium 4 à partir des séries 600, Xeon, Dual Core/Quad Core) ou AMD (Athlon 64, Sempron 64, Opteron) 64 bits.
� Cette version ne fonctionne pas sur les processeurs 32 bits.
� Les paquets Debian en 64 bits sont sous le nom amd64 qui ne correspond en rien aux processeurs AMD. Ils fonctionnent avec des processeurs Intel et AMD.
� ppc pour les ordinateurs dont les processeurs sont de type PowerPC c�est-à-dire les anciens ordinateurs de marque Apple.
� Cette version ne s�installera pas sur les dernières machines Apple basées sur un processeur de marque Intel.
19
Linux est un noyau
� Le noyau LINUX est une interface entre des programmes et des périphériques physiques.
� L'accès à ces périphériques se fait par l'intermédiaire d'appels systèmes qui sont identiques quelle que soit la machine.
� Cette encapsulation du matériel libère les développeurs de logiciels de la gestion complexe des périphériques : c'est le système d'exploitation qui s'en charge.
� Ainsi, si le système d'exploitation existe sur plusieurs architectures, l'interface d'utilisation et de programmation sera la même sur toutes.
� On dira alors que le système d'exploitation offre une machine virtuelle à l'utilisateur et aux programmes qu'il exécute.
� Tous les systèmes d'exploitations sont basés sur ce principe.
20
Principe du noyau Linux
Applications
Appels Systèmes Linux
Gestion desprocessus
Gestion du matériel
Matériel ( Disques, CPU, carte réseau... )
Gestion E/S Fichiers
Pilotes/Drivers
Cache Linux
21
Espaces Noyau vs Utilisateur
� Linux est considéré comme un système d'exploitation monolithique, écrit comme un ensemble de procédures qui peuvent s'appeler mutuellement.
� Pour l'utilisateur, il se présente comme un seul gros fichier. Cependant, il contient un ensemble de composants réalisant chacun une tâche bien précise.
� Cette construction monolithique induit un aspect important :
� La notion d'espace noyau kernelspace,�
� La notion d'espace utilisateur userspace. �
� Dans l'espace noyau, aucune restriction n'est imposée.
� Dans l'espace utilisateur, un certain nombre de restrictions sont imposées, par exemple, la création d'un fichier ne peut se réaliser que si les droits sont suffisant, et le processus ne peut avoir accès qu'aux zones mémoires qui lui ont été allouées.
� Le noyau LINUX est composé de cinq sous-systèmes principaux.
� Un sous-système peut être défini comme une entité logicielle qui fournit une fonctionnalité particulière.
22
Tâches réalisées par le noyau LINUX
� Gestion des Processus, Ordonnanceur, Scheduler
� Ce sous-système est chargé de répartir équitablement les accès au processeur entre toutes les applications actives. Cela n'inclut pas seulement les processus utilisateurs, mais aussi les sous-systèmes du noyau lui-même. Cette fonction est réalisée par le Scheduler.
� Gestion de la mémoire
� Ce sous-système est chargé d'affecter à chaque programme une zone mémoire. Il a également un rôle de protection : la mémoire pour un processus est privée et celle-ci ne doit pas être lue ni modifiée par un autre.
� Système de fichier virtuel
� Le sous-système de fichiers garantit une gestion correcte des fichiers et un contrôle des droits d'accès. Pour limiter la complexité liée aux nombreux systèmes de fichiers existants, LINUX adopte le concept de Virtual FileSystem (VFS). Le principe du VFS est de proposer des appels systèmes identiques quel que soit le système de fichiers. Il est de la responsabilité du noyau de détourner les appels standards vers les appels spécifiques au système de fichiers.
� Service réseau
� Le sous-système réseau permet à Linux de se connecter à d'autres systèmes à travers un réseau informatique. Il y a de nombreux périphériques matériels qui sont supportés et plusieurs protocoles réseaux peuvent être utilisés.
� Communications Inter Processus
� Dans la mesure où un processus ne peut avoir accès qu'à la zone mémoire qui lui a été allouée, LINUX propose plusieurs mécanismes permettant à des applications de communiquer entre elles.
23
Synoptique de communication
DriverSATA
DisqueSATA
DriverIDE
CDROM
DriverVFS
Système defichier virtuel
DriversVFS
Gestionprocessus
Gestionmémoire
Serviceréseau
Communication Inter-Processus
DriverCarte réseau
DriverVFS
ProtocoleTCP/IP
CarteRéseau
Processusutilisateur
Processusutilisateur
Processusutilisateur
Processusutilisateur
Espaceutilisateur
Espacenoyau
Matériel
Processusutilisateur
24
Utilisation de Linux
� Principalement comme OS serveur
� Par exemple, la plupart des serveurs Web au monde utilisent Linux au travers HTTPD de la fondation Apache.
� Comme serveur de fichier le plus utilisé est SAMBA qui offre des fonctions très proches de Windows Server.
� Le marché des postes de travail est plus difficile à conquérir pour Linux. Une distribution comme Ubuntu axe son développement sur une ergonomie soignée et une facilité d'installation des logiciels.
� Linux est très sécurisé, certes des virus existent mais le mode de fonctionnement des Unix en général rend leur mise au point très difficile.
� Linux est gratuit et son code source est ouvert.
25
Open-Source
� On parle aussi de logiciel libre.
� Le fait que le code soit ouvert est un gage de sécurité.
� Chacun peut apporter idées ou correction.
� Il n'y a pas de bonne ou de mauvaise contribution, juste des idées non retenues.
� La réactivité est plus forte.
� Certaines distributions sont axées sur les nouveautés ( Fedora, Ubuntu ) d'autres sur la stabilité ( Debian, RedHat ).
� La devise de Debian résume bien cet état de fait :"On ne sort une nouvelle version que lorsqu'elle est prête !"
26
RTFM
� Argot du Web. "Read The Fucking Manual". La réponse est souvent là.
� Linux est devenu célèbre par le Net et le partage d'expérience. La plupart de vos questions trouveront une réponse via un moteur de recherche
� "Google is your best friend"
� Les forums abondent et le pire côtoie le meilleur.
� Évitez ceux qui parlent en SMS
� sa march pô !
� j koné ren !
� g fé kom c marké...
� Recoupez toute information et faites vous des fiches, voir un wiki personnel ( jetez un oeil sur dokuwiki ).
� Une maxime : "Si tu ne sais pas, demande. Si tu sais partage !"
27
Interface graphique ou pas
� Le débat est vaste
� L'interface graphique sous Linux n'est pas obligatoire, car il s'agit d'un programme comme un autre.
� Les serveurs en sont en général dépourvus.
� Linux permet de choisir l'interface texte ou graphique.
� Sous Linux l'interface graphique se décompose en deux :� Le serveur graphique : X-Window, nommé aussi X11
� Le bureau : GNOME, KDE, XFCE, E17, JWM...
� L'interface graphique demande des ressources, si au niveau d'un poste de travail son confort est évident, elle est sans aucun intérêt pour un serveur.
28
Installation dusystème
29
Média d'installation
� Plusieurs méthodes� CD-ROM, la plus courante� Clé USB, utilitaire unetbootin� Réseau, boot PXE ou image minimale
� En cas de déploiement massif fichiers de �
préconfiguration� Kickstart sous Centos� Preseed sous Debian
30
Installation par CD-ROM
� Télécharger depuis l'Internet l'image ISO de la distribution souhaitée.
� CENTOS : http://www.centos.org/
� DEBIAN : http://www.debian.org
� Vu le nombre croissant de package, le DVD est devenu la norme, pour la majorité des distributions pourtant le CD 1 est suffisant.
� CentOS et Debian propose une image minimale n'installant que le strict minimum.
� 32bits ou 64bits ?
� Si le processeur le permet préférer le 64bits meilleure gestion de la RAM au �
delà de 1Go.
� Obligatoire si plus de 4Go de RAM
� Graver l'image ISO pas une copie directe !�
� Démarrer la machine sur le CD-ROM
31
Installation USB
� Plus rapide que par CD-ROM.
� Le projet unetbootin permet la création d'une clé USB bootable à partir de l'image ISO d'une distribution Linux quelconque.� http://unetbootin.sourceforge.net/
� Certaines distributions offre un utilitaire similaire ( ubuntu ).
� Attention certains BIOS ne permettent pas le boot USB.
32
Installation réseau
� Les distributions proposent des images minimales nommées NetInstall taille < 40Mo�
� Il est également possible de démarrer l'installation via la carte réseau boot PXE�
� Les paquets logiciels sont alors chargés via un dépôt ou miroir sur l'Internet. Il est possible d'avoir son propre miroir de la distribution sur le réseau local.
� La mise en place d'un serveur PXE, d'un miroir de la distribution local et d'un fichier de pré-configuration permet d'installer automatiquement des machines.
� Se référer au cours DUS de Orsys. 3 jours...
33
Choix du type d'installation
� Sous Linux il n'existe pas de différence entre les versions serveur ou poste de travail.
� Le choix se fait en fonction des paquets installés.
� Certaines distributions comme Ubuntu ou Mint s'installent très facilement.
� Il existe toujours un mode expert, souvent en mode caractère, permettant une gestion très fine du processus d'installation.
� Il est indispensable de maîtriser le mode expert pour certaines configurations matérielles.
34
Format des paquets
� Sous Linux les logiciels sont distribués sous forme de paquets ( packages ).
� Les paquets permettent une installation, des mises à jour et une désinstallation simple.
� Il existe deux grandes familles de paquets� rpm, pour les distributions type RedHat� deb, pour les distributions type Debian
� Bien qu'incompatibles ces deux formats proposent les mêmes services.
� Il est possible de convertir un paquet rpm et deb et vice-versa logiciel ALIEN.�
35
Gestion des paquets
� Utilisation en ligne de commande :� Commande rpm sous Centos,� Commande dpkg sous Debian
� Certains paquets demandent pour fonctionner d'autres paquets gestion des dépendances.�
� Commande yum sous Centos� Commande apt-get ou aptitude sous Debian.
� N'utiliser que ces commandes et donc les paquets de la distribution permet une grande stabilité de la plate-forme Linux et des mises à niveau simplifiées.
36
Gestion des mises à jour
� Pour installer et mettre à jour une distribution Linux on utilise des dépôts.
� Il est possible d'utiliser des dépôts depuis l'Internet ou d'utiliser son propre dépôt.
� Pour Debian les dépôts sont dans le fichier /etc/apt/sources.list
� Pour CentOS il s'agit des fichiers .repo sous le répertoire /etc/yum.repo.d
37
Choix des paquets
� Pour ce cours une installation de base avec graphique est configurée.
� En production une installation minimale est réalisée.
� Les paquets nécessaires sont installés au fur et à mesure.
� Ce mode d'installation permet de configurer exactement la machine en fonction de son besoin.
� Un paquet non utilisé n'a pas besoin d'être installé.
38
Configuration Orsys
� Pour faciliter certaines manipulations la salle dispose d'un dépôt CentOS 6.3.
� Pour utiliser ce dépôt, supprimer tous les fichiers .repo sous /etc/yum.repo.d� cd /etc/yum.repo.d� rm -f *
� Créer un fichier local.repo avec le contenu du slide suivant.
39
/etc/yum.repo.d/local.repo
[local]
name=Local
baseurl=http://192.168.3.24/centos/6/os/i386
enabled=1
gpgcheck=0
[local-updates]
name=Local-updates
baseurl=http://192.168.3.24/centos/6/updates/i386
enabled=1
gpgcheck=0
40
Mettre à jour la distribution
� Une fois le fichier dépôt configuré, lancer la commande de mise à jour.� yum -y update
� Les paquets seront alors chargés depuis le dépôt local et mis à jour sur le système.
� Cette action peut être assez longue.
41
Problèmes d'installation
� Il faut toujours vérifier avant l'installation que les composants seront bien reconnus.
� Lors de l'installation, il est possible que le système demande des firmwares particuliers pour certains matériels :� Cartes RAID
� Cartes réseau...
� Il suffit de se connecter sur le site web du constructeur pour les télécharger et les mettre sur une clé USB.
� Dans de très rares cas, il est possible qu'il faille recompiler un noyau Linux pour utiliser un matériel.
� Les périphériques posant des difficultés sont en général les cartes graphiques, notamment ATI et nVidia, ou les webcams.
42
Spécifications matérielles
� Processeur Intel ou AMD, les plus courants. Debian supporte 9 types de processeurs, 5 pour Centos.
� Si plus de 4Go de RAM version 64bits�
� Un serveur ne demande pas plus de 512Mo de RAM. 1Go pour un poste client. ( en dessous c'est possible, mais ça rame ! )
� 4Go de disque, une installation basique ne demande que 500Mo.
� Une carte réseau ( compatible PXE si boot via réseau )
� Lecteur CD/DVD ou boot par USB
� La carte graphique est sans intérêt pour un serveur.
43
Choix du système de fichiers
� Sous linux il existe beaucoup de systèmes de fichiers. Les plus courants sont :� ext2, non journalisé utilisé sous /boot ou sur clé USB.
� ext3 ext4 : Journalisé, choix par défaut de la plupart des �
distributions. ext4 est intéressant avec des disques ssd.
� xfs : Utile sur les très gros fichiers, comme par exemple les bases de données.
� brtfs : sans doute le futur de Linux, encore jeune, mais très prometteur.
� reiserfs : Très performant sur les petits fichiers
� ntfs : utilisé par Windows, permet de mettre en place une partition d'échange entre les 2 OS.
44
Installation de Centos
� Mettre le CD-ROM dans le lecteur et démarrer la machine.
� Depuis la version 6 seul le mode graphique permet d'accéder à la configuration avancée.
� Le mode texte ne pose pas toutes les questions, il faut donc utiliser un kickstart.
� Une fois le boot effectué, ne pas tester le CDROM, choisir la langue française et valider le clavier.
45
Ecran de boot installationCentOS 6.3
46
Configuration réseau
� Choix le protocole IPV4 et désactiver IPV6
� IP statique type :� IP : 192.168.<salle>.<x>/24� Passerelle : 192.168.<salle>.254� DNS : 194.2.0.20 et 194.2.0.50
� Choisir URL comme médium d'installation et renseigner ainsi :
� http://192.168.x.24/centos/6/os/i386
� Définir le nom de la machine manuellement mettre �
votre prénom.
47
Configuration réseau CentOS 6.3
Bien cocher cette case, sinon la carte réseaune sera pas active au boot.
48
Partitionnement Disque
� Linux demande au minimum deux partitions
� Racine ou root symbolisée par /
� Swap, utilisée en cas de manque mémoire vive.
� Le partitionnement minimum peut suffire pour un poste de travail individuel. Un partitionnement plus fin est toutefois recommandé.
� Pour un serveur il est important de définir un partitionnement plus fin du disque.
� Il importe aussi de statuer sur le mode de partitionnement :� Statique,
� LVM
� Le partitionnement proposé ici est statique. Il ne s'agit que d'un exemple appliqué de longue date en production.
49
Principe des partitions
� Les processeurs Intel et AMD utilise un partitionnement disque type MS-DOS.� Partition primaire, maximum 4� Partition logique, maximum 256
/boot swap / /usr /usr/local /opt /var /tmp /home
Découpage type du disque
Primaire Logique
50
Pourquoi partitionner ?
� Par sécurité, il est possible par exemple de monter la partition /usr en read-only et ainsi interdire toute installation de logiciels.
� Monter la partition /tmp en interdisant l'exécution de programme depuis cet emplacement.
� La partition /var contient les logs système et ceci permet de la purger facilement.
� Mettre la partition /tmp sur laquelle tout le monde peut écrire à une taille modeste permet d�éviter la saturation de l'espace disque...
51
Blinder un serveur
� Les partitions permettent d'éviter certaines choses désagréables comme par exemple l'ajout intempestif de logiciels ou la copie d'exécutables dans /tmp ou $HOME. Pour cela, une fois tout installé et configuré, modifier la table de montage ainsi :
� vi /etc/fstab# /etc/fstab: static file system information.# <file system> <mount point> <type> <options> <dump> <pass>proc /proc proc defaults 0 0/dev/hda3 / ext3 errors=remount-ro 0 1/dev/hda1 /boot ext2 defaults 0 2/dev/hda10 /home ext3 rw,nosuid,nodev,noexec 0 2/dev/hda7 /opt ext3 ro 0 2/dev/hda9 /tmp ext3 rw,nosuid,nodev,noexec 0 2/dev/hda5 /usr ext3 ro 0 2/dev/hda6 /usr/local ext3 ro 0 2/dev/hda8 /var ext3 rw,nosuid,nodev,noexec 0 2/dev/hda2 none swap sw 0 0
� Ce n'est pas la panacée en sécurisation, mais ceci évite pas mal de désagrément.
52
Exemple de partitionnement
53
Partitionnement courant en production
Point de montage Type Primaire/Logique Taille
/boot ext2 Primaire 100 Mo
swap Primaire 1 024 Mo
/ ext3 Primaire 500 Mo
/usr ext3 Logique 5 000 Mo
/usr/local ext3 Logique 5 000 Mo
/opt ext3 Logique 10 000 Mo
/var ext3 Logique 2 000 Mo
/tmp ext3 Logique 1 000 Mo
/home ext3 Logique Le reste
54
LVM
� Logical Volume Manager
� Permet de rendre transparent les disques physiques de leurs utilisation en partitions.
� Les disques physiques sont regroupés en groupes de volumes découpés en volumes logiques.
� L'intérêt de LVM est de pouvoir augmenter ou diminuer dynamiquement une partition.
� Ubuntu permet de configurer LVM dès l'installation.
� Dans ce cours l'installation se fera en partitionnant statiquement le disque puis la mise en �uvre de LVM sera vu ensuite.
55
Processus d'installation CentOS 6.3
56
Choix des paquets lors de l'installation
� En utilisant le CD minimal seul le nécessaire est mis en place.� Serveur ssh� Gestionnaire de packages yum
� Une fois installée la machine redémarre et il est possible de se connecter en root en mode console ou à distance via ssh.
� A ce stade la machine ne permet rien de plus.
57
Configuration minimale
� Le slide précédent doit être pondéré.
� Plusieurs services inutiles sont activés au démarrage par défaut ;
� iSCSI
� Parefeu...
� Le plus simple est de tout désactiver et de ne conserver que le necessaire
� réseau
� ssh
� rsyslog ( gestion des traces )
� Procéder ainsi
� for i in `chkconfig --list | cut -f1`; do chkconfig --del $i; done
� chkconfig --add network
� chkconfig --add sshd
� chkconfig --add rsyslog
58
Corriger un problème GRUB
� Le chargeur GRUB peut parfois poser des difficultés et demander sa ré-installation.
� Booter sur le CD d'installation et passer en mode rescue.� boot : linux rescue
� Monter la partition / ( /dev/sda3 dans cet exemple ).
� mkdir /mnt/sysimage
� mount /dev/sda3 /mnt/sysimage
� Changer la racine par la commande chroot
� chroot /mnt/sysimage
� Ré-installer grub dans le MBR
� grub-install /dev/sda
� Redémarrer la machine.
59
Problème éseau� Il arrive que le réseau ne soit pas configuré. Souvent par oubli lors de
l'installation.
� Se connecter en mode console et editer le fichier /etc/sysconfig/network-script/ifcfg-eth0.
� Vérifier que la clause ONBOOT est bien à "yes"
� DEVICE="eth0"
� BOOTPROTO=static
� ONBOOT=yes
� IPADDR=192.168.3.20
� PREFIX=24
� Selon les installations ce fichier contient plus de renseignement.
� Il est important que les clauses soit en majuscules.
� Après correction redémarrer le réseau par la commande suivante :
� service network restart
� Vérifier par la commande ifconfig eth0 l'attribution correcte de l'adresse IP.
60
Désactiver la sécurité
� Par défaut CENTOS configure la sécurisation des applications via SELinux ( Security-Enhanced Linux ).
� La mise en place de SELinux dépasse le cadre de ce cours.
� Pour certains logiciels, l'activation par défaut de SELinux est problématique.
� Désactiver la sécurisation SELinux en editant le fichier /etc/selinux/config� Remplacer SELINUX=enforcing par SELINUX=disabled
� Taper ensuite la commande : setenforce 0
61
Installation Debian
� Le principe est assez similaire à l'installation de CENTOS.
� La principale différence vient dans le mode de gestion des paquets. Debian utilise la commande dpkg et apt-get/aptitude
� Les dépots sous Debian sont configurés dans le fichier /etc/apt/sources.list� deb http://ftp.fr.debian.org/debian/ squeeze main
� deb http://security.debian.org/ squeeze/updates main
� deb http://ftp.fr.debian.org/debian/ squeeze-updates main
� Mise à jour un système Debian� aptitude update
� aptitude safe-upgrade
62
Installation des paquets rpm� La commande de base pour l'installation des paquets est rpm
� rpm -i <nom_du_paquet> installation�
� rpm -U <nom_du_paquet> mise à jour�
� rpm -e <nom_du_paquet> dé-installation�
� rpm -qa <nom_du_paquet> Information�
� RPM ne permet pas la gestion des dépendances fonctionnelles.
� Yum facilite grandement l'installation des logiciels en gérant les dépendances fonctionnelles.
� yum install <nom_du_paquet> installation�
� yum update <nom_du_paquet> mise à jour�
� yum update mise à jour complète de tous les paquets.�
� yum remove <nom_du_paquet> dé-installation�
� yum list Liste l'ensemble des paquets disponibles. Combinée avec grep cette �
fonction permet de rechercher des paquets sur un mot clé. Il existe toutefois une commande yum search <mot_clé>.
� Exemple installation de postfix, qui dépend de perl.
� yum install postfix installe en plus perl�
63
Compléments YUM
� Afin de faciliter la mise en place de fonctionnalités génériques, Centos propose des groupes de paquets.
� La liste complète est obtenue ainsi :� yum grouplist
� L'installation se fait de cette manière :� yum groupinstall 'Outils de développement'� Les ' sont nécessaires si le nom du groupe comporte des
espaces.
� La commande ci-dessus installe les outils de développement ( compilateur, éditeur de liens... )
64
Exemple d'installation d'un rpm
� Afin de visualiser la configuration de la machine, il existe une commande bien pratique : lshw.
� Cette commande, d'origine Debian, n'est pas disponible via yum, mais il existe un package rpm sur le site de l'auteur.
� Dans un premier temps, installer la commande wget� yum install wget
� Charger le paquet� wget http://pkgs.repoforge.org/lshw/lshw-2.16-1.el6.rf.i686.rpm
� L'installer� rpm -i lshw-2.16-1.el6.rf.i686.rpm
� Tester par : lshw -short
65
Installation par les sources
� Cette méthode est déconseillée, mais parfois indispensable car le logiciel n'est pas packagé dans la distribution.
� La distribution GENTOO n'utilise que ce principe.
� Il est possible d'après les sources de créer un paquet pour la distribution ( hors cours ). Cette méthode est conseillée.
� Lien Internet sur le sujet : http://fedoraproject.org/wiki/A_Short_RPM_Tutorial
� L'installation par les sources demande un compilateur et un éditeur de lien.
� Afin de ne pas mélanger les paquets de la distribution et les logiciels installés par les sources ceux-ci sont, par défaut, mis en place dans une arborescence distincte : /usr/local.
66
Exemple programme hello
� Charger le code source
� wget http://ftp.gnu.org/gnu/hello/hello-2.6.tar.gz
� Le décompresser
� tar -xvzf hello-2.6.tar.gz
� Se positionner dans le répertoire créé
� cd hello-2.6
� Compiler et installer
� ./configure
� make
� make install
� Le programme se trouve sous /usr/local/bin
� cd /usr/local/bin
� ./hello
67
DémarrageConfigurationMises à jour
68
Démarrage
� Le démarrage passe par plusieurs étapes
� Le Bios appelle le chargeur de démarrage
� Le chargeur met en place le noyau Linux
� Linux démarre le processus init
� Init lance tous les services Linux
� Ce principe est générique sur toute distribution Linux.
� Le programme init n�est pas toujours le même d�une distribution à une autre.
� La plupart des distributions utilisent l'init de type System 5, basé sur la notion de niveaux d�exécution.
� Ubuntu utilise Upstart qui gère les priorités, les événements et dépendances entre les services, mais qui reste calqué sur l'init System 5.
69
Le BIOS
� Basic Input Output System
� Premier programme exécuté lors de l'allumage de la machine.
� Stocké en ROM ( Read Only Memory )
� Fonctions :� Tester les circuits et composants de la machine,
� Initialiser un système basique d'affichage
� Tester la mémoire
� Détecter les périphériques de stockage
� Charger le système d'exploitation présent sur le périphérique choisi pour l'amorçage ( disque dur, cdrom, usb... )
� La configuration du BIOS sort du cadre de ce cours.
70
Le chargeur de démarrage
� Le BIOS active le chargeur de programme initial (Initial Program Loader, IPL) à partir des premiers 512 octets du support de démarrage.
� Sous Linux, le chargeur le plus utilisé est grub. Il est décomposé en deux parties.
� Le chargeur initial des 512 octets ne contient pas assez de code pour proposer des menus et lancer le chargement d�un système d�exploitation.
� Il charge la seconde phase, basée sur un fichier de configuration. Ce fichier de configuration est sous /boot/grub et se nomme grub.cfg sous Debian, menu.lst sous CentOS.
� La seconde phase fournit une interface pour lancer un système d�exploitation parmi un choix donné.
� Le BIOS n�intervient qu�au démarrage de la machine, à l�utilisation du chargeur de démarrage et aux toutes premières étapes du chargement du noyau. Ensuite, il devient inutile.
� Le noyau dispose de ses propres fonctions de détection bien qu�il s�appuie sur la configuration du BIOS.
71
DISQUE
Le chargeur GRUB
� Debian utilise le chargeur de démarrage GRUB
� On emploi aussi le terme de bootloader.
� Sa tâche est de lire et de mettre en mémoire une image du noyau OS et de lui passer la main.
� GRUB permet le multi-amorçage, permettant ainsi la cohabitation Linux/Windows.
� GRUB est installé dans le Master Boot Record du disque dur et lance le noyau de l'OS
� Il existe un autre chargeur, Lilo, mais il n'est plus très utilisé par les distributions Linux actuelles.
MBRPartitionWindows
PartitionDebianBIOS
72
Le MBR
� Master Boot Record
� Il s'agit du premier bloc d'un disque dur, sa taille est de 512 octets.
� 446 octets pour le gestionnaire d'amorçage
� 64 octets pour la table des partitions, 16 octets par partitions soit 4, le maximum. Pour plus de partitions il faut utiliser le mode étendu.
� 2 octets à la valeur AA55 sinon MBR erroné.�
� Pour installer ou réinstaller GRUB en cas de MBR corrompu, par exemple sur /dev/sda utiliser la commande grub-install :
� # /sbin/grub-install /dev/sda
� Il est possible de sauvegarde le MBR ainsi :
� dd if=/dev/sda of=boot.mbr bs=512 count=1
� Et de le restaurer ainsi :
� dd if=boot.mbr of=/dev/sda bs=512 count=1
� La commande fdisk /mbr efface le Master Boot Record
73
Initialisation du noyau
� Au chargement du noyau une multitude d�informations défile sur l�écran.
� Toutes les traces du chargement noyau sont placées dans le fichier /var/log/dmesg.� La commande dmesg permet de lire ce fichier.
� Étapes de l'initialisation noyau� Le matériel est détecté et initialisé.
� initrd est chargé ainsi que les modules éventuellement présents.
� Le noyau monte le système de fichiers racine en lecture seule.
� Il crée la première console.
� Le premier processus est lancé init.�
74
Initrd
� Initrd ( INITial RamDisk ) est un fichier spécial (disque RAM), initialisé par GRUB, avant de charger le noyau.
� Il permet de pré-charger les modules contenu dans le fichier /etc/modules.conf.
� Ce pré-chargement est parfois indispensable si le pilote de la carte SCSI du disque dur est sous forme de module. Sinon il serait impossible de monter les partitions.
� Son emploi s'est généralisée sur toutes les distributions Linux qui utilisent maintenant des noyaux modulaires.
� Il permet ainsi d'avoir un système minimal pouvant ensuite charger le système de fichier principal ou bien des systèmes sans disques.
75
Le processus Init
� Le programme init, premier démarré et dernier stoppé au sein du système, lance toutes les autres tâches.
� Le rôle initial de init est de démarrer et d�arrêter tous les services.
� Le processus init est le père de tous les processus. Il a toujours le PID ( Process ID ) 1. Sa configuration est présente dans le fichier /etc/inittab.
� Ubuntu n'utilise pas un fichier /etc/inittab comme les autres distribution mais Upstart.
76
Les niveaux d'exécution standards� Un niveau d�exécution, ou runlevel, est un état dans
lequel se trouve Linux.
� Cet état est contrôlé par init. Chaque état dispose de sa propre configuration.
� Les niveaux d'exécution sont les suivants :Niveau Effet
0 Halt : stoppe le système d�exploitation, éteint la machine.
1 Mode mono-utilisateur utilisé pour la maintenance, mode console.2 Multi-utilisateur, sans réseau, console.
3 Multi-utilisateur, avec réseau, console.
4 Idem que le 3, laissé à la convenance de l�administrateur.
5 Multi-utilisateur, avec réseau, avec environnement graphique X Window.
6 Reboot : redémarrage de la machine
S ou s Single user mode, le mode le plus bas en cas de soucis.
77
kernel et initrd
� La configuration du chargeur grub se trouve sous /boot/grub et se nomme grub.conf.
� Dans certaines distribution ce fichier se nomme menu.lst, sous Centos menu.lst est un lien symbolique vers grub.conf.
� Il contient les lignes suivantes :
� default=0
� timeout=5
� splashimage=(hd0,0)/grub/splash.xpm.gz
� hiddenmenu
� title CentOS (2.6.32-279.22.1.el6.i686)
� root (hd0,0)
� kernel /vmlinuz-2.6.32-279.22.1.el6.i686 ro root=/dev/sda3
� kernel indique l'emplacement du noyau linux et la partition racine /dev/sda3
� initrd est une image mémoire des modules du noyau
78
Rôle de l'initrd
� INITial Ram Disk.
� Son utilisation est généralisée sous Linux afin d'avoir des noyaux modulaire. C'est à dire que le noyau charge à la volé, via la commande insmod, les éléments dont il a besoin pour accéder au matériel, ainsi le noyau est plus petit et plus optimisé.
� C'est une des raisons qui fait qu'on ne recompile quasiment plus les noyaux.
� C'est un système de fichiers compressé, au format cpio. Il contient des biblothèques, des modules, des commandes. Après que le noyau l'ait installé en RAM, ce dernier exécute le script init. Ce script contient essentiellement des commandes insmod qui chargent des modules, drivers, dans le noyau et ensuite bascule vers un foctionnement normal en montant le véritable "root file system".
� Le cas emblématique est celui de ext3. Le pilote du système de fichiers ext3 par défaut de Debian qui n'est pas défini en statique dans le noyau.
� C'est un pilote qui est chargé à la demande. Le montage du système fichiers root, n'est possible que si son pilote est dans le noyau. Hors le pilote se trouve sur le système de fichiers root qui n'est pas encore monté.
� Le script init du fichier initrd procède au chargement du pilote avant même que le système de fichiers root soit monté.
79
Niveaux d'exécution
� Le système linux dispose de 7 niveaux d'exécution numérotés de 0 à 6:
� 0 correspond à la procédure d'extinction de la machine
� 6 correspond à la procédure de redémarrage de la machine
� 1 correspond au mode d'administration qui charge un minimum de choses et se conclue par l'accès à un shell root direct si la distribution est peu sécurisée ou avec demande de mot de passe dans le cas contraire.
� 2, 3, 4 et 5 permettent de déterminer différents niveaux d'exécution avec différents services chargés
� 2 : multi-utilisateur sans serveur X ni NFS
� 3 : multi-utilisateur sans serveur X avec NFS, c'est souvent le niveau par défaut.
� 4 : N'est pas utilisé
� 5 : est associée à un système multi-utilisateur avec serveur X.
� Dans certaines distributions 2,3,4 et 5 produisent le même effet.
80
Démarrage en fonction du niveau
� Les niveaux d'exécution permettent au système de déterminer dans quel répertoire rcX.d piocher les scripts de démarrage.
� Sous Debian et CentOS, ces scripts se retrouvent dans les répertoires /etc/rc[0-6].d
� Ces répertoires ne contiennent que des liens symboliques vers les scripts du même nom contenus dans le répertoire /etc/init.d.
� Ces liens sont tous formés selon la même syntaxe
� [S|K]XX<nom_du_script>
� S indique au système que le script doit être lancé avec l'opérande start (démarrage du service)
� K indique au système que le script doit être lancé avec l'opérande stop (arrêt du service)
� XX est un niveau d'exécution, on peut en effet modifier l'ordre dans lequel se lance ces scripts. Par exemple le montage des interfaces réseaux doit se faire avant NFS.
� La somme des XX de S et de K doit faire 100,
� Un script en S90 doit avoir un K10.
� C'est une convention, non une obligation
� Sous Debian, l'utilitaire update-rc.d permet de gérer ces liens.
� Sous Centos, l'utilitaire est chkconfig.
81
Activer/désactiver un script au démarrage
� Sous CentOS la commande chkconfig est chargée de cette tâche.
� chkconfig --list, permet de voir l'ensemble des scripts gérés.
� Une fois le script écrit, il faut l�ajouter au système de démarrage par
� chkconfig --add mon_script
� chkconfig --del mon_script pour le retirer
� Il faut ensuite programmer ses niveaux d�arrêt et de démarrage
� chkconfig mon_script on
� Par défaut le script est démarré aux niveaux 2,3,4 et 5 et stoppé aux niveaux 0,1 et 6
� Il est possible d�obtenir une plus grande finesse avec l�option --levels.
� La commade chkconfig est une spécificité RedHat, sous Debian la commande équivalente est update-rc.d
82
Lancement et arrêt manuel d'un service
� Il existe plusieurs méthodes
� Démarrage� /etc/init.d/nom_service start� service nom_service start
� Arrêt� /etc/init.d/nom_service stop� service nom_service stop
83
Arrêt et démarrage du système
� Le système démarre sur le niveau d'exécution par défaut.
� Le niveau par défaut sous Debian est 2, 3 sous CentOS. Il est fixé dans le fichier /etc/inittab.
� Il est fortement déconseillé de mettre 6 comme niveau par défaut ! ( c'est un des tests en réel lors de la certification ).
� Il est possible de démarrer toutefois en mode S ou single user et ensuite d'activer la commande init.
� init 3 fait passer la machine du niveau S au niveau 3�
� Arrêt, les commandes sont nombreuses :
� halt
� shutdown -h 0 une valeur supérieure indique une temporisation en secondes.�
� init 0
� Redémarrage
� reboot
� shutdown -r 0 idem shutdown -h�
� init 6
84
Démarrer manuellement
� Stopper le chargement en tapant une touche.
� Taper "c" sur cet écran pour passer en mode commande de GRUB.
85
Charger un noyau manuellement via grub
� Interrompre le démarrage et passer en mode commande de grub. Voir slide précédent.
� C'est ici qu'on voit l'avantage d'une partition /boot en ext2, car il est ainsi possible de récupérer des données sur un système linux HS.
� Il faut connaître la partition où est situé /boot. Sous grub la commande ls aide a trouver la partition
� Attention clavier qwerty ! La complétion avec tab fonctionne.
� grub> root (hd0,0) autre cas possible : root (hd0,msdos1)�
� grub> kernel /vmlinuz-2.6.32-279.22.1.el6.i686 root=/dev/sda3
� grub> initrd /initrd.img-2.6.32-279.22.1.el6.i686.img
� grub> boot
� Très bon article sur GRUB2 : http://linux.leunen.com/?p=723
86
Clavier QWERTY
87
Principe du chroot
� La commande chroot permet de changer le répertoire racine vers un nouvel emplacement.
� Cette opération peut être utilisée dans divers cas :
� prison : empêche un utilisateur ou un programme de remonter dans l'arborescence et le cantonne à une nouvelle arborescence restreinte.
� changement d'environnement : permet de basculer vers un autre système linux.
� permet après un boot sur live-cd de faire certaines modifications sur un système défectueux comme par exemple changer le mot de passe du root ou ré-installer grub.
88
Changer le système
� Cette technique est le plus souvent utilisée pour récupérer une installation endommagée.
� Booter sur un live-cd ( ubuntu est un bon choix ), passer root avec sudo -i. Il n'y a pas de mot de passe root pour un live-cd
� Monter la partition / ( supposée être sda3 )
� mount /dev/sda3 /mnt
� Monter les dossiers spéciaux /proc et /dev
� mount --bind /dev /mnt/dev
� mount -t proc /proc /mnt/proc
� mount -t sysfs /sys /mnt/sys
� Changez d'environnement
� chroot /mnt
� Il est maintenant possible de travailler sur le système et d'effectuer des corrections.
� Pour quitter l'environnement chroot
� exit
89
Groupes et Utilisateurs
90
Identification et authentification
� L�identification détermine les droits de la personne qui se connecte.
� Un utilisateur est identifié par un login.� L�authentification, c�est apporter la preuve de
qui on est.� L�utilisateur est authentifié par un mot de passe.
91
Utilisateurs du système
� Il existe un super utilisateur ayant tous les droits et aucune restriction root.�
� Certains utilisateurs sont des comptes applicatifs, c'est à dire qu'ils sont utilisés pour lancer un programme. Par exemple apache lance le serveur web httpd.
� Les comptes applicatifs ne sont en général pas autorisés à se connecter shell = /bin/false�
� Il est d'usage de créer d'autres utilisateurs sur le système.
92
Utilisateurs
� Un utilisateur est l�association d�un nom de connexion, le login, à un UID et au moins un GID.
� UID : User ID.
� GID : Group ID.
� Les UID et les GID sont uniques.
� Le login est unique.
� L�UID identifie l�utilisateur (ou le compte applicatif) 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é.
� Ce sont les UID et GID qui sont stockés au sein de la table des inodes, dans la table des processus, etc., et non les logins.
� L�utilisateur dispose des attributs de base suivants :
� un nom de connexion appelé le login ;
� un mot de passe ;
� un UID ;
� un GID correspondant à son groupe principal ;
� un descriptif ;
� un répertoire de connexion ;
� une commande de connexion ;
� D�autres attributs sont disponibles via l�utilisation de la sécurité des mots de passe via shadow
� Ces informations sont stockées dans les fichiers /etc/passwd et /etc/shadow
93
Groupes
� Chaque utilisateur fait partie d�au moins un groupe.
� Un groupe regroupe des utilisateurs. Comme pour les logins, le GID du groupe accompagne toujours l�utilisateur pour le contrôle de ses droits.
� Un utilisateur peut faire partie de plusieurs groupes, auquel cas il faut distinguer son groupe primaire des groupes secondaires.
� Les groupes sont aussi des numéros. Il existe des groupes spécifiques pour la gestion de certaines propriétés du système et notamment l�accès à certains périphériques.
� Le groupe primaire est celui qui est toujours appliqué à la création d�un fichier.
� Si l�utilisateur erik a pour groupe primaire dba, alors les fichiers créés par erik auront comme groupe d�appartenance dba.
� Un utilisateur dispose de tous les droits associés à ses groupes secondaires.
� Si erik a comme groupe secondaire compta et qu�un fichier dispose des droits d�écriture pour ce groupe, alors erik aura le droit de modifier son contenu.
� La commande id permet de connaître les informations essentielles sur un utilisateur : uid, gid, groupes secondaires.
94
Mots de passe
� Les mots de passe permettent d�authentifier les utilisateurs.
� Ils doivent être assez complexes pour ne pas être découverts facilement, mais assez intuitifs pour qu�ils s�en souviennent.
� Les mots de passe sont cryptés (MD5, DES,...) et ne sont pas directement lisibles sous leur forme cryptée par l�utilisateur afin que personne ne puisse tenter de le décrypter via un quelconque traitement.
� Il sont stockés dans le fichier /etc/shadow accessible uniquement par root.
� Un utilisateur devrait changer régulièrement son mot de passe, ne jamais l�écrire quelque part ni le conserver sur lui.
� CentOS dispose d'une fonction de contrôle de la force d'un mot de passe.
� Il est possible d'utiliser Linux pour générer un mot de passe aléatoire
� date +%s | sha256sum | base64 | head -c 8 ; echo
� < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8;echo;
� La commande pwgen permet de générer facilement des mots de passe.
� pwgen 8 5 5 mots de passe de 8 caractères.�
95
Installer pwgen
� pwgen n'est pas packagé directement par CentOS
� Récupérer le paquet sur le Web� wget
ftp://ftp.univie.ac.at/systems/linux/fedora/epel/6/i386/pwgen-2.06-5.el6.i686.rpm
� rpm -hiv pwgen-2.06-5.el6.i686.rpm
96
/etc/passwd
� Contient la liste des utilisateurs du système local.
� Lisible par tous. Les informations qu�il contient sont publiques et utiles tant pour le système que pour les utilisateurs.
� Chaque ligne représente un utilisateur et est composée de sept champs.
� Login:password:UID:GID:comment:homedir:shell� Champ 1 : le login ou nom d�utilisateur.
� Champ 2 : sur les vieilles versions, le mot de passe crypté. Si un x est présent, le mot de passe est placé dans /etc/shadow. Si c�est un point d�exclamation le compte est verrouillé.
� Champ 3 : le User ID.
� Champ 4 : le GID, c�est-à-dire le groupe principal.
� Champ 5 : un commentaire ou descriptif. C�est un champ d�information.
� Champ 6 : le répertoire de travail, personnel, de l�utilisateur. C�est le répertoire dans lequel il arrive lorsqu�il se connecte home directory.�
� Champ 7 : le shell par défaut de l�utilisateur. Mais ce peut être toute autre commande, y compris une commande interdisant la connexion /bin/false.�
97
/etc/group
� Contient la définition des groupes d�utilisateurs et pour chacun la liste des utilisateurs dont il est le groupe secondaire.
� Chaque ligne est composée de quatre champs :
� Group:password:GID:user1,user2,...
� Champ 1 : le nom du groupe.
� Champ 2 : le mot de passe associé. Voyez l�explication juste en dessous.
� Champ 3 : le Group Id.
� Champ 4 : la liste des utilisateurs ( séparés par des virgules ) appartenant à ce groupe.
� Il est inutile de replacer dans le quatrième champ les utilisateurs ayant ce groupe pour groupe principal, c�est induit.
� Il faut par contre mettre l'utilisateur dans ses groupes secondaires.
� Dans la pratique le mot de passe du groupe est très rarement utilisé.
98
Commande adduser� Permet de créer un utilisateur.
� Syntaxe :
� adduser <options> utilisateur
� Exemple
� adduser erik -g dba -G compta -d /home/erik erik
99
Commande passwd
� La commande adduser ne créée pas de mot de passe. Il faut utiliser la commande passwd
� Syntaxe :� passwd erik� Il faut le taper 2 fois.
� Pour changer son mot de passe un utilisateur doit taper l'ancien. En cas de perte seul root peut modifier le mot de passe.
100
Le compte root
� Sous les unix les tâches administratives s'effectuent via le compte root.
� Certaines distribution comme Ubuntu n'utilise pas directement le compte root, mais un filtre via la commande sudo.
� Toutes les tâches administratives ne peuvent être exécutées qu'à travers l'utilitaire d'administration sudo. Exécutée hors-sudo, la tâche est bloquée.
� Lorsqu'un utilisateur tente d'exécuter une tâche administrative sudo vérifie que cet utilisateur a le droit d'effectuer cette tâche. Dans le cas contraire, il bloque la tâche.
101
Commande sudo
� Quand une commande est passée via sudo, le système demande le mot de passe de l'utilisateur.
� Exemple de création d'un utilisateur :� sudo adduser alice� � Donner le mot de passe « ecila »
� Il est toutefois possible sous Ubuntu de devenir root ainsi :� sudo -s� Cette fonction est utile si de nombreuses commandes
demande sudo, ceci réduit la frappe.
102
/etc/sudoers
� Fichier de configuration sudo
� Doit être édité avec visudo� Vérifie la syntaxe
� Permet de gérer un conflit d'édition
� Appel par : sudo visudo� root ALL=(ALL) ALL Pour un utilisateur�
� %admin ALL=(ALL) ALL Pour un groupe�
� Tous les membres du groupe admin disposent des droits root.
� timestamp_timeout = 5 l'appel à sudo est valide 5 minutes.�
� Par défaut 15,
� 0 demande le mot de passe à chaque fois.
� -1 l'appel est valide durant toute la session
103
Exemples sudoers
alice ALL=(ALL) ALL
� User
� Depuis tout poste
� Sous toute identité
� Exécute toute commande
bob ALL=(ALL) /sbin/fsck
� Bob peut lancer la commande fsck
charles UB01=(alice) /usr/local/service
� Charles peut depuis le poste UB01 lancer la commande service sous l'identité de alice.
104
Donner l'accès sudo à un utilisateur
� Par défaut, si on a pas autorisé la connexion directe du root au moment de l'installation, l'utilisateur défini ensuite dispose du droit d'utiliser sudo.
� Pour donner à un utilisateur le droit sudo, celui-ci doit faire partie du groupe admin� adduser alice sudo� usermod -g sudo alice ( si l'utilisateur existe déjà )� Maintenant en se connectant alice, il est possible d'utiliser
sudo.
� Il est possible de définir des droits très fins pour les utilisateurs via le fichier /etc/sudoers
105
/etc/sudoers
� Ce fichier de configuration ne doit jamais être directement édité. Il faut utiliser la commande visudo ainsi :� sudo visudo
Defaults env_resetroot ALL=(ALL) ALL%sudo ALL=(ALL) ALL%admin ALL=(ALL) ALL
� Les instructions sont les suivantes :
identifiant ALL = commande,autrecommande
%groupe ALL = commande,!autrecommande
106
Options de sudo
� Par défaut lors du premier appel via sudo le mot de passe n'est pas redemandé pendant 15 minutes.
� Pour modifier ceci, ajouter l'option timestamp_timeout=X sur la ligne Defaults� Defaultsenv_reset,timestamp_timeout=30
� La durée passe à 30 minutes. Indiquer 0 demand ele mot de passe à chaque appel sudo.
� Afficher des astérisques lors de la saisie du mot de passe : � Defaultsenv_reset,pwfeedback
� « Insulter » l'utilisateur en cas de mauvais mot de passe� Defaultsenv_reset,insults
107
Gestion des données
108
Stockage des données
� DAS� Direct Attachement Storage, 90% des cas.
� Disques reliés à un ou x contrôleurs
� IDE( ATA ), SATA, SCSI, SAS
� NAS� Network Attachement Storage
� Nouveau nom pour serveur de fichiers
� Protocoles : NFS, SMB/CIFS,...
� SAN� Storage Area Network
� iSCSI, GNBD, Fiber Channel
109
Stockage des données
� DAS� Direct Attachement Storage, 90% des cas.
� Disques reliés à un ou x contrôleurs
� IDE( ATA ), SATA, SCSI, SAS
� NAS� Network Attachement Storage
� Nouveau nom pour serveur de fichiers
� Protocoles : NFS, SMB/CIFS,...
� SAN� Storage Area Network
� iSCSI, GNBD, Fiber Channel
110
Support de stockage
� Le support de masse le plus utilisé est le disque dur.
� Capacité importante à ce jour 4To.
� Prévision pour 2022 60To pour disque 3,5"�
� Peu onéreux en technologie SATA, la plus courante, une moyenne de 60 � / To.
� Temps d'accès moyen 10ms 10�-3
� L'accès moyen en RAM est de 10ns 10�-9
� Une opération demandant 1 seconde en RAM demandera donc 1 000 000 de secondes sur disque soit 11 jours et demi !
111
Disque Dur
112
Performances disques durs
� En fonction de nombreux paramètres :
� Vitesse de rotation en tours par minutes.
� 5 400,
� 7 200,
� 10 000,
� 15 000.
� Interface
� IDE
� SATA
� SCSI
� SAS
� Position de l'information sur le disque. Les zones externes sont plus rapides HOT et COLD zones�
113
Durée de vie
� Composant mécanique en mouvement constant Usure.�
� En théorie la durée de vie est de 85 ans !� En pratique 3 à 5 ans.
� Les disques durs doivent donc faire l'objet de protection par la redondance RAID�
114
Système de fichiers
115
Principes général
� Formater un disque consiste à préparer son organisation en vue du stockage des données.
� Le principe de base est d�associer un nom de fichier à son contenu et d�y permettre l�accès :
� création,
� modification,
� suppression,
� déplacement,
� ouverture,
� lecture,
� écriture,
� fermeture.
� Suivant ce principe, le système de fichiers doit gérer ce qui en découle :
� Mécanismes de protection des accès (les permissions, les propriétaires),
� Les accès concurrents, etc.
116
Représentation
� Outre l�organisation et le stockage des informations et des données sur les fichiers, le système de fichiers doit fournir à l�utilisateur une vision structurée de ses données, permettant de les distinguer, de les retrouver, de les traiter et de les manipuler, par exemple sous forme de fichiers au sein d�une arborescence de répertoires avec les commandes associées.
� De même, chaque système de fichiers doit fournir le nécessaire pour que les programmes puissent y accéder.
� Un système de fichiers linux est organisé sous forme d�un arbre de répertoires et de sous-répertoires à partir d�une racine commune.
� C�est une arborescence.
� Chaque répertoire fait partie d�une organisation et propose lui-même une organisation.
� Le système de fichiers dispose d�une hiérarchie ordonnée.
� L�arborescence elle-même peut être répartie sur plusieurs supports et systèmes de fichiers.
117
Méta-données
� Un fichier est décrit par des propriétés appelées les méta-données.
� Sous Linux, il s�agit de l�inode.
� Le contenu est placé dans d�autres blocs du support de stockage.
� Le contenu des méta-données diffère d�un système de fichiers à un autre.
� Sous Linux on retrouve :
� les droits ;
� les dernières dates d�accès et de modification ;
� le propriétaire et le groupe ;
� la taille ;
� le nombre de blocs utilisés ;
� le type de fichiers ;
� le compteur de liens ;
� un arbre d�adresses de blocs de données.
� La commande stat permet de lire l'inode d'un fichier
�
118
Noms de fichiers
� Les noms peuvent avoir une longueur de 255 caractères.
� L�extension n�a pas d�existence en tant que composante du système de fichiers contrairement à ce qui se passe sous Windows.
� Le type du fichier est déterminé par son contenu, notamment les premiers octets permettant de déterminer le type MIME.
� La commande file est utile pour cela
� file /etc/passwd Fichier texte�
� file /usr/local/bin/hello Executable binaire�
� file /usr/share/backgrounds/simple_waves.jpg image JPEG�
� L�extension n�est qu�une simple composante du nom du fichier, et incluse dans les 255 caractères.
� Elle est surtout utile pour que l�utilisateur différencie rapidement les fichiers entre eux.
� Les noms des fichiers Unix ne sont pas placés dans les méta-données mais dans une table de catalogue.
� C�est pour ça qu�il est possible de donner plusieurs noms à un même fichier.
119
Fichiers journalisés
� Les systèmes de fichiers actuels disposent souvent de mécanismes permettant de garantir au mieux l�intégrité des données.
� Le système le plus courant est la journalisation.
� Le système de fichiers maintient à jour un journal, généralement d�une taille donnée et circulaire dans lequel il trace tous les changements intervenus avant de les effectuer réellement.
� En cas de coupure brutale, le système pointe les enregistrements du journal et vérifie si les opérations ont été effectuées, éventuellement il les rejoue.
� Le journal contient des opérations atomiques (n opérations indivisibles) et donc même si celui-ci est incomplet, la cohérence des données est assurée soit par complétion du journal quand c�est possible, soit par retour en arrière.
� La réparation est donc bien plus fiable et rapide.
120
Systèmes de fichiers sous Linux
� Il en existe un grand nombre.� ext2� ext3/ext4� xfs, jfs� reiserfs� �
� Linux gère les fichiers FAT ( MSDOS ) et NTFS ( Windows )
121
ext2
� Le système de fichiers historique de Linux.
� Ext2 est le premier système de fichiers développé spécifiquement pour Linux.
� Prévu dès le début pour supporter les rajouts de fonctionnalités, il continue depuis 1993 à être utilisé et amélioré.
� Ext2 n�est pas journalisé.
� Bien que disposant d�un successeur (ext3), il est toujours utilisé voire conseillé dans certains cas. ( partition /boot, clé USB )
� Il est rapide et nécessite moins d�écritures que les autres, donc il occasionne moins d�usure des supports de stockage, notamment les disques SSD, les clés USB ou les cartes mémoire.
� Ces supports peuvent parfois ne supporter qu�un nombre restreint de cycles de lecture/écriture...
� Les fichiers peuvent avoir jusqu�à une taille de 2To (2048 Go), tandis qu�une partition peut atteindre 32 To, voire 128 To , selon la taille des blocs et l�architecture.
122
ext3
� Successeur de ext2 depuis 1999.
� Il est journalisé.
� Entièrement compatible avec ext2. Le journal est une extension de ext2.
� Il est possible d�utiliser un système de fichiers ext3 comme étant ext2, avec les mêmes commandes, les mêmes manipulations.
� Il est possible de transformer en quelques secondes un système ext2 en ext3, et vice versa.
� C�est l�un des systèmes de fichiers de choix pour Linux, et le plus utilisé pour sa souplesse.
� Comme pour ext2, la taille maximale des fichiers est de 2 To, et celle d�une partition de 32 To, suivant les mêmes restrictions.
123
ext4
� ext4 est le successeur du système de fichiers ext3.
� Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que Btrfs.
� Toutefois, ext4 est une étape utile et non une simple solution temporaire.
� La fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contiguë pour un fichier, pour minimiser la fragmentation.
� La majorité des distributions actuelles formatent par défaut en ext4.
124
reiserfs
� Sa force réside, outre dans son journal, dans l�organisation indexée des entrées des répertoires et la manipulation des fichiers de petite taille.
� Ses performances sont exceptionnelles en présence de milliers de fichiers, de faible à moyen volume.
� Il est redimensionnable à chaud.
� Il devient plus lent sur des gros fichiers.
� Les fichiers peuvent atteindre 8 To, et les partitions 16 To.
� Les noms de fichiers peuvent avoir 4032 caractères mais sont limités par Linux à 255 caractères
� reiserfs est moins utilisé malgré ses fortes qualités pour diverses raisons dont la principale est l�impossibilité de convertir un système de fichiers ext2/ext3 en reiserfs et vice versa, et ce à cause de la forte base de machines installées en ext2/ext3.
� Son développement est à ce jour stoppé en raison de l'incarcération de son créateur...
125
xfs
� xfs est le plus ancien des systèmes de fichiers journalisés sous Unix, datant de 1993.
� Créé par Silicon Graphics il a été porté sous Linux en 2000.
� Outre ses capacités de stockages encore inimaginables aujourd�hui, il a un système de journalisation très performant et des mécanismes avancés comme la défragmentation en ligne (à chaud et au fur et à mesure des écritures), la capacité d�effectuer des snapshots (figer l�état d�un filesystem à un instant t pour le restaurer plus tard), le dimensionnement à chaud, la réservation de bande passante pour les entrées et sorties, etc.
� La taille maximale théorique des fichiers est de 8 Eo (Exaoctets).
� Sachant que 1 Eo vaut 1024 Po (Petaoctet) donc 1048576 To, soit, rendu à une unité plus appréhendable, environ 1000 milliards de DVD.
� La partition peut atteindre 16 Eo, soit la capacité maximale d�un contrôleur sur 64 bits.
� En 32 bits, les tailles sont « limitées » à 16 To.
� L�utilisation de xfs est encore peu étendue sous Linux peut-être à cause de sa prétendue complexité pour un paramétrage avancé, mais aussi parce que Red Hat n�a pas de support officiel pour ce système de fichiers.
126
BTRFS
� Se prononce ButterFS, système de fichiers expérimental développé conjointement par Oracle, Red Hat, Fujitsu, Intel et SUSE.
� Il est présenté comme le futur standard sous linux.
� BTRFS reprend la notion extend de ext4 et apporte surtout la gestion de instantanés « snapshots ».
� Un instantané offre la possibilité de « prendre une photographie » à un instant donné d'un système de fichiers afin de le sauvegarder.
� Gère une notion de « sous-volumes » autorisant, au sein du système de fichiers, d'avoir un arbre séparé (y compris la racine) contenant des répertoires et des fichiers.
� Ce dernier principe permet une meilleure isolation que le classique chroot.
127
Linux et les systèmes de fichiers
� La liste précédente est loin d'être exhautive.
� La force de linux est de proposer la gestion d'un grand nombre de système de fichiers.
� Il est très simple de partager une partition NTFS entre linux et Windows sur une même machine.
128
Le partionnement
� Déjà évoqué, le partionnement d'un disque dur est un fonctionnalité pouvant être simple ou complexe.
� Linux ne demande que 2 partitions
� / ou racine dite "root"
� swap utilisée en cas de manque RAM.
� L'utilisation de la swap est facultative car les capacité mémoire sont maintenant élevée ( 4Go est un standard ).
� Certains logiciels exige une zone de swap, par exemple Oracle, même si ils ne l'utilisent pas.
� Partitionner un disque permet d�accroître la sécurité mais aussi de faciliter la maintenance voir la sauvegarde en cas de défaillance.
� La commande Linux la plus utilisée est fdisk.
129
La commande fdisk
� Permet de manipuler les partitions
� Outil basique et interactif, ne permet pas de redimentionner les partitions� fdisk -l /dev/sda Donne la liste des partitions�
� fdisk /dev/sda Gère les partition d'un disque.�
� L'utilitaire parted ou gparted permet de redimentionner les partitions
� La commande partprobe permet de relire la table des partitions d'un disque pour éviter le reboot.
� Le package parted comporte ces commandes.� yum install parted
130
Créer un système de fichier
� La commande mkfs
� Syntaxe :
� mkfs -t typefs options périphérique
� C�est typefs qui détermine le type de système de fichiers et donc le programme appelé.
� Il existe un programme par type de système de fichiers :
� ext2 : mkfs.ext2
� ext3 : mkfs.ext3
� reiserfs : mkfs.reiserfs
� vfat : mkfs.vfat pour tous les formats FAT�
� ntfs : mkfs.ntfs
131
Monter un système de fichier
� La commande mount permet d�accéder aux périphériques de type blocs (les partitions) sur lesquels un système de fichiers existe.
� La commande mount attache le répertoire racine du système de fichiers à un répertoire pré-existant appelé point de montage .� mount -t typefs -o options périphérique
point_de_montage
132
/etc/fstab
� Le fichier /etc/fstab contient une configuration statique des différents montages des systèmes de fichiers.
� Il est appelé à chaque démarrage du système car c�est ici qu�on indique les périphériques et leurs points de montage.
� Il contient six champs.
� périphérique point_de_montage typefs options dump fsck
� Les champs sont séparés par des espaces ou des tabulations.
� Sa lecture est assurée par la commande mount -a
133
Protection des disques
� Les disques durs sont des éléments mécaniques sujet à l'usure.
� En tant que mémoire de masse garantir la fiabilité des données sur disques est primordial.
� Les sauvegardes permettent de récupérer des informations en cas de crash.
� Le problème, c'est que les données entre deux sauvegardes peuvent être perdues. Il existe un mécanisme de protection supplémentaire des disques : Le RAID.
134
RAID
135
Technologie RAID
� Redundant Array Inexpensive Disks
� Redundant Array Independent Disks
� Organisation en niveau 0,1,...� Certains niveaux de RAID ne sont pas utilisés ou peu diffusés �
RAID 2, 3, 4...
� Basé sur la parité ou/et la redondance
� Les plus courants :� RAID 0 ou Linéaire, option Striping
� RAID 1 ou Mirorring
� RAID 5
� RAID 0+1 ou 10
136
RAID 0
100Go 100Go 100Go
100Go 100Go 100Go
LINEAIRE
STRIPING
Largeurdu stripeEx : 64ko
� Les capacités disques s'additionnent 300Go�
� Striping très performant.�
� Sécurité nulle : perte d'un disque perte totale.�
137
RAID 1 - Miroir
100Go100Go
� Nombre pair de disques.
� Capacité = n disques / 2 100Go�
� Performant en lecture
� Plus lent en écriture� Permet la perte d'un disque
138
RAID 5
100Go
100Go 100Go
Zone deparité
�C'est le niveau de RAID le plus connu et le plus populaire.�Exige un minimum de 3 disques.
139
Principe du RAID 5
� 3 disques ou plus
� Capacité égale à n disques -1
� Permet la perte de 1 disque
� Utilise le calcul de parité basé sur l'opérateur logique XOR afin de reconstituer les données du disque perdu.
� Le niveau de RAID le plus utilisé.
� Économique, rapide en lecture, mais plus lent en écriture recalcul de la parité.�
� Certains logiciels comme Oracle proscrivent le RAID5.
140
XOR
� Appelé aussi OU Exclusif
� Table de vérité
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
141
Calcul de la parité
101 010 011
XOR
100
XOR
111
100
Disque 1 Disque 2 Disque 3 Disque 4
142
Perte du disque 2
101 010 011 100
Disque 1 Disque 3 Disque 4Disque 2
XOR
110
XOR
010
143
RAID 10
100Go
� Miroir puis Striping
� 4 disques minimum. Capacité = n disques / 2 200Go Cher.� �
� Très performant, combine l'avantage du Striping et du mirroir.
� Permet la perte de 2 disques
100Go
100Go 100Go
Bande de stripe
144
RAID 0+1
100Go
� Striping puis Miroir, coût et capacité égale au RAID 10
� Moins performant que RAID 10
� Permet la perte de 2 disques
100Go
100Go 100Go
Bande de stripe
145
Implanter le RAID
� Le RAID peut être matériel ou logiciel
� Le RAID matériel, via une carte dédiée, est plus performant rapport 30%�
� Le RAID logiciel est éconnomique et utilisable sur toute distribution Linux commande mdadm�
� L'utilisation de LVM permet aussi de gérer le RAID.
� Certaines cartes mère intègrent au niveau du BIOS des fonctions RAID. Ce principe est nommé fakeraid qui est en fait une solution semi-matérielle.
� L'utilisation des fakeraid est sujette à caution.
146
Gestion du RAIDlogiciel
� Commande mdadm
� Permet la gestion complète du RAID logiciel sous Linux.
� Installation sur CentOS� yum -y install mdadm
147
Simulation des disques
� Créer un répertoire pour les disques� mkdir /home/disksraid
� Créer deux fichiers de 10M� dd if=/dev/zero of=/home/disksraid/disk1 bs=1M count=10� dd if=/dev/zero of=/home/disksraid/disk2 bs=1M count=10
� Créer les périphériques associés aux disques� losetup -f /home/disksraid/disk1
� losetup -f /home/disksraid/disk2
� Vérification� losetup -a
148
Création d'un RAID1
� Création du RAID 1� mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/loop0
/dev/loop1
� Formatage et montage� mkfs -t ext3 /dev/md0
� mkdir /u01
� mount /dev/md0 /u01
� Affichage de la configuration� mdadm --detail /dev/md0
� La commande suivante donne aussi des informations sur le RAID� cat /proc/mdstat
149
Simulation perte de disque
� Supprimer un des disques du RAID
� mdadm --fail /dev/md0 /dev/loop1
� mdadm --detail /dev/md0
� � le disque 2 est perdu
� mdadm --remove /dev/md0 /dev/loop1
� mdadm --detail /dev/md0
� � le disque 2 est retiré du RAID
� Ajout d'un nouveau disque
� dd if=/dev/zero of=/home/disksraid/disk3 bs=1M count=10
� losetup -f disk3
� losetup -a disk3 = /dev/loop2�
� mdadm --add /dev/md0 /dev/loop2
� mdadm --detail /dev/md0
150
Supprimer un RAID
� umount /dev/md0
� mdadm --stop /dev/md0� mdadm --remove /dev/md0
� Supprimer les devices loopback� losetup -d /dev/loop0� losetup -d /dev/loop1� losetup -d /dev/loop2
151
Exercice
� Créer un volume RAID en niveau 5 sur 4 disques d'une capacité de 10Mo
� Monter le volume RAID obtenu et créer un fichier de test sur ce volume
� Simuler la perte du disque 2 du RAID� Vérifier l'accès correct au fichier malgré la
perte.� Reconstruire le RAID avec un disque neuf.
152
153
LVM
� Logical Volume Manager
� Permet de rendre transparent les disques physiques de leurs utilisation en partitions.
� Les disques physiques sont regroupés en groupes de volumes découpés en volumes logiques.
� L'intérêt de LVM est de pouvoir augmenter ou diminuer dynamiquement une partition sans perte de données.
� Les distributions Linux actuelles permettent de configurer LVM dès l'installation.
154
Logical Volume Manager
/dev/sdb100Go
/dev/sdc100Go
vg01 : 200Go
lvol1 : 130Go Libre : 70Go
/dev/vg01/lvol1 en ext3 monté sur /u01
Volumes PhysiquesPV
Groupes de VolumesVG
Volumes LogiquesLV
File-System
155
Agrandissement
/dev/sdb100Go
/dev/sdc100Go
vg01 : 300Go
lvol1 : 130Go Libre : 170Go
/dev/vg01/lvol1 en ext3 monté sur /u01
/dev/sdd100Go
lvol1 : 130Go + 120Go = 250Go Libre : 50Go
Rajout d'un PV
Agrandissement du VG
Agrandissement du LV
Agrandissement du File-System
156
Exemple LVM
� Simulation de disques� mkdir /home/disks
� dd if=/dev/zero of=/home/disks/disk01 bs=1M count=100
� dd if=/dev/zero of=/home/disks/disk02 bs=1M count=100
� dd if=/dev/zero of=/home/disks/disk03 bs=1M count=100
� losetup /dev/loop0 /home/disks/disk01
� losetup /dev/loop1 /home/disks/disk02
� losetup /dev/loop2 /home/disks/disk03
157
Création des Volumes Physiques
� Commande : pvcreate� pvcreate /dev/loop0� pvcreate /dev/loop1� pvcreate /dev/loop0
� Affichage des infos pvdisplay�
--- NEW Physical volume ---PV Name /dev/loop0VG Name PV Size 100,00 MBAllocatable NOPE Size (KByte) 0Total PE 0Free PE 0Allocated PE 0PV UUID O1FZQQ-kan8-3FsW-O5mn-xBpS-3lgF-Kg9V8h
158
Création du Groupe de Volumes
� Commande : vgcreate
� vgcreate vg01 /dev/loop0 /dev/loop1
� Affichage des infos vgdisplay�
--- Volume group ---VG Name vg01System ID Format lvm2Metadata Areas 2Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 2Act PV 2VG Size 192,00 MBPE Size 4,00 MBTotal PE 48Alloc PE / Size 0 / 0 Free PE / Size 48 / 192,00 MBVG UUID WasK95-Q0ON-ajFM-yYkz-iCNV-QAnw-yslE8H
159
Création du Volume Logique
� Commande : lvcreate� lvcreate -n lvol1 -L 130M vg01
� Affichage des infos lvdisplay�
--- Logical volume ---LV Name /dev/vg01/lvol1VG Name vg01LV UUID 3N2Lof-fGUK-wsaX-LJux-A3Le-OVqV-T113dxLV Write Access read/writeLV Status available# open 0LV Size 132,00 MBCurrent LE 33Segments 2Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0
160
Formatage et montage du File-System
� mkfs -t ext3 /dev/vg01/lvol1
� mkdir /u01
� mount /dev/vg01/lvol1 /u01
� Visualisation par df -h Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur/dev/sda3 1,9G 287M 1,6G 16% //dev/sda9 965M 18M 898M 2% /tmp/dev/sda5 9,5G 151M 8,9G 2% /opt/dev/sda10 119G 4,4G 109G 4% /home/dev/sda8 1,9G 165M 1,7G 9% /var/dev/sda6 4,8G 1,6G 3,0G 34% /usr/dev/sda7 4,8G 139M 4,4G 4% /usr/local/dev/sda1 99M 15M 80M 16% /boottmpfs 440M 0 440M 0% /dev/shmnone 440M 128K 440M 1% /var/lib/xenstored/dev/mapper/vg01-lvol1 128M 5,6M 116M 5% /u01
161
Agrandissement du File-System
� Ajouter le troisième disque au VG� vgextend vg01 /dev/loop2
� Augmenter le volume logique de 120M� lvextend -L +120M /dev/vg01/lvol1
� Agrandir le file-system� resize2fs -f -p /dev/vg01/lvol1
� df -h…
/dev/mapper/vg01-lvol1 245M 6,1M 226M 3% /u01
162
Fichier de configuration LVMSauvegarde et restauration
� Les métadonnées LVM sont stockées sous /etc/lvm/backup.
� Exemple : /etc/lvm/backup/vg01
� A chaque modification une archive est crée sous /etc/lvm/archives
� Sauvegarde� vgcfgbackup vg01 : les sauvegardes sont sous /etc/lvm/archive
� vgcfgbackup -f /home/vg01.cfg vg01 : permet de spécifier un fichier de sauvegarde différent.
� Restauration
� vgcfgrestore : utilise la dernière sauvegarde
� vgcfgrestore -f /home/vg01 : utilise un fichier donné.
� vgcfgrestore --list vg01 2>/dev/null | more liste les sauvegardes �
disponibles.
163
Le Shell
164
164
Le shell bash
� Bourne Again SHell
� Extension du shell historique Bourne Shell� Créé en 1977 par Steve Bourne� Encore très utilisé, appelé communément : sh� Par convention les scripts système sous toujours en
Bourne Shell
� BASH approrte des fonctionnalités héritées du Korn Shell et du C-Shell
� Standard et affecté par défaut sous Linux.
165
165
Fichiers de configuration bash
� Le shell est lancé juste après la connexion de l'utilisateur.
� Il existe plusieurs fichiers contenant des instructions de configuration qui sont lus dans cet ordre.
� /etc/profile, générique pour tous
� La tilde ( ~ ) représente le répertoire courant de l'utilisateur.
� ~/.bash_profile ou ~/.profile si le premier n'existe pas. les instructions de ce fichiers sont valides pour la session.
� ~/.bashrc. les instructions sont valides pour chaque shell et non par session.
� Il existe aussi un fichier ~./bash_history, qui contient l'historique des 500 dernières commandes et lisible par la commande history.
166
Les mécanismesdu shell
167
Les commandes
� Une commande linux peut être :� interne� externe
� Une commande interne est intégrée au processus shell. Elle est exécutée dans le shell courant.
� Une commande externe correspond à un fichier de l�arborescence. La commande est exécutée par un shell enfant fork�
� Une même commande peut avoir une implantation interne et externe. Dans ce cas la commande interne est prioritaire.
168
Commandes internes/externes
� file et type permettent d�obtenir des informations sur une commande.� file /bin/ln binaire�
� file /etc/init.d/halt script�
� type cd primitive du shell�
� type ln ln est /bin/ln�
� La commande pwd est interne mais possède une implantation externe� type pwd interne�
� type /bin/pwd /bin/pwd est /bin/pwd�
169
Les alias
� Ils permettent de renommer ou de simplifier une commande.
� Un alias est prioritaire sur toute commande� alias cd=�ls� la commande cd appelle ls�
� unalias cd désactive l�alias.�
� type peut être utilisée pour déterminer si une commande est un alias.� type ls ls est un alias vers « ls --color=auto »�
� Appelée sans arguments la commande alias liste tous les alias définis.
170
Affichage à l�écran
� Lors de l�écriture de scripts, il est parfois nécessaire d�afficher des informations à l�écran. La commande echo permet cette action� echo Vous apprenez le bash !
� Certains caractères, lorsqu�ils sont placés entre quotes, simples ou doubles, ont une signification particulière Caractère d'échappement�
� Il faut utiliser la commande echo avec l�option -e pour que les caractères d�échappement soient correctement interprétés par le shell.
171
La commande echo
� Le caractère \n provoque un saut de ligne� echo -e "Voici la première ligne\n et voici la seconde"� Testez la même commande sans l�option -e.
� La caractère \c supprime le saut de ligne en fin de commande echo.� echo "Première ligne" ; echo "Seconde ligne"� echo -e "Première ligne\c" ; echo "Seconde ligne"
� L�option -n de la commande echo produit le même effet que \c� echo -n "Première ligne" ; echo "Seconde ligne"
172
Liste des autres caractères d�échappement
� \\ antislash�
� \a sonnerie�
� \b efface le caractère précédent�
� \f saut de page�
� \t tabulation horizontale�
� \v tabulation verticale�
� \0xxx caractère quelconque exprimé en octal�
� echo -e "Vous me devez 10\0044" 044 = $�
173
La caractère tilde ~
� Il symbolise le répertoire courant de l�utilisateur.
� Soit un utilisateur erik et son répertoire /home/erik.
� La commande suivante copie un fichier script1.sh de /tmp dans /home/erik� cp /tmp/script1.sh ~
� Recopier le même fichier sous le répertoire /home/erik/docs� cp /tmp/script1.sh ~/docs
� Si le caractère ~ est suivi directement d�un mot, ce mot est considéré comme un nom d�utilisateur� cp /tmp/script1.sh ~alice /home/alice�
� Fonctionne si les droits sont correctement positionnés.
174
La commande cd
� Utilisée sans argument elle fait revenir l�utilisateur dans son répertoire courant home directory.�
� Ces deux commandes sont équivalentes� cd� cd ~
� Avec l�option "-" cd retourne au répertoire précédent� cd /tmp� cd /bin� cd -� pwd /tmp�
175
Séparateur de commandes
� Déjà présenté plus haut, le caractère ";" permet d�écrire plusieurs commandes sur une même ligne.
� Les commandes sont exécutées séquentiellement� mkdir monrep; cd monrep; pwd �
/home/erik/monrep
� Il ne faut pas abuser de ce type d�écriture qui nuit à la lisibilité d�un script et doit être réservé à des commandes très courtes.
176
Redirections
� Largement utilisées sous Linux. Les plus courantes sont :� entrée standard le clavier 0� �
� sortie standard l�écran 1 � �
� sortie erreur standard l�écran 2� �
� Les redirections permettent d�utiliser des fichiers pour lire données ou pour récupérer des résultats.
177
Redirection de la sortie standard en écriture
� La redirection en écriture permet d�envoyer les affichages non plus vers l�écran, mais dans un fichier.
� La redirection peut être simple ou double
� Exemple de redirection simple� ls > resultat.txt ls 1> resultat.txt�
� cat resultat.txt
� Si le fichier resultat.txt n�existe pas, il est créé. Sinon, il est écrasé.
� Exemple de redirection double� date >> resultat.txt
� cat resultat.txt
� Le résultat de la commande date est ajouté à la fin du fichier resultat.txt.
� Si le fichier resultat.txt n�existe pas, il est créé. La double redirection évite l�écrasement.
178
Redirection de la sortie erreur en écriture
� Cette fonctionnalité est très utile afin de tracer les erreurs d�une commande indépendamment de ses résultats.
� La commande suivante peut, selon les droits de l�utilisateur, générer des erreurs.� find / -name passwd 2> erreur.txt
� cat erreur.txt
� Comme précédement, il est possible d�utiliser la redirection double� ls -z 2>> erreur.txt
� L�option -z n�existe pas, mais le message d�erreur est écrit en fin de fichier.
179
Combiner sortie standard et sortie d�erreur standard
� Il est possible de rediriger plusieurs descripteurs sur une même ligne de commande.� find / -name passwd 1> resultat.txt 2> erreur.txt
� Parfois, les messages d�erreurs ne sont pas souhaités. Un fichier spécial nommé /dev/null qui permet de faire disparaître les affichages.� find / -name passwd 1> resultat.txt 2> /dev/null
180
Rediriger les descripteurs 1 et 2 vers le même fichier
� Dans un premier temps, la commande venant à l�esprit peut être� commande 1> fichier 2> fichier ou encore� commande 1> fichier 2>> fichier
� Ceci ne fonctionne pas !
� Le problème ne réside pas dans le fait que l�on ouvre deux fois le même fichier (ce qui est possible ), mais qu�il y a un offset (position courante dans le fichier) associé à chaque ouverture.
� Il faut utiliser la syntaxe suivante :� commande 1> fichier 2>&1
181
Redirection de l�entrée standard� La redirection de l�entrée standard concerne les commandes qui
utilisent le descripteur 0 saisie au clavier.�
� mail erik
RDV au restaurant vers 13h
Alice
^d
� La commande mail lit l�entrée standard jusqu�à réception d�une fin de fichier ^d. Les données saisies seront envoyées dans la boîte aux �
lettres de l�utilisateur erik.
� Si l�on souhaite faire lire à la commande mail, non plus le clavier, mais le contenu d�un fichier, il suffit de connecter le descripteur 0 sur le fichier désiré.
� cat message.txt
RDV au restaurant vers 13h
Alice
� mail erik < message.txt
182
La double redirection en lecture
� Elle est principalement utilisée dans les scripts shell.
� Elle permet de connecter l�entrée standard d�une commande sur une portion du script.
� On emploi aussi le terme de here-script
� mail erik <<FIN
RDV au restaurant vers 13h
Alice
FIN
� Le mot FIN est une étiquette, qui marque la fin des données à lire.
� L�étiquette est un mot quelconque. Les conventions disent de l�écrire en majuscule.
� Il ne faut pas d�espace entre << et l�étiquette.
183
Créer un fichier avec la double redirection en lecture
� Il s'agit d'une fonction très utilisée dans les scripts.
� Par exemple créer un fichier des alias
� Fichier alias.sh� #!/bin/bash� cat <<EOF > alias.cmd� alias df='df -h'� alias ll='ls -hl'� EOF
� sh ./alias.sh; cat alias.cmd
184
Tubes de communication
� Un tube ou pipe en permet de faire communiquer deux processus.
� Le tube est représenté par une barre verticale "|" et placé entre deux commandes
� Le résultat de la commande de gauche va partir dans le tube, tandis que la commande de droite va en extraire les données afin de les traiter.
� Exemple� ps -ef | grep -i bash
� Cette commande est equivalente à :� ps -ef > resultat.txt
� grep -i bash < resultat.txt
� Le tube est un des mécanismes les plus utilisés du shell et sera vu plus largement avec sed et awk.
185
Dupliquer les sorties
� La commande tee permet de visualiser un résultat à l�écran et de le conserver également dans un fichier.
� La commande tee affiche sur sa sortie standard les lignes extraites du tube et les écrit également dans le fichier listefichiers.txt.
� Si listefichiers.txt existe déjà, il est écrasé� ls | tee listefichiers.txt
� Pour ajouter à listefichiers.txt avec la commande tee il faut utiliser l�option -a� date | tee -a listefichiers.txt
186
Processus en arrière-plan
� Les notions d�arrière-plan et d�avant-plan sont gérées par le shell.
� Par défaut, les commandes sont lancées en avant-plan. Dans ce mode, le shell attend la fin de la commande avant de rendre la main.
� Le caractère & est un caractère spécial du shell qui permet de lancer la commande en arrière-plan.
� Le shell lance la commande et réaffiche immédiatement son prompt en attente d�une nouvelle commande.
� Comme le shell et la commande s�exécutent en parallèle et qu�ils sont tous deux liés au même terminal, il est conseillé de rediriger les sorties de la commande.
� Exemple
� find / -name passwd 1> resultat.txt 2> /dev/null &
� La commande jobs, permet de visualiser les commandes lancées en arrière plan.
187
La commande nohup
� Si une commande est très longue, il peut être intéressant de la lancer en arrière plan et de se déconnecter ensuite.
� Le problème est que la déconnexion supprime tous les processus. Pour éviter cela il est possible d�utiliser la commande nohup.
� Exemple� nohup find / -name passwd 1> resultat.txt 2> /dev/null &
� Si aucune redirection n�est faite dans la commande, l�ensemble des sorties écran est redirigé par défaut dans un fichier nohup.out.
188
Variables d�environnement
� Un certain nombre de variables sont définies dans l�environnement du shell.
� Elles contiennent des informations nécessaires au fonctionnement de l�interpréteur et/ou des commandes lancées à partir de celui-ci.
� La commande env donne la liste des variables définies dans le shell courant.
� Le caractère spécial $ du shell permet de récupérer le contenu d�une variable.
� Exemple� echo $HOME
189
Modification de la valeur d�une variable
� Le shell permet d�initialiser ou de modifier des variables.
� Exemple� variable=valeur� echo $variable� valeur
� Il ne faut pas mettre d�espace autour du signe =
� Si la valeur contient des caractères spéciaux du shell ($, >, espace...), il faut empêcher le shell d�interpréter ceux-ci en entourant la valeur avec des simples quotes.
190
Exportation des variables
� Les variables définies au niveau du shell ne sont pas transmises aux commandes lancées à partir de celui-ci.
� Pour qu�elles le soient, il faut demander au shell de les exporter.
� Un certain nombre de variables sont exportées par défaut �
commande env
� Une variable exportée au niveau d�un shell sera transmise à tous les sous-processus, quel que soit le niveau de descendance.
� Syntaxe
� export variable
� export variable=valeur
191
Exercice
� L�option "-type d" de la commande find permet de lister uniquement les répertoires.
� Ecrire sur une seule ligne une commande listant tous les répertoires sous /tmp et en envoyant le résultat dans un fichier situé sous votre home directory et vers l�écran puis ajouter à ce fichier la date système.
192
Solution
� find /tmp -type d 2>/dev/null | tee $HOME/rep_tmp.txt ; date >> $HOME/rep_tmp.txt
193
Scripts Shell
194
Définition
� Un script shell est un fichier texte, qui commence toujours par #!/bin/bash ( sheebang ) et qui doit être rendu exécutable pour pouvoir s'éxécuter.
� Exemple� vi bonjour.sh
#!/bin/bash
#Un script tout simple.
echo "Bonjour, le monde"
� chmod u+x bonjour.sh
� ./bonjour.sh
� Le # en début de ligne indique des commentaires, la seule exception est #! qui indique l�emplacement du shell utilisé par le script.
� Il est possible de procéder ainsi :� sh ./bonjour.sh évite le chmod.�
195
Scripts de démarrage
� Il s�agit de scripts qui sont lancés lors du démarrage de la machine en fonction du niveau d'exécution souhaité.
� Ils sont par convention écrits en Bourne Shell et situés dans le répertoire /etc/init.d
� Il existe 7 niveaux d�exécution d�une machine linux ( 0 à 6 ). Pour chaque niveau il existe sous /etc un répertoire rcn.d, n correspondant au niveau d�exécution.
� Sous ces répertoires, les fichiers sont en fait des liens symboliques vers /etc/init.d débutants par S ou K selon qu�ils doivent être démarrés, S comme start ou stoppés, K comme kill au niveau d�exécution demandé.
� Le tout premier shell exécuté sous Centos est /etc/rc.d/rc.sysinit
196
Niveaux d�exécution historiques
� 0 : arrêt électrique
� 1 : Mode mono utilisateur
� 2 : Multi-utilisateurs sans NFS
� 3 : Multi-utilisateurs avec NFS
� 4 : Non utilisé
� 5 : Multi-utilisateurs et X11
� 6 : Redémarrage
� Dans la plupart des distributions Linux actuelles les niveaux 2 à 5 sont identiques.
� Le niveau d�exécution par défaut est positionné dans le fichier /etc/inittab
� id:3:initdefault:
197
Lancement manuel d�un script de démarrage
� Un script de démarrage peut être lancé de plusieurs manières� /etc/init.d/mon_script start | stop� service mon_script on | off
� Pour cela il doit répondre à une norme d�écriture.
� Voir un exemple :/usr/share/doc/initscripts-9.03.23/sysvinitfiles
198
La commande chkconfig
� Cette commande permet d�activer ou de désactiver un service au démarrage.
� Elle permet aussi via l�option --list de visualiser la configuration.
� Une fois le script écrit, il faut l�ajouter au système de démarrage par
� chkconfig --add mon_script
� chkconfig --del mon_script pour le retirer
� Il faut ensuite programmer ses niveaux d�arrêt et de démarrage
� chkconfig mon_script on
� Par défaut le script est démarré aux niveaux 2,3,4 et 5 et stoppé aux niveaux 0,1 et 6
� Il est possible d�obtenir une plus grande finesse avec l�option --level.
� La commade chkconfig est une spécificité RedHat, sous Debian la commande équivalente est update-rc.d
199
Planification
200
CRON
� Le programme cron permet de lancer une tâche à un instant donné dans le temps.
� Il permet aussi la mise en place d'une tâche récurente.
� Par exemple exécuter un programme de sauvegarde chaque jour à 23H00
� Pour paramétrer cron on utilise une crontab.
� Le fichier de configuration de cron ( crontab ) est sous /etc
� Le service cron doit fonctionner
� service crond status� crond (pid 4420) en cours d'exécution...
201
/etc/crontab
� Paramétrage du programme cron
� Exemple :� 00 23 * * * root /usr/local/bin/sauve.sh
� Cette ligne lance le programme situé sous /usr/local/bin et nommé sauve.sh chaque jour à 23H00 en utilisant le compte root.
� Autre exemple:� 15 12,20 1,5,10,15 */2 1-5 alice /usr/local/bin/prog.sh
� Le programme est lancé à 12H15 et 20H15 les 1,5,10 et 15 du mois pour les mois pairs et si ce jour est du lundi au vendredi sous l'identité de alice.
202
Structure d'une ligne crontab
� Minutes de 00 à 59
� Heures de 00 à 23
� Jour dans le mois de 1 à 31
� Mois dans l'année de 1 à 12
� Jour dans la semaine de 1 à 7� Attention en France le premier jour de la semaine est
lundi, aux USA dimanche.
� Identité du lanceur de programme
� Commande à lancer.
203
Astuces crontab
� Les intervalles sont acceptés : si l�on indique 1-4, le serveur comprendra de 1 à 4.
� Le caractère étoile signifie que le champ est toujours vérifié. S�il est placé sur le mois par exemple, la commande sera exécutée quelque soit le mois.
� La chaîne de caractère */x indique une période. Un */15 placé sur les minutes, elle signifie : pour chaque 00, 15, 30 et 45 minutes.
204
Crontab personnelle
� Chaque utilisateur peut avoir sa propre crontab, la syntaxe est la même sauf qu'il n'est pas nécessaire de préciser qui lance la commande.
� Exemple de la crontab de alice� 15 12,20 1,5,10,15 */2 1-5 /usr/local/bin/prog.sh
� La crontab personnelle s'édite avec la commande crontab -e
� Il est possible de lister le contenu de la crontab par la commande crontab -l
� En règle générale, le fichier /etc/crontab ne comprend que les programmes de root.
� Les fichiers crontab des utilisateurs sont sous /var/spool/cron/ et porte le nom de l'utilisateur.
205
cron.allow et cron.deny
� Il est possible de restreindre l'utilisation de cron avec les fichiers /etc/cron.allow et /etc/cron.deny
� cron.allow si présent liste les utilisateurs pouvant utiliser le cron
� cron.deny si présent liste les utilisateurs ne pouvant pas utiliser le cron
� Utiliser cron.allow et cron.deny n'est pas conseillé.
� Par défaut tout utilisateur peut utiliser cron.
206
La commande at
� La commande at exécute une tâche qu�une seule fois.
� Elle se base sur cron
� Syntaxe :
� at heure jour
� Le jour n�est pas obligatoire par défaut le jour courant
� Exemple
� at 22:00
� at> /usr/local/bin/sauve.sh
� Faire Control + D pour quitter lance sauve.sh aujourd'hui à 22H00�
� at 00:00 12/25/2011 Attention la date est obligatoirement au format américain ( �
mois avant le jour ).
� at> /usr/local/bin/sauve.sh
� Faire Control + D pour quitter lance le programme joyeux_noel.sh à 00H00 le �
25 décembre 2011.
207
Commandes at
� atq permet de connaître les programme lancés par at� atq
� 2 Sun Dec 25 00:00:00 2011 a erik
� 1 Thu Jun 30 22:00:00 2011 a erik
� at -c 1 permet de savoir ce qui sera lancé au programme 1.
� atrm suivi du numéro de tâche permet la suppression.� atrm 1
� atq
� 2 Sun Dec 25 00:00:00 2011 a erik
� Sous centos il existe un fichier at.deny vide qui indique que tout utilisateur peut utiliser at. Ce n�est pas le cas sur d�autre distribution où seul root peut utiliser at /etc/at.allow�
208
Secure SHellSSH
209
ssh
� Permet la connexion distante à une machine.
� ssh est sécurisé, la connexion est cryptée.
� ssh écoute sur le port 22 en TCP
� La configuration est dans le répertoire /etc/ssh� sshd_config Le serveur�
� ssh_config Le client�
� ssh rend obsolète les commandes telnet, rcp, et même ftp.
� Dans beaucoup de structures, c'est le seul moyen de connexion distant.
210
/etc/ssh
� Contient la configuration client et/ou serveur ssh
� Contient aussi les clés privées et publiques du serveur selon les algorithme rsa et dsa.� ssh_host_rsa_key clé privée en rsa�
� ssh_host_rsa_key.pub clé publique en rsa�
� ssh_host_dsa_key clé privée en dsa�
� ssh_host_dsa_key.pub clé publique en dsa�
� Le choix rsa ou dsa est laisser à la discrétion de chacun, les deux principes sont performants. Par défaut c'est rsa qui est utilisé.
211
/etc/ssh/sshd_config
� Fichier de configuration du serveur
� Lignes les plus importantes� Clé privée du serveur (rsa)
� HostKey /etc/ssh/ssh_host_rsa_key
� IP d'écoute
� ListenAddress 192.168.20.24
� Par défaut ssh écoute sur toutes les IP de la machine
� Identification root
� PermitRootLogin yes
� Si positionnée à No, le root ne peut pas se connecter directement ( plus sécurisé )
� X11Forwarding yes
� Permet l'export display via ssh ( ssh -X )
212
SSH et la cryptographie asymétrique
� SSH utilise la cryptographie asymétrique RSA ou DSA.
� Chaque personne dispose d'un couple de clefs : � une clef publique
� une clef privée.
� La clé publique peut être librement publiée tandis que la clef privée doit rester secrète.
� La connaissance de la clef publique ne permet pas d'en déduire la clé privée.
� Si Alice veut envoyer un message confidentiel à Bob, elle doit le chiffrer avec la clef publique de Bob et lui envoyer sur un canal qui n'est pas forcément sécurisé.
� Seul Bob pourra déchiffrer ce message en utilisant sa clef privée.
213
Cryptage Asymétrique
Clef privéeBob
Clef publiqueBob
Lorem ipsum sitdolor amet.
A2defd ne5depSge?jeud
Lorem ipsum sitdolor amet.
1 : Cryptage
2 : Envoi du message crypté3 : Décryptage
Alice rédige un message à l'attention de Bob.
214
Authentification à clef
/home/alice/.ssh/authorized_keys/home/alice/.ssh/know_hosts
1 : Alice copie sa clef publique sur le serveur. Le mot de passe estdemandé.
2b : Alice doit accepter laclef reçue.
3 : Alice se connecte sans mot de passe sur le serveur.
2a : Le serveur copie sa clefpublique dans les hôtes de confiance pour Alice
215
Interdire les connexions avec mot de passe
� L'authentification par clé asymétrique est plus fiable que le mot de passe.
� Il est possible de paramétrer ssh pour n'utiliser que cette méthode.
� Modifications à apporter à /etc/ssh/sshd_config� RSAAuthentication yes� PubkeyAuthentication yes� AuthorizedKeysFile .ssh/authorized_keys� PasswordAuthentication no
� Redémarrer ssh service sshd restart�
216
X-Window
217
Principe de X-Window
� Un modèle client/serveur
� Alors que dans d�autres systèmes d�exploitation l�interface graphique est intégrée au plus profond du système, Unix et Linux disposent d�une architecture graphique totalement différente.
� Le système graphique de base s�appelle X Window System ou plus couramment X Window, X11 ou tout simplement X.
218
Export Display
� Possibilité de déporter l'affichage sur une autre machine.
� Cette action peut se faire via ssh avec l'option -X
� Sous Windows il existe des émulateur X-Window dont X-ming en conjonction avec le client ssh putty.
219
Export DISPLAY par ssh
� Permet de lancer une commande depuis un serveur et de déporter l'affichage sur le poste client.
� ssh -X root@192.168.20.10
� Tester par la commande xclock� L'affichage se fait sur le client B mais la
commande tourne sur le serveur A� La ligne X11Forwarding du fichier
/etc/ssh/sshd_config doit être à Yes.
220
Export Display sous Windows
� Lancer l'émulateur X-Ming
� Configurer Putty pour l'export display
� Connection SSH � �
X11 et chocher Enable X11 forwarding
221
Gestionnaire de fenêtre
� Appelé aussi bureau. C'est lui qui donne le design de l'interface.
� Les plus connus sont : � GNOME
� KDE
� XFCE, un gnome très léger.
� E17
� jwm
� twm
� WindowMaker pour les nostalgiques de Next.
� �
� La liste est très longue et dépend du goût de chacun.
222
Installation du serveur X
� Sous CentOS il suffit d'installer le groupe X Window� yum -y install 'Système X Window'
� Se connecter ensuite en ssh et mode X� ssh -X root@ip� xclock
� Cette commande affiche une horloge sur le poste distant.
223
Connaître son systèmeIdentifier les ressources
"La connaissance demande du temps"Gary Sinise
224
Commandes d'information sur le matériel 1/2
� Il existe une profusion de commandes sur ce sujet, voir des outils complets.
� Nous présenterons ici les plus utiles et aussi celles qui se retrouvent sur toute distribution.
� Noyau
� uname -r
� uname -a
� Version de CentOS
� cat /proc/version
� Processeur
� cat /proc/cpuinfo
� Mémoire
� free -mt
� cat /proc/meminfo
� Disque
� hdparm -I /dev/sda attention "i" majuscule. Installer hdparm : aptitude install hdparm�
� La commande hdparm est très puissante et dispose de nombreuses fonctionnalité, par exemple hdparm -t /dev/sda teste la vitesse de lecture du disque.
225
Commandes d'information sur le matériel 2/2
� Espace disponible sur le disque
� df -hT
� Espace sur un répertoire, exemple /var
� du -sh /var global�
� du -Sh /var | sort -n détails par sous répertoire, classe par ordre croissant. Utile pour savoir ce qui prend de la �
place sous /var.
� Partitionnement disque
� cat /proc/partitions
� fdisk -l /dev/sda
� La commande smartctl, du package smartmontools, permet également d'obtenir beaucoup d'informations sur la qualité du disque voir le manuel !�
� Périphérique USB
� lsusb
� Les cartes
� lspci ( -v, vv, vvv de plus en plus bavard... )�
� Pour tout savoir, la commande lshw ( aptitude install lshw )
� lshw -short, version concise
� lshw -html Configuration sous forme de page web.�
226
Le répertoire /proc
� Ce répertoire est un pseudo système de fichiers qui contient des informations classées par type.
� Un sous-répertoire nommé d'après le numéro ID du process est créé chaque fois qu'un programme est lancé.
� Ce répertoire contient toutes les informations utiles sur le processus en question.
� Etudier le contenu de ce répertoire est une bonne source d'information.
227
Gestion des processus
� Elle tourne principalement autour de deux commandes
� ps
� kill
� ps, liste les processus, la forme la plus connue est :
� ps -ef | grep "texte" permet de chercher un processus particulier�
� ps aux est aussi très usitée.
� Le package psmisc contient la commande pstree, qui présente les processus sous forme d'arbre.
� aptitude install psmisc
� pstree -p ou encore pstree -p <num_process>.
� kill <num_processus>, permet de stopper un processus.
� Attention souvent le niveau -9, le processus est tué, est systématiquement employé, ce qui est très mauvais et ne doit être utilisé qu'en dernier recours.
� Préferer le niveau -3 qui est moins violent, qui termine proprement un processus.
228
Operating SystemOS
229
OS et Fonctionnalités
� Version du noyau� uname -r� uname -a plus complète�
� Modules chargés� lsmod
� Information sur un module� modinfo usbhid
230
Le matériel
� Processeur� cat /proc/cpuinfo
� Mémoire� free -mt taille en Mo ( m ) et récaptitulatif ( -t )�
� Présente la RAM et la swap.� cat /proc/meminfo
� Disques� hdparm -i /dev/sda l'option -I donne plus de détails.�
� La clause BuffSize donne la taille du cache
231
Informations sur organisationdu disque
� Occupation par partition� df -hT
� Partitionnement� cat /proc/partitions
� fdisk -l /dev/sda
� Organisation du disque, permet de connaitre le chargeur, le système de fichiers, nombre de secteurs...� disktype /dev/sda
� Liste des points de montage� mount
� Surveillance du disque� smartctl -a /dev/sda génère un diagnostique très complet du disque�
232
Périphériques USB et PCI
� lsusb� Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
� Bus 002 Device 002: ID 8087:0024
� Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
� Bus 001 Device 003: ID 13d3:5710 IMC Networks
� Bus 001 Device 002: ID 8087:0024
� Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
� lsusb -v -d 1d6b:0003 informations sur le device USB�
� lspci idem lsusb mais sur le bus PCI �
233
Commande lshw
� Présente le matériel� option -short plus synthétique�
� option -html génère la configuration en format �
html� option -C classe, par classe de périphérique
� lshw -C disk� lshw est l'équivalent de ioscan de hp-ux.
234
Le répertoire /proc
� Pseudo système de fichier présentant l'activité actuelle du noyau.
� Envoi de messages du noyau aux processus via des fichiers.
� Les fichiers /proc peuvent être utilisés pour accéder aux informations concernant l'état du noyau, les attributs du matériel, l'état de fonctionnement des processus, etc.
235
Performances
236
Activité du serveur
� Il existe un grand nombre de commandes et de produits pour visualiser l'activité du système.
� Les plus utiles sont :� top
� sar� iostat� vmstat
� Sous RedHat le package oprofile permet de gérer finement l'analyse système.
� La commande sar est dans le package sysstat� yum -y install sysstat
237
La commande sar
� System Activity Report
� Activité processeur� sar -u 10 5
� Activité disque� sar -dp 10 5
� L'option p permet de voir en clair les partitions du disque.
� Ces deux commandes effectuent un cliché sar toutes les 10 secondes et à 5 reprises.
� Les diapositives suivantes sont basées sur la page web : http://www.debianworld.org/systemes.et.reseaux?q=node/454
238
sar en détail
� SAR permet, à partir de statistiques, de mesurer les performances du système à des intervalles donnés.
� Il existe deux formes d'appel :� sar -dp t n rapporte toutes les "t" secondes des échantillons �
"n". Il est possible de rediriger les échantillons dans un fichier texte à l'aide de l'option -o nom_fichier.
� sar -dp 5 5 -o sar55.
� sar -f sar55 pour la relecture. Cette forme correspond à la seconde méthode d'appel de sar.
� Appelé sans argument sar recherche un fichier /var/log/sa/saXX où XX est le jour courant.
239
Collecter des données sar
� sar est fournit avec deux utilitaires sa1 et sa2 qui permettent de programmer via le cron la collecte de données pouvant être traitées ultérieurement.
� Exemple de crontab� */10 * * * * root /usr/lib/sa/sa1
� 0 0 * * * root /usr/lib/sa/sa2 -A
� La commande sa1 collecte les données liées aux performances. La périodicité définie ici est toutes les 10 minutes
� La commande sa2 exporte toutes les données du fichier binaire vers un fichier texte et supprime ensuite tout fichier de log de plus de sept jours.
� L'option -A indique qu'il faut extraire du fichier binaire vers le fichier texte.
Sous debian le chemin est /usr/lib/sysstat
240
Traiter les données sar -u
� Activité processeur� 15:07:51 CPU %user %nice %system %iowait %steal %idle
� 15:08:50 all 0,08 0,00 0,34 0,03 0,00 99,55
� %user : Pourcentage d'utilisation du CPU par les applications des utilisateurs
� %nice : Pourcentage d'utilisation du CPU présent lors de l'exécution à un niveau utilisateur avec des priorités nice.
� %system : Pourcentage d'utilisation du CPU au niveau du système et plus particulièrement au niveau noyau
� %iowait : Pourcentage du temps que le CPU ou les CPUs étaient en attente durant lequel le système avait des requêtes I/O importantes.
� %steal : Indique le pourcentage de temps passé en attente involontaire par le CPU ou les CPUs virtuels en attente que le hyperviseur aidait un autre processeur virtuel.
� %idle : Pourcentage de temps que le CPU ou les CPUs étaient en attente et le système n'avait pas de requêtes I/O importantes.
241
Traiter les données sar -d
� Activité disque, l'option p est plus précise car elle détaille partition/partition.� 15:15:56 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
� 15:16:01 sda 0,40 0,00 12,80 32,00 0,00 0,00 0,00 0,00
� 15:16:01 sda1 0,40 0,00 12,80 32,00 0,00 0,00 0,00 0,00
� 15:16:01 sda2 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
� DEV : indique le disque ou la partition mesuré.
� tps : indique le nombre de transferts par seconde émis vers le disque. De multiples requêtes logiques peuvent être combinées dans une seule requête I/O.
� rd_sec/s : nombre de secteurs lus depuis le disque. La taille d'un secteur est de 512 octets.
� wr_sec/s : nombre de secteurs écrits sur le disque. La taille d'un secteur est de 512 octects.
� avgrq-sz : taille moyenne, en secteurs, des requêtes émises vers le disque
� avgqu-sz : taille moyenne de la file d'attente des requêtes émises vers le disque
� await : temps moyen du traitement, en millisecondes, des requêtes émises vers le disque. Ceci inclus le temps des traitements et de l'attente dans la file d'attente des requêtes
� svctm : temps moyen de traitement, en millisecondes, des requêtes I/O émises vers le disque
� %util : Pourcentage du temps CPU durant lequel les requêtes I/O étaient émises vers le disque (utilisation de la bande passante du disque)
242
La commande iostat
� Donne des indications sur l'activité processeur et disque
� iostat
� iostat -c activité processeur�
� iostat -d activité disque�
� iostat -k les I/O sont exprimées en Kbits/sec�
� Comme pour la commande sar, il est possible de définir un intervalle et un nombre de clichés.
� iostat -c 10 5 5 clichés espacés de 10 secondes.�
243
la commande vmstat
� Donne des indication sur l'utilisation de la mémoire.
� Utile pour détecter un swap important� vmstat 10 5
� Comme pour sar 5 clichés espacés de 10 secondes.
� La commande free donne aussi de bonnes indication sur la mémoire.
244
Exemple
� Dans un second terminal simuler une forte activité disque avec la commande ci-dessous
� dd if=/dev/zero of=$HOME/fichier.img bs=1k count=10000000
� Utiliser les commandes sar, iostat et vmstat pour visualiser l'activité.
245
Réseau
� les commandes les plus utiles pour auditer le réseau sont :
� netstat
� tcpdump
� L'option -i de netstat permet notamment de visualiser les trames en erreurs.
� tcpdump est un analyseur ( sniffer ) de trame réseau. La commande est dans un package dédié
� yum -y install tcpdump
� Exemple capturer toutes les trames pour le protocole http ( port 80 )
� tcpdump -i eth0 port 80
� Lancer cette commande dans un terminal et surfer avec un navigateur pour voir le résultat.
� Exemple de capture ftp mot de passe en clair, option -XX�
� tcpdump -XX -s0 -i eth0 tcp and port 21 | grep -A1 PASS
246
Sauvegardes
247
« Sauvegarder à rien ne sert,si restaurer ne peut se faire. »
Yoda.
248
Les outils Linux de sauvegardes
� Linux propose des commandes basiques pour la sauvegarde� tar� cpio� dd� dump
� Ces commandes sont simples et présentes sur toutes les distributions.
� Dans les environnements conséquents il est fait appel à des produits de sauvegarde tiers.
249
TAR� Tape Archiver, utilise un fichier tar ou une archive tar.
� Il s'agit de la commande la plus connue. Elle permet de sauvegarder simplement un répertoire complet.
� Sauvegarde : tar -cvf. Exemple sauvegarde de /etc
� tar -cvf /home/etc.tar /etc
� Restauration : tar -xvf.
� cd /home
� tar -xvf etc.tar
� La restauration se fait dans le répertoire /home
� Lister le fichier tar sans restaurer
� tar -tvf etc.tar
� Compression
� Sous linux il est possible de compresser un fichier tar avec l'option -z pour gzip ou -j pour bzip2.
� tar -cvzf /home/etc.tgz /etc compression gzip�
� tar -cvjf /home/etc.bz2 /etc compression bzip2�
� Un fichier compressé doit être restauré avec l'option -z ou -j selon la méthode de compression choisie.
250
CPIO
� Plus complexe d'emploi que tar, cpio permet, quand elle est couplée avec find, d'effectuer des sauvegardes puissantes.
� cpio utilise l'entrée standard pour les fichiers à sauvegarder et la sortie standard pour le fichier de sauvegarde.
� Sauvegarde : cpio -o
� Restauration : cpio -i
� Sauvegarde des fichiers .cfg sur l'ensemble du disque
� find / -name *.cfg | cpio -ov > /home/cfg.cpio
� Restauration
� cpio -iv < /home/cfg.cpio
251
Services réseau
252
Linux et le réseau
� Pour communiquer entres elles les machines utilise un protocole de communication.
� Il existe de nombreux protocoles :� IPX de Novell� SNA de IBM� TCP/IP
� Ce dernier mis au point pour Unix s'est retrouvé propulsé en tête par l�avènement d'Internet.
253
Définition d'un protocole
� Mode opératoire commun aux éléments communiquant entre eux.
� Il n'y a pas de communication possible sans avoir recours à un protocole.
� Le protocole doit être adapté au type de communication que l'on souhaite mettre en �uvre
� Par exemple si deux personne se parlent dans la même langue, elles se comprennent. La langue utilisée est un protocole de communication.
254
Organisation en couches
� L'ISO( International Standard Organisation ) a défini le modèle OSI pour la gestion des réseaux.
� Ce dernier décrit la manière dont matériels et logiciels coopèrent selon une architecture en couches qui permet la communication.
� Le terme de couche est utilisé pour évoquer le fait que les données qui transitent sur le réseau traversent plusieurs niveaux de protocoles.
� Les données qui circulent sur le réseau sont traitées successivement par chaque couche, qui vient rajouter un élément d'information, un en-tête, puis sont transmises à la couche suivante.
� TCP/IP s'appuie sur le modèle DOD qui lui même se base sur le modèle OSI.
255
TCP/IP
256
OSI vs TCP/IP
Présentation
Application
Session
Transport
Réseau
Liaison
Physique
Accèsréseau
InternetRéseau
Transport
Application
OSI TCP/IP
257
Principaux protocoles TCP/IP
� Application
� HTTP, POP3, FTP, SMTP, SSH
� Protocoles de haut niveau permettant le dialogue entre applications serveurs et clientes.
� Transport
� UDP sans connexion�
� TCP avec connexion�
� Internet
� IP routage entre réseaux, utilise l'adresse.�
� ICMP contrôle, dépistage d'erreur et signalisation.�
� Accès réseau
� CSMA/CD Protocole de bas niveau. Gestion du média de communication �
(détection de collisions). Acheminement des informations entre émetteur et destinataire, utilise l'adresse MAC.
258
Couche Internet
Couche Application
Couche Transport
Gestion réseau TCP/IP
TCP UDP
Applicationsréseau
IPARP
RARP
TCP ou UDP
Ethernet
259
Protocole IP
� Adresse IP
� Unique pour chaque machine du réseau
� Réparties en classes
� Classe A : réseau sur 8 bits, hôtes sur 24 bits
� Classe B : réseau et hôtes sur 16 bits
� Classe C : réseau sur 24 bits et hôtes sur 8 bits
� Masque de sous réseau
� Permet d'identifier les bits représentant le réseau des bits représentant les hôtes.
� Différents selon la classe du réseau
� Exemple d'IP
� 192.168.1.24/255.255.255.0 ou 192.168.1.24/24
� Passerelle par défaut
� Les paquets destinés à un autre réseau sont envoyés vers cette adresse.
260
Configuration IPsur CentOS
� Fichier /etc/sysconfig/network-script/ifcfg-eth0� DEVICE=eth0
� IPADDR=192.168.1.24� NETMASK=255.255.255.0� NETWORK=192.168.1.0� BROADCAST=192.168.1.255� GATEWAY = 192.168.1.254� ONBOOT=yes
261
Changer le nom de l'hôte
� Le nom de l'hôte est dans le fichier /etc/sysconfig/network
� Editer ce fichier� Remplacer la ligne HOSTNAME=mach32 par
un nom type lx-1-z� Z correspondant au dernier chiffre de votre IP
� Rebooter le serveur
262
Serveur DNSBIND
263
Domain Name System
� Permet d'associer des adresses IP à des noms conviviaux et plus aisés à retenir
� Exemple� 87.98.133.129 www.orsys.fr�
� Historiquement ces informations étaient stockées dans le fichier /etc/hosts.
� Bien que toujours possible, la multitude de serveurs sur l'Internet ne permet plus d'utiliser ce principe.
� Le DNS fut mis en place pour gérer une base centralisé des associations IP Noms.�
� Le produit le plus employé pour gérer le DNS est BIND
264
Concepts de base
� Domaine : Ensemble d'ordinateurs sur un réseau
� Hôte : Point final de la chaine DNS. Identifié par son FQDN ( Fully Qualified Domain Name )� Profondeur maximale pour atteindre l'hôte 127, �
� Taille maximale du FQDN 255 caractères. �
� Zone : Portion du domaine dont la gestion est assurée par une entité.
265
Architecture DNS
.Racine
com net fr org eu de
fnac orsys silverlake adimcor
www www
TLD
Domaines
Hôtesou sousdomaines
FQDNwww.orsys.fr salle1
lx-1-3lx-1-2 lx-1-4
Zonesalle1.orsys.fr
266
Berkeley Internet Name Domain
� Son installation sur CentOS est simple� yum -y install bind bind-utils
� La configuration de BIND se fait dans le fichier /etc/named.conf
� BIND peut être configuré comme :� serveur cache Garde en mémoire, suite à un premier appel, �
les informations d'autres serveurs DNS
� serveur maitre Gère une/des zones�
� serveur esclave Récupère les information de zones auprès �
d'un serveur maitre.
� Il existe d'autres modes mais qui dépasse le cadre de ce cours.
267
BIND et la sécurité
� BIND écoute sur le port 53
� Pour des raisons de sécurité BIND est configuré la plupart du temps en mode chroot.
� Le service DNS est la principale cible des attaques DOS ( Deny Of Service ).
� Plus de DNS Plus d'Internet !�
� La mise en place de DNS en toute sécurité avec BIND est un sujet complexe et demandant à lui seul un cours complet...
268
DNS et /etc/hosts
� Afin d'interdire la résolution de noms par /etc/hosts, il faut éditer le fichier /etc/nsswitch.conf et modifier la ligne suivante ainsi :
� #hosts: files dns
� hosts: dns
269
Les enregistrements DNS
� A : Address, le plus courant. Une IP correspond à un nom de machine.
� CNAME : Alias, autre nom pour un enregistrement A.
� MX : Mail eXchange, défini les serveurs de réception des courriers ( protocol smtp ) à destination d'un domaine. Il est possible d'avoir plusieurs serveur MX pour un domaine, avec un notion de priorité.
� NS : Name Server, indique quels serveurs interroger pour résoudre les nom de machine. Un enregistrement NS doit correspondre à un enregistrement A ( CNAME interdit ).
� Il existe d'autres types d'enregistrements
� AAAA : Nom d'hôtes en IPV6
� PTR : pointeur, utilisé pour la résolution inversée trouver un hôte par son �
IP.
270
BIND en serveur cache
� C'est la configuration la plus simple. Il suffit d'indiquer à BIND vers quels serveurs relayer la demande forwarder.�
� L'intérêt est d'accélérer les accès aux machines.
� Fichier /etc/named.conf
options {
forwarders {
194.2.0.20;
194.2.0.50;
};
};
Placer ici les IP des DNS du provider.
271
Tester BIND
� La commande dig permet de visualiser le serveur résolvant les requêtes DNS
� dig www.orsys.fr | grep SERVER
� � IP du serveur résolvant les noms
� Activer le cache de bind.� Modifier le fichier /etc/resolv.conf, commenter toutes les lignes et ajouter :
� nameserver localhost
� search salle1.orsys.fr
� Démarrer bind
� service named start
� Relancer la commande dig ci-dessus.� � ;; SERVER: 127.0.0.1#53(127.0.0.1)
272
Effet du cache
� Il est simple de tester l'effet du cache
� Première exécution :� dig -x www.fnac.com | grep "Query time"� � ;; Query time: 251 msec
� Seconde exécution� dig -x www.fnac.com | grep "Query time"� � ;; Query time: 1 msec
� Redémarrer bind purge du cache�
� service named restart
� Relancer les commandes ci-dessus.
273
BIND en serveur maitre
� Ajouter la ligne suivante dans /etc/named.conf dans la section options :� directory "/var/named";
� C'est sous ce répertoire que bind recherchera les fichiers de zones
� Commenter les lignes de la sous-section forwarders
� Ajouter hors de la section options les lignes suivantes :
zone "." IN {
type hint;
file "data/named.ca";
};
� Le fichier /var/named/data/named.ca contient les enregistrements des serveurs racines du DNS.
� Récupérer named.ca
� wget http://192.168.1.24/named.ca
274
name.ca. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
275
Zone de résolution inverse
Zone de résolution
Définir les zones
� Ajouter les lignes suivantes dans le fichier /etc/named.conf
zone "salle1.orsys.fr" IN {
type master;
file "data/salle1.orsys.fr.zone";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "data/192.168.1.zone";
};
276
Le fichier /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "data/named.ca";
};
zone "salle1.orsys.fr" IN {
type master;
file "data/salle1.orsys.fr.zone";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "data/192.168.1.zone";
};
277
salle1.orsys.fr.zone
� Sous /var/named/data créer le fichier de la zone de résolution
$ttl 38400
@ IN SOA ns.salle1.orsys.fr. contact.salle1.orsys.fr. (
2012040701 ; # Numéro de série
10800 ; # Rafraichir toutes les 3 heures
3600 ; # Retenter au bout d'une heure si échec
604800 ; # Expire au bout d'une semaine
86400 ) ; # TTL minimum 3 jours.
@ IN NS ns.salle1.orsys.fr.
lx-1-2 IN A 192.168.1.2
lx-1-3 IN A 192.168.1.3
lx-1-4 IN A 192.168.1.4
passerelle IN A 192.168.1.254
ns IN A 192.168.1.24
278
Tester la configuration
� La configuration de bind
� named-checkconf /etc/named.conf
� Le fichier de zone� named-checkzone salle1.orsys.fr /var/named/data/salle1.orsys.fr.zone
� Le fichier de zone inversé� named-checkzone salle1.orsys.fr /var/named/data/192.168.1.zone
� Tester le serveur NS
� nslookup ns.salle1.orsys.fr
� Tester la résolution
� host lx-1-2
� Tester la résolution inverse
� host 192.168.1.2
� Si tout est OK activer bind au démarrage
� chkconfig named on
279
192.168.1.zone
� Sous /var/named/data créer le fichier de la zone de résolution inversé
$ttl 38400
@ IN SOA ns.salle1.orsys.fr. contact.salle1.orsys.fr. (
2012040701 ;
10800 ;
3600 ;
604800 ;
86400 ) ;
@ IN NS ns.salle34.orsys.fr.
2 IN PTR lx-1-2
3 IN PTR lx-1-3
4 IN PTR lx-1-4
254 IN PTR passerelle
24 IN PTR ns
280
BIND en serveur esclave
� Le principe est de disposer d'un second serveur DNS qui répondra en cas d'échec du maitre.
� Le serveur esclave reçoit sa configuration des zones depuis le serveur maitre.
� Il importe donc de rajouter dans le fichier named.conf du maitre les options autorisant le transfert de zones.
� Il faut ensuite sur le serveur esclave configurer un autre fichier named.conf.
281
Le fichier /etc/named.confdu serveur maitre
options {
directory "/var/named";
allow-transfert { 192.168.1.25; }; # IP du serveur esclave
};
zone "." IN {
type hint;
file "data/named.ca";
};
zone "salle1.orsys.fr" IN {
type master;
file "data/salle1.orsys.fr.zone";
notify yes;
};
zone "1.168.192.in-addr.arpa" {
type master;
file "data/192.168.1.zone";
notify yes;
};
282
Le fichier /etc/named.confdu serveur esclave
options {
directory "/var/named";
allow-notify { 192.168.1.24; }; # IP du serveur maitre
};
zone "salle1.orsys.fr" IN {
type slave;
file "data/salle1.orsys.fr.zone";
masters { 192.168.1.24; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "data/192.168.1.zone";
masters { 192.168.1.24; };
};
283
DHCP
284
Dynamic Host Configuration Protocol
� Permet la configuration automatique des paramètres TCP/IP d'un client.
� Installation CentOS classique� yum -y install dhcp
� La configuration se fait dans /etc/dhcpd.conf
285
/etc/dhcpd.conf
ddns-update-style none; # Gestion dynamique du DNS
ignore client-updates; # Gestion dynamique du DNS
authoritative;
subnet 192.168.34.0 netmask 255.255.255.0 {
option routers 192.168.34.254; # passerelle par défaut
option subnet-mask 255.255.255.0; # masque de sous-réseau
option domain-name "salle34.orsys.fr";# nom de domaine
option domain-name-servers 192.168.1.24;# serveurs DNS
range 192.168.34.100 192.168.34.150;# plage d’adresse
default-lease-time 21600; # durée du bail en secondes
max-lease-time 43200 ; # durée maxi du bail en sec.
}
# Réservations
host lx-34-01 {
hardware ethernet 00:E1:A2:F3:47:19;
fixed-address 192.168.34.1;
}
host lx-34-02 {
hardware ethernet 00:61:BC:0B:A3:5E;
fixed-address 192.168.34.2;
}
286
Pare-Feu Firewall
287
Pare-feu� Un pare-feu ( firewall ) est une sorte de routeur des
paquets réseau, décidant au cas par cas du traitement à appliquer à ce paquet.
� Le principe est assez simple, le paquet est autoriser à passer ou non.
� Un pare-feu agit sur les paquets entrants vers le réseau et sur les paquets en sortant.
� Dans ce cours, ne sera vu que la notion de pare-feu vers l'Internet et sur un poste local.
InternetPARE-FEURéseaulocal
288
Pare-feu et Linux
� Pour dédier une machine au pare-feu, linux n'est pas la solution idéale.
� Les projets BSD sont beaucoup plus avancés sur le plan de la sécurité.
� L'appliance PFSense, basé sur freeBSD, permet de mettre en place très simplement un pare-feu avec une interface d'administration web.
� Site du projet : http://www.pfsense.org
289
Caractérisitques d'un paquetréseau sur pare-feu
� Son interface d'arrivée.
� Un pare-feu dispose au minimum de 2 interfaces réseau.
� L'une au réseau interne,
� L'autre à l'Internet
� Son sens
� Paquet à destination du pare-feu
� Paquet traversant le pare-feu
� Paquet venant du pare-feu
� Son protocole
� TCP
� UDP
� Adresse et port d'origine
� Adresse et port de destination
290
Principaux ports IP
� 20 et 21 : FTP
� 22 : ssh
� 23 : telnet
� 25 : smtp
� 53 : dns
� 80 : http
� 110 : pop3
� 143 : imap4 ...
� Normalisé par l'IANA (Internet Assigned Numbers Authority).
� Les ports 0 à 1023 sont les ports reconnus ou réservés
� Les ports 1024 à 49151 sont appelés ports enregistrés
� Les ports 49152 à 65535 sont les ports dynamiques et/ou privés
� Sous linux on les inscrits dans le fichier /etc/services
� La combinaison IP + Port se nomme un socket IP.
291
Principe du pare-feu sous Linux
� Ensemble de règles contenues dans des chaînes elles même contenues dans des tables.
� Pour chaque règles on applique une cible au paquet :� autoriser allow ou accept�
� bloquer deny ou reject, l'utilisateur est informé�
� supprimer drop, l'utilisateur n'est pas informé.�
� Les règles définissent la politique de sécurité selon deux principes fondamentaux :� On autorise tout et on bloque l'interdit
� On bloque tout et on ouvre l'autorisé.
� Sous linux le pare-feu est géré par NetFilter et la commande iptables.
292
Chemin d'un paquet réseausur interface
décision
FORWARDfilter
INPUTfilter
OUTPUTfilter,nat,mangle
PREROUTINGnat
mangle
POSTROUTINGnat
pro
cess
us
loca
l
Paq
ue
tso
rta
nt
Paq
ue
te
ntr
an
t
routage
local
293
Chaînes, tables et cibles du pare-feu
� Les chaînes standards sont :
� Prerouting
�Agit sur le paquet avant son entrée.
� Postrouting
�Agit sur le paquet avant sa sortie
� Forward
�Le paquet n'est pas destiné à la machine local, il est donc routé.
� Input
�Paquet destiné à un processus local, traitement pré-processus
� Output
�Application d'un traitement post-processus.
� Les tables standards sont
� nat
�Elle sert pour le routage (masquerading), utilisé principalement pour partager la connexion Internet
� filter
�C'est la table par défaut de iptables, elle permet de dire qui peut passer et qui ne passera pas vers telle ou telle machine.
� mangle
�Assez peu utilisée, fonctions avancées, permet de modifier le contenu du paquet. Gestion de bande passante, QOS...
� Les cibles
� Terminales
�accept
�reject
�drop
� Non terminales
�log
�ttl
�return
294
Configuration basique
� Lister les chaînes
� iptables -t filter -L ou iptables -L
� iptables -t nat -L
� iptables -t mangle -L
� L'option -t indique la table, par défaut filter.
� Supprimer toutes les règles, table filter
� iptables -F
� iptables -X
� Tout interdire, attention la casse est importante
� iptables -P INPUT DROP
� iptables -P FORWARD DROP
� iptables -P OUTPUT DROP
� Autoriser la sortie depuis la machine
� iptables -A OUTPUT -o eth0 -j ACCEPT
� Authoriser toutes les connexions déjà établies à entrer
� iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
� Autoriser ssh
� iptables -A INPUT -p tcp --dport 22 -j ACCEPT
� Les projets firestarter ou shorewall offre des facilités de configuration iptables.
� La distribution ipcop ( http://www.ipcop.org ) permet aussi la mise en place rapide d'un fire-wall sous Linux.
295
Partager une connexion Internet
� echo 1 > /proc/sys/net/ipv4/ip_forward� Ou encore éditer /etc/sysctl.conf et ajouter
net.ipv4.ip_forward=1� Relire la configuration par sysctl -p
� iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.34.254
� iptables -A FORWARD -i eth1 -o eth0 -s 192.168.34.254/32 -m state --state ! INVALID -j ACCEPT
InternetPARE-FEUeth1eth0Réseau
local
rou
teu
r
192.168.34.254
296
Important pour la suite du cours
� Purger les règles du pare-feu
� iptables -t filter -F, ou iptables -F
� iptables -t filter -X, ou iptables -X
� iptables -t nat -F
� iptables -t nat -X
� iptables -t mangle -F
� iptables -t mangle -X
� La politique par défaut de Netfilter est ACCEPT
� Vérifier par iptables -L
� Comme indiqué en préambule, le sujet est vaste. Un site de référence en français sur le sujet :
� http://irp.nain-t.net/doku.php/130netfilter:start
297
Package fail2ban
� Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification.
� Il met à jour les règles du pare-feu pour rejeter cette adresse IP.
� Ces règles peuvent êtres défines par l'utilisateur.
� Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.
� Implanter systématiquement ce package est un bon principe. Par défaut fail2ban ne traite que ssh.
� L'installation sous CentOS ne se fait pas par la commande yum
298
Installer fail2ban
� Charger le code source� http://sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-
0.8.4/fail2ban-0.8.4.tar.bz2
� Décompresser� tar -xvjf fail2ban-0.8.4.tar.bz2
� Compiler� cd fail2ban-0.8.4
� python setup.py install
� Activer le démarrage� cp files/redhat-initd /etc/init.d/fail2ban
� chkconfig --add fail2ban
� chkconfig fail2ban on
� Le fichier de configuration est : /etc/fail2ban/jail.conf
299
rsyslog
300
Les traces système
� les actions sur le système sont tracées dans un ensemble de fichiers Les logs�
� Il existe deux démons :� klogd : kernel log daemon, informations du noyau.� syslogd : system log daemon, informations émises
par tout type de service et éventuellement le noyau.
� Ce cours présente les traces générée par syslogd.
301
Niveaux de priorité
� Les messages du noyau ont des niveaux de priorité allant de 0 à 7.
302
Configuration de rsyslog
� La configuration de rsyslog s'effectue via le fichier /etc/syslog.conf
� Le principe est de définir 3 points pour chaque message:� L'origine ou sous système� L'importance ou le niveau� La destination, fichier de log.
303
Origine ou sous-système
� Une étoile "*" défini l'ensemble des sous-systèmes.
304
Importance ou niveau
� Une étoile "*" défini l'ensemble des niveaux
305
Destination
� Une étoile "*" signifie que tous les utilisateurs en connexion reçoivent le message.
� Exemple sur CentOS de la configuration par défaut de rsyslog
� *.info;mail.none;authpriv.none;cron.none /var/log/messages
� authpriv.* /var/log/secure
� mail.* /var/log/maillog
� cron.* /var/log/cron
� *.emerg *
� uucp,news.crit /var/log/spooler
� local7.* /var/log/boot.log
� Par convention les logs sont sous /var/log.
� Les logs pouvant devenir très volumineux, beaucoup d'administrateurs positionne /var/log sur une partition séparée afin de ne pas bloquer le système.
� Les logs peuvent être automatiquement purgés par le programme logrotate.
� La commande logger permet à l'intérieur de script d'envoyer des messages à rsyslog.
� logger -p auth.info -t une_etiquette "mon message à envoyer"
� tail /var/log/message
� L'option -p indique le sous système et la priorité.
� L'option -t permet de marquer le message avec une étiquette Utile pour fonction grep.�
306
Rotation des logs
� Le programme logrotate permet la rotation et l'archivage des fichiers de logs.
� Sa configuration se fait dans le fichier /etc/logrotate.conf� weekly La période de rotation est hebdomadaire�
� rotate 4 Faire 4 rotations.�
� create Après une rotation on créé un fichier vide�
� compress Les logs archivés sont compressés.�
� include /etc/logrotate.d Inclusion de configuration �
spécifiques.
307
/etc/logrotate.d/rsyslog
/var/log/syslog Nom du fichier à permuter.�
{
rotate 7 Les journaux sont permutés 7 fois avant suppression�
daily
missingok Si le fichier est absent ne génère pas d'erreur�
notifempty Ne fait pas de rotation si fichier vide�
delaycompress La compression se fera à la prochaine rotation�
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
308
/etc/logrotate.d/rsyslog
/var/log/syslog Nom du fichier à permuter.�
{
rotate 7 Les journaux sont permutés 7 fois avant suppression�
daily
missingok Si le fichier est absent ne génère pas d'erreur�
notifempty Ne fait pas de rotation si fichier vide�
delaycompress La compression se fera à la prochaine rotation�
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
309
Impression
310
Principe de l'impression
� CUPS : Common Unix Printing System
� Système commun d'impression
� Quasiment généralisé sous Linux.
� Installation via les packages cupsys et cupsys-client� yum install cups
� Un simple utilisateur n'a, par défaut, pas le droit d'installer et de manipuler les imprimantes locales.
� Afin de rendre cette opération possible, il faut ajouter l'utilisateur au groupe lpadmin :� adduser alice lpadmin
� Après cette manipulation relancer cups
� /etc/init.d/cups restart
311
Image : www.ubuntu-fr.org
312
Interface Web
� CUPS propose une interface Web pour la gestion des imprimantes.
� Cette interface écoute sur le port 631� Se connecter en http://localhost:631/admin
313
Commandes standards d'impression
� lp ou lpr : permet d'imprimer un (ou des) fichier(s).
� lpq : permet d'afficher la file d'attente d'une imprimante.
� lprm : permet de supprimer des jobs de la file d'attente
� lpstat : permet d'afficher des informations détaillées sur le serveur d'impression. � Par exemple, pour voir l'imprimante par défaut : lpstat -d.
� lpoptions : permet d'afficher ou de modifier la configuration du serveur d'impression. � Par exemple, pour changer l'imprimante par défaut :
� lpoptions -d autreimprimante.
� lpmove : permet de déplacer un job (une impression) de la file d'attente d'une imprimante à une autre imprimante.
� lpc : permet de contrôler interactivement les imprimantes.
314
Le serveurSAMBA
"Ouvrir Windows à un monde plus large"
315
SAMBA� Système de partage de fichiers et d'imprimante
� Utilisation du protocole SMB SaMBa�
� Son emploi est plus souple que NFS qui reste totuefois la méthode la plus efficace.
� Permet aux machines windows de se connecter à un répertoire linux.
� SAMBA peut totalement émuler un contrôleur de domaine Windows et être intégré dans Active Directory.
� Installation
� aptitude install samba
� Démarrage
� service samba start
� Deux processus sont lancés :
� smbd, noyau du serveur, fournissant les services d'authentification et d'accès aux ressources
� nmbd, permettant de montrer les services offerts par Samba (affichage des serveurs Samba dans le voisinage réseau, �)
� Il existe un autre processus facultatif winbind, qui se lance à part, qui permet de récupérer les utilisateurs et les groupes d'un contrôleur de domaine Windows .
� La configuration se fait dans le fichier /etc/samba/smb.conf
� On teste la validité de smb.conf par la commande testparm
316
Un mot sur les fichiers et les droits
317
Droits de fichiersdroits normaux
� Les droits s'expriment avec des lettres :
� r : read, lecture
� w : write, écriture
� x : execute, pour un répertoire le droit x indique le parcours possible.
� Les droits sont souvent représentés en notation octale
� r = 4
� w = 2
� x = 1
� Il suffit de faire la somme des droit souhaité pour obtenir la valeur de 0 à 7
� Exemples : rw- = 6, r-x = 5, rwx = 7.
� La commande permettant le changement des droits est chmod
� chmod 755
� chmod g+w droit d'écriture au groupe�
� chmod o-rwx retire tout droit aux autres.�
318
Droits de fichiersdroits étendus
� La notation octale 777 est un raccourci, la vraie syntaxe est 0777.
� Ce 4ième chiffre placé à gauche a par défaut la valeur 0. les autres valeurs sont :
� 4 : SUID, pour les exécutables, ce droit indique que le programme peut être lancé par tous mais sous l'identité de son propriétaire. Exemple la commande passwd.
� Se matérialise par la lettre "s" à la place du "x" dans la section user.
� Les programmes SUID sont très dangereux, ce droit doit donc être limité.
� 2 : SGID : Ce droit est très intéressant pour les répertoires partagés. Il indique que toute création dans ce répertoire prend comme groupe celui du répertoire et non le groupe principal de l'utilisateur.
� Se matérialise par la lettre "s" à la place du "x" dans la section group.
� Avec samba, on utilise souvent cette commande : chmod g+s répertoire
� 1 : sticky bit : Lorsque ce droit est positionné sur un répertoire, il interdit la suppression d'un fichier qu'il contient à tout utilisateur autre que le propriétaire du fichier. Pour un fichier exécutable, il indique que ce fichier doit encore rester en mémoire vive après son exécution. Fonctionnalité obsolète aujourd'hui.
� Se matérialise par la lettre "t" à la place du "x" dans la section other.
� Le répertoire /tmp est configuré ainsi.
319
Des exemples
� -rwxrw-r-- 0764�
� -rw-rw---- 0660�
� -rw-r--r-- 0644�
� -rwsr--r-- 4744�
� drwxrws--- 2770�
� drwxrwxrwt 1777�
320
Exemple simple de smb.conf
� Créer un répertoire commun
� mkdir /home/commun
� chmod 1777 /home/commun
� Configurer smb.conf
� cd /etc/samba
� mv smb.conf smb.conf.old
� vi smb.conf
[global]
workgroup = erik
netbios name = erik-laptop
read only = no
security = share
[commun]
path = /home/commun
public = yes
321
Gestion des comptes avec SAMBA
� Créer 2 groupes : compta et ventes
� groupadd compta
� groupadd ventes
� Ajouter le shell nologin dans les shells valides.
� echo "/usr/sbin/nologin" >> /etc/shells
� Créer 3 utilisateurs : alice, bob et charles et affecter charles au groupe compta et alice et bob au groupe ventes
� useradd -G ventes -m alice -s /usr/sbin/nologin
� useradd -G ventes -m bob -s /usr/sbin/nologin
� useradd -G compta -m charles -s /usr/sbin/nologin
� Créer 2 répertoires sous /home : compta et ventes
� mkdir /home/ventes
� mkdir /home/compta
� Affectation des droits des répertoires
� chmod 2770 /home/compta /home/ventes
� chgrp compta /home/compta
� chgrp ventes /home/ventes
322
/etc/samba/smb.conf
� Modifier le fichier smb.conf précédent ainsi :
[global]
workgroup = erik
netbios name = erik-laptop
read only = no
security = user
[compta]
path = /home/compta
valid users = @compta
create mask = 0660
directory mask = 0770
[ventes]
path = /home/ventes
valid users = @ventes
create mask = 0660
directory mask = 0770
� Redemarrer samba
� service samba restart
323
SAMBA - Conclusion
� C'est un des produits phares de l'Open-Source.
� Sa maîtrise demande du temps.� Deux livres sur le sujet� La version O'Reilly
n'est plus disponibleen Français, sauf enoccasion.
� http://www.samba.org� Cours Orsys LIR, 4 jours...Faut vendre !
324
Serveur WebApache
325
Le serveur Apache
� Le serveur HTTP le plus utilisé au monde est Apache ( 60% )
� Apache vient de la contraction de la phrase : « A patchi server » en raison de la nature modulaire du produit.
� Apache est avant tout le nom d'une organisation, Apache Software Foundation supportant plus de 100 projets OpenSource
� httpd le serveur WEB�
� Tomcat serveur d'application�
� Struts framework Java�
� SpamAssassin...
� Site web : http://www.apache.org
326
Autres serveurs WEB
� Propriétaire� IIS : Serveur WEB de Microsoft� Sun Java System Web Server : Anciènnement
Netscape, propriétaire Oracle.
� OpenSource� Lighttpd : « lighty » serveur léger et rapide.� nginx : Origine russe, performant notamment par
une très faible consommation mémoire.� Google, serveur Web « maison » origine inconnue ?
327
Répartition mondiale des serveurs Web
328
Mode d'installation
� Par les packages de la distribution� .deb Debian, Ubuntu�
� .rpm Redhat, Fedora, Mandriva�
� Par les sources� Utilisation du triptique :
configure, make, make install
329
Package DEB
� Le plus simple est d'utiliser aptitude
� Sous Debian� aptitude install apache2
� Sous Ubuntu� sudo aptitude install apache2
� Tester l'installation correcte en pointant un navigateur sur l'URL : http://localhost
330
Package RPM
� Le plus simple est d'utiliser yum� yum install httpd
� Activer Apache au démarrage� chkconfig --levels 235 httpd on
� Corriger le fichier de configuration en décommentant la ligne NameVirtualHost� vi /etc/httpd/conf/httpd.conf
� NameVirtualHost *:80
� Relancer Apache� service httpd restart
� Ignorer le warning pour l'instant
� Tester l'installation correcte en pointant un navigateur sur l'URL : http://localhost
331
Principe rapide de fonctionnement
� Au démarrage, Apache charge les fichiers de configuration et se met en attente de requêtes sur les interfaces réseaux.
� Le client détermine et se connecte au serveur ( utilisation de DNS )
� Le client effectue une requête HTTP sur le serveur, par la méthode GET du protocole HTTP demande de page�
� Après l'analyse de la requête, le serveur renvoie la page concernée sous forme de code dont on peut spécifier le format de données
� balises <meta> de l'entête des documents servis "content-�
type"
� Une fois toutes les données envoyées, le serveur ferme la connexion
� Parallèlement le client analyse et construit l'affichage à partir du code reçu.
332
Le protocole HTTP
� Hyper Text Transfert Protocol
� Destiné à transférer du texte d'un serveur vers un client.
� Il est possible de transférer des fichiers quelconques, images, vidéos..., en utilisant des types MIME
� La version actuelle du protocole est la 1.1, toutefois la version 1.0 est encore très utilisée.
� Protocole TCP/IP, HTTP écoute par défaut sur le port 80
333
URL
� Uniform Resource Locator
� Chaine de caractères identifiant une ressource d'un site Web
� Exemple : http://www.orsys.fr/index.html� http Protocole utilisé, il en existe d'autres : ftp, https...�
� :// Sépare le protocole du reste de l'URL�
� www.orsys.fr Adresse du serveur à contacter�
� / Séparateur de l'adresse du serveur et de la �
ressource demandée.
� index.html Ressource demandée.�
334
HTML
� Hyper Text Markup Language
� Langage de description de document. Langage de balisage basé sur SGML ( Standard Generalized Markup Language ).
� La version de HTML la plus utilisée à ce jour est la 4. La version 5 commence à être mise en place progressivement.
� Les navigateurs Web interprètent le langage HTML et présentent les informations.
� Tous les navigateurs ne sont pas équivalents en terme de respect de la norme HTML.
� Le langage HTML permet de définir des pages dites statiques
� Il est possible de générer dynamiquement du HTML avec des langages dédiés : PHP, CGI, ASP...
� HTTP , HTML et URL sont les trois bases des sites Internet.
335
Exemple de codage HTML
<html>
<head>
<title>Ma page Web</title>
</head>
<body>
<h1>Titre de ma page</h1>
<p>Le texte de ma première page Web</p>
</body>
</html>
� Attention ce codage ne respecte pas les normes W3C
336
Le codage MIME
� Multipurpose Internet Mail Extension
� Origine : protocole SMTP
� Le principe est de découper le message en plusieurs parties
� Texte,
� Images,
� Son,
� Fichier PDF...
� Le client selon sa configuration peut :
� Afficher le document
� Proposer son téléchargement
� Un type MIME est défini par un type et un sous-type
� text/html
� text/css
� image/jpg
� audio/mp3...
� Les types MIME sont normalisés par IANA( Internet Assigned Numbers Authority )
337
Client, navigateur WEBServeur WEB
Mécanismes du protocole HTTP
Pagesstatiques
Générateurde pages
Sourcesdes données
Plug-INFlash
Real Player...
InterpréteurJavascriptVBscript...
Affi
chage
Etape 1 : Requête émise par le client vers le serveur
Etape 2 : Réponse du serveur vers le client
338
Serveur principal
� Apache est un démon unix comme un autre.
� httpd sous RedHat
� apache2 sous Debian
� Comme tout processus unix il utilise un fichier de configuration sous /etc
� /etc/httpd/conf/httpd.conf sous RedHat
� /etc/apache2/apache2.conf sous Debian
� Apache n'est jamais démarré sous le compte root
� apache sous RedHat
� www-data sous Debian
� Ce premier processus ne participe pas au dialogue avec les clients.
� Son rôle est de créer un certain nombres de processus fils à l�écoute sur le port 80, par défaut.
� Le processus père gère les tables d�état et assigne les fils aux clients.
� Leur nombre est de 5 par défaut au démarrage, mais il est paramétrable.
339
Serveurs fils
� En fonction des besoins le processus père peut automatiquement augmenter leur nombre jusqu�à une valeur maximum, 10 par défaut, afin de pouvoir accepter les requêtes d'un maximum de clients simultanément.
� Ce paramétrage est géré par trois paramètres� StartServers, � MinSpareServers,� MaxSpareServers.
340
Gestion des serveurs fils
� La modularité de apache s'étend au mode de gestion des connexions clients.
� La politique de gestion est gérée par les Multi-Processing Modules ou MPM.
� Il existe plusieurs MPM mais un seul est actif.� MPM Prefork� MPM Worker� MPM Event
� MPM ITK
� Seuls Prefork et Worker seront présentés, Event et ITK sont à ce jour encore expérimentaux.
341
Les threads
� Un thread, fil d'exécution ou tâche est similaire à un processus.
� Ils représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur.
� Du point de vue de l'utilisateur, ces exécutions semblent se dérouler en parallèle.
� Toutefois, là où chaque processus possède sa propre mémoire virtuelle, les threads d'un même processus se partagent sa mémoire virtuelle.
� Par contre, tous les threads possèdent leur propre pile d�appel.
� Les threads se distinguent du multi-processus par le fait que deux processus sont typiquement indépendants et peuvent interagir uniquement à travers une API fournie par le système telle que IPC.
� D'un autre côté les threads partagent une information sur l'état du processus, des zones de mémoires ainsi que d'autres ressources.
� Puisqu'il n'y a pas de changement de mémoire virtuelle, la commutation de contexte entre deux threads est moins coûteuse que la commutation de contexte entre deux processus.
� La programmation des threads multiples est nommée Multithreading et peut être avantageusement utilisée par Apache via le MPM Worker.
342
MPM Prefork
� Toute nouvelle connexion au serveur utilise le clonage de processus fork�
� Il s'agit du mode de fonctionnement de la version 1.3 de Apache.
� La gestion multithreading n'est pas gérée Introduite en version 2 �
de Apache.
� Ce MPM offre une grande stabilité de fonctionnement due à l'isolation de chaque processus.
� Son utilisation est impérative si un service HTTP utilise une bibliothèque non conçue pour les threads, comme par exemple le PHP.
� Le principal inconvénient est la performance. Forker un processus demande plus de cycle CPU et de ressources mémoire.
343
MPM Worker
� Il s'agit du MPM par défaut de apache2.
� Permet de profiter pleinement des plate-formes multi-processeurs.
� La consommation CPU et RAM est réduite par rapport à Prefork.
� A ce jour PHP est très populaire mais ne permet pas d'utiliser Worker simplement. Même si cela est possible Apache déconseille cette méthode.
� Par contre si on utilise apache avec tomcat il est possible d'utiliser Worker.
� Sur une machine puissante, avec plus de 3Go de RAM Prefork est toutefois un meilleur choix que Worker.
344
Apache et Redhat
� La version de Apache livrée avec les rpm utilise par défaut prefork et non worker.
� Pour vérifier ce point utiliser la commande suivante :
� apachectl -lCompiled in modules:core.cprefork.chttp_core.cmod_so.c
� Pour activer worker il faut éditer le fichier /etc/sysconfig/httpd et décommenter la ligne suivante :
� HTTPD=/usr/sbin/httpd.worker
� Relancer apache par /etc/init.d/httpd restart
� apachectl -lCompiled in modules:
core.c
worker.c
http_core.c
mod_so.c
345
La commande apachectl
� Il s'agit du binaire Apache, il est possible de passer des options
� Exemple apachectl -l donne la configuration
core.c
worker.c
http_core.c
mod_so.c Module inclut statiquement permettantle chargement des modules en utilisant ladirective LoadModule
Inclusion statique du MPM worker. Pourprefork il s'agit de prefork.c
Binaires c�ur de apache
346
Directives Apache
� La configuration de Apache se fait dans un seul fichier : httpd.conf
� Les directives, une par ligne, déterminent le mode de fonctionnement de apache
� Il existe un grand nombre de directives, une des plus utile est include, qui permet de répartir la configuration de Apache dans des fichiers séparés afin de faciliter la gestion du serveur.
� Bien qu'il soit possible de gérer toute la configuration de Apache dans un fichier unique, il est conseillé d'utiliser la directive include.
� Sous Redhat par exemple httpd.conf contient la ligne suivante :
� Include conf.d/*.conf
� Tous les fichiers sous /etc/httpd/conf.d avec l'extension .conf sont donc inclus dans la configuration.
347
httpd.conf - apache2.conf
� Fichier principal de configuration
� Emplacement et nom différent selon la distribution Linux :� /etc/httpd/conf/httpd.conf RedHat�
� /etc/apache2/apache2.conf Debian�
� Exemple de configuration minimale :� User apache� Group apache� DocumentRoot /var/www/html� Listen 80
348
Enrichissement du fichier httpd.conf minimal
� User apache
� Group apache
� DocumentRoot /var/www/html
� Listen 80
� LoadModule mime_module modules/mod_mime.so
� TypesConfig /etc/mime.types
� LoadModule dir_module modules/mod_dir.so
� DirectoryIndex index.html
349
Vérifier la configuration
� La commande suivante indique le ou les fichiers de configuration utilisés.� apachectl configtest
� La syntaxe est également vérifiée.� Après toute modification de configuration, il faut
relancer apache� service httpd restart
350
Directives générales
� Influe sur le comportement global du serveur.
� Ces deux directives donne l'identité sous laquelle s'exécute le serveur Apache� User apache
� Group apache
� Listen 80, défini le port d'écoute. Il est possible de définir plusieurs ports
� ServerName localhost, défini le nom du serveur. Placer cette directive évite le warning au démarrage.
� DocumentRoot /var/www/html, défini le répertoire par défaut où sont localisés les fichiers html, ou encore la racine du site
351
Directive IfModule
� Permet de configurer Apache selon la présence ou non d'un module.
� Par défaut sous Redhat, le fichier httpd.conf contient deux directives IfModule selon le choix du MPM� Prefork� Worker
352
Configuration prefork
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
353
Processus fils
� Selon la configuration du MPM la gestion des processus fils diffère.
� Utiliser les commendes ps -ef et pstree -ph pour visualiser cet état.
�ps -ef
root 3555 1 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3557 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3558 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3559 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3560 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3561 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3562 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3563 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
apache 3564 3555 0 13:38 ? 00:00:00 /usr/sbin/httpd
�pstree -ph 3555
���httpd(3555) httpd(3557)
�� httpd(3558)
�� httpd(3559)
�� httpd(3560)
�� httpd(3561)
�� httpd(3562)
�� httpd(3563)
�� httpd(3564)
354
Configuration Worker
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
355
Hôtes Virtuels
� Par défaut le serveur web ne peut pas gérer plus d'un site.
� Pour gérer plusieurs sites il faut utiliser les hôtes virtuels introduis par la directive VirtualHost.
356
Sites exemples
� Sous /home créer deux répertoires pour héberger les sites.� mkdir -p /home/site1
� mkdir -p /home/site2
� Sous chaque site créer une page index.html contenant respectivement SITE1 et SITE2
� Paramétrer /etc/hosts pour que site1 et site2 pointent sur l'IP de la machine.� 127.0.0.1 localhost
� 10.53.2.24 site1 site2
� Tester avec la commande ping� ping site1
� ping site2
357
Définir les hôtes virtuels
� Ajouter les directives suivantes au fichier /etc/httpd/conf/httpd.conf
NameVirtualHost *
<VirtualHost *>
ServerName site1
DocumentRoot /home/site1
</VirtualHost>
<VirtualHost *>
ServerName site2
DocumentRoot /home/site2
</VirtualHost>
� Redémarrer apache
� service httpd restart
� Pointer le navigateur sur les URL suivantes :
� http://site1
� http://site2
358
Fichiers de log
� Il est parfois souhaitable de tracer le fonctionnement d'apache afin de traquer les erreurs.
� Rajouter dans le fichier httpd.conf les directives suivantes:
� LoadModule log_config_module modules/mod_log_config.so
� ErrorLog /var/log/httpd/error.log
� LogLevel warn
� L'utilisateur apache faisant tourner le démon httpd doit pouvoir créer ce fichier dans le répertoire /var/log/httpd
� Le paramètre LogLevel défini le niveau de finesse des erreurs.
359
Bonus
360
Miroir CentOS
� Il est intéressant de disposer d'une copie locale de l'ensemble des packages de la distribution. Ainsi les installations via le réseau sont plus rapides.
� La mise en place d'un tel miroir est simple, il suffit d'utiliser rsync et un script.
� Une fois le téléchargement effectué( attention avec une ADSL compter 6 à 8 heures pour le premier transfert ). Il suffit de mettre en place un simple serveur web.
� La procédure ci-dessous présente une méthode simple de création et de mise à disposition via http d'un dépot local CentOS.
� Le script utilise un miroir public ( celui de ovh dans l'exemple ) et le protocole rsync.
� L'avantage de rsync est de travailler en différentiel.
� La première syncho est longue mais les suivantes très rapides.
� Il est facile de programmer ce script dans un cron journalier et ainsi avoir un miroir à jour.
� Le script récupère les versions actuelles 5.9 et 6.3 en 32 et 64bits.
� Dans un premier temps créer un répertoire d'accueil
� mkdir -p /home/CentOS
� Puis le script mirroir_centos.sh
361
Script mirroir_centos.sh#!/bin/sh
rsync="/usr/bin/rsync -avHz --delete --stats --bwlimit=4000"
mirror=rsync://mirror.ovh.net/ftp.centos.org
verlist="5 6"
archlist="i386 x86_64"
baselist="os updates centosplus extras"
local=/home/CentOS
for ver in $verlist
do
for arch in $archlist
do
for base in $baselist
do
remote=$mirror/$ver/$base/$arch/
echo ------------------
echo $ver/$base/$arch
echo ------------------
echo "$rsync $remote $local/$ver/$base/$arch/"
if [ ! -e $local/$ver/$base/$arch ]; then
echo "Répertoire inexistant -> création de : $local/$ver/$base/$arch"
mkdir -p "$local/$ver/$base/$arch"
fi
$rsync $remote $local/$ver/$base/$arch/
done
done
done
362
Utilisation du miroir
� La clause bwlimit de rsync permet de ne pas consommer toute la bande passante de la liaison, 4Mo ici.
� La taille totale du miroir pour les versions 5 et 6 en 32 et 64 bits demande environ 64Go.
� Pour ensuite tenir le miroir à jour, il suffit de relancer le script seul le différentiel sera chargé.
� Un fois le téléchargement achevé, mettre en place un serveur web et une URL pointant vers ce miroir.
� Installer apache et créer l'URL
� yum -y install httpd
� ln -s /home/CentOS /var/www/html/centos
� Pointer un navigateur sur http://localhost/centos pour visualiser l'arborescente du miroir.
� Afin de maintenir ce miroir à jour il suffit de relancer périodiquement le script ci-dessus.
� Le plus simple est de programmer ceci dans un cron.
363
Bibliographie
� Il existe de nombreux ouvrages sur Linux.
� Préparation à la certification LPIC-1 de ENI-Editionsest un bon choix.
� L'Internet reste une sourceriche et gratuite surtout enlangue anglaise.
top related