Title: Introduction
1Introduction à Linux chapitre 1
Linux Présentation
2Linux un hobby devenu un système d'exploitation
professionnel
- Retour en août 1991... un étudiant finlandais
envoie un message sur comp.os.minix commençant
par ces quelques mots Hello everybody out
there using minix I'm doing a (free) operating
system (just a hobby, won't be big and
professional like gnu) for 386 (486) AT clones. - Cet étudiant est Linus Torvalds, et le hobby dont
il parle est devenu ce que nous connaissons
aujourd'hui... Linux.
3Linux un système d'exploitation professionnel
- A l'origine un projet d'étudiant, Linux est
maintenant un système d'exploitation mûr pour
l'industrie, qui fait partie intégrante de la
stratégie système et réseaux de nombres
d'entreprises - Fait aussi partie de la stratégie de
développement de grands noms tels que Oracle,
Sun, IBM, HP, Intel Linux bénéficie d'une
réelle reconnaissance par les plus grands. - Linux rivalise avec les systèmes d'exploitations
traditionnels, c'est pourquoi il devient
inévitable
4Linux ses atouts
- Linux intéresse principalement pour les avantages
suivants - Stabilité et robustesseExcellente qualité de
service pas de plantage surprise ni
d'instabilité, grâce à une gestion efficaces des
processus - Performances, rendement et adaptabilité Peu
gourmand en ressources, même en mode
multi-utilisateurs. Exploitable sur machines de
configuration modeste ou obsolète, tout en
restant à jour, mais aussi sur multiprocesseurs,
clusters, et mainframes - Coût réduitLe noyau Linux et la plupart des
modules étant gratuit, chacun peut construire une
version adaptée à ses besoins. Cependant, des
distributions, gratuites ou payantes, sont
disponibles sur Internet (Red Hat, Fedora,
Mandrake, SuSESlackware, Debian, etc.)
5Linux ses atouts (suite)
- Linux présente d'autres avantages
- Assistance
- Libre et Ouvert code source disponible et
modifiable - Portable disponible sur de nombreux types de
systèmes - Conforme aux normes et standards
- Très proche des autres Unix
- Nombreux logiciels interopérables, souples et
extensibles - X Window
- Dynamique industrielle
- Bénéficie à tous les utilisateurs
- Migration facilitée par émulateurs et portage
d'applications
6Linux applications
- Station de développementLa plupart des langages
disponibles ADA95, C, C, Fortran, Java,
Cobol, LISP, Prolog, SmallTalk, Delphi (Kylix)
outils de développement perfectionnés contrôle
des sources, travail en groupe (groupware), suivi
des erreurs, validation et vérification - Station bureautiqueSuites bureautiques de
qualité professionnelle (Open Office) couplées
aux environnements graphiques évolués tels KDE ou
Gnome traitement de texte, tableur, logiciel de
présentation et de dessin, gestion de fichiers,
partage de documents, etc. - Station réseauPalette complète d'outils réseau
navigateur, courrier électronique, agenda (IBM
Lotus), FTP, messagerie instantanée, IRC,
newsgroups, et outils professionnels ping,
traceroute, analyseur de protocoles, etc. - Station graphique ou PAO
- Centre multimédia
7Linux applications (suite)
- Serveur de fichiers et d'impressionSupport des
trois principaux protocoles de partages de
fichiers NFS (UNIX), SMB (Windows), AppleShare
(MacOS) et protocoles de partages d'imprimantes.
Egalement serveur de fax. - Serveur Réseau puissantServeur Web (Apache) avec
support de PHP, MySQL, etc., serveur FTP,
newsgroups, courrier électronique, DNS Puissant
firewall (iptables), routage (RIP, IGRP, OSPF,
BGP4, etc.), proxy NAT - Serveur d'applications client/serveurSGBD
relationnels, relationnels-objets ou objets,
commerciaux (Oracle 9i, IBM DB2) ou libres
(mySQL, PostgreSQL), serveurs d'applications JAVA - AdmnistrationIBM Tivoli, IBM Websphere, BEA
Weblogic
8Linux présentation
- Linux est un système d'exploitation libre de type
UNIX développé par le finlandais Linus Torvalds. - Le noyau de Linux, le kernel , le coeur du
système, est développé sous licence GNU - La licence GNU spécifie que le code source est
disponible à quiconque, mais que sa version
originale appartient à son auteur. - Autour de ce noyau s'articulent des modules, les
composants du systèmes qui permettent
d'interfacer le noyau avec les périphériques - Le Shell est l'interface utilisateur en mode
texte - Le système X Window est un environnement
graphique, au dessus duquel une surcouche
logicielle peut être implémentée, permettant
d'étendre les fonctions de X Window par ex. KDE
ou Gnome
9Linux présentation (suite)
- Il existe de nombreuses applications pour Linux
- Gratuites ou payantes, libres ou protégées
- La compilation de diverses applications, du
noyau, des environnements graphiques, donne lieu
à des distributions, généralement fournies avec
une interface d'installation du système et des
outils d'administration - Il existe nombre de distributions, gratuites ou
payantes - RedHat et sa version gratuite Fedora, Mandrake,
SuSE, Debian, Slackware, - Et une foule de distributions moins connues
adaptées à certains besoins - Exemple Knoppix, une version démarrable à
partir d'un CDROM - Xbox Linux, transforme une console Xbox en
système Linux - FraizeWall, qui offre une passerelle/firewall
préconfigurés - etc.
10Linux l'avenir
- Dernier noyau disponible 2.6
- Adapté aussi bien aux mainframes, qu'aux stations
de travail et microcontrôleurs embarqués - Optimisation pour serveurs à 32 processeurs,
support des architectures Numa (Non Uniform
Memory Access) - Derniers processeurs supportés
- 4 milliards d'utilisateurs connectés, 1 milliard
de processus possibles - Architecture UCLinux dédiée aux systèmes embarqués
11Linux présentation
12Introduction à Linux chapitre 2
13Etapes de démarrage
- Le BIOS vérifie le système (POST)
- Bootloader 1 lancé à partir du MBR du disque dur
principal - Le Boot1oader 1 lance le bootloader 2 sur la
partition /boot/ - Le Bootloader 2 charge le noyau Linux (kernel) et
initrd en mémoire - Le noyau charge les modules nécessaires (initrd)
et monte la partition root en lecture seulement - Le noyau passe le contrôle du processus de
démarrage au programme /sbin/init. - /sbin/init chargement des services et outils de
l'espace utilisateur, montage des partitions
répertoriées dans /etc/fstab. - Invite de connexion de l'utilisateur
Bootloader chargeur de démarrage MBR Master
Boot Record
14Etapes de démarrage BIOS
- Au démarrage, exécution du BIOS (Basic
Input/Output System) stocké en ROM (mémoire
morte) - Test du système, recherche et vérification des
périphériques, principalement périphérique
d'amorçage du système (disquette, CDROM, ou
disque dur) - Recherche du MBR sur le périphérique d'amorçage
- MBR (Master Boot Record) secteur de 512 octets,
contient le bootloader, ainsi que la table de
partition du disque. - Chargement et exécution du Bootloader, suite
d'instructions de démarrage du système
d'exploitation sur le périphérique.
15Etapes de démarrage chargeur de démarrage
- Les deux chargeurs de démarrage les plus connus
GRUB ou LILO - Exécution divisée en deux étapes
- le BIOS exécute un binaire de taille réduite
stocké dans le MBR - ce 1er chargeur localise et exécute un 2è
chargeur stocké à l'endroit indiqué dans la
configuration (disque dur par ex.) - LILO configuration succinte stockée dans le
MBR. A chaque changement de configuration, une
écriture dans le MBR doit être faite (/sbin/lilo
-v -v) - GRUB chargeur plus récent, lecture possible de
la configuration sur partition ext2 ou ext3 dans
/boot/grub/grub.conf
16Etapes de démarrage chargeur de démarrage
- Affichage de l'écran de sélection des système
d'exploitation ou des différents noyaux Linux.
Une séléction automatique d'un choix par défaut
est effectué au bout d'un laps de temps
configurable. - En fonction du choix, exécution d'un binaire de
noyau Linux stocké dans /boot/ nom de type
vmlinuz-ltversion-noyaugt (où ltversion-noyaugt
correspond à la version du noyau spécifiée dans
les paramètres du chargeur de démarrage) - chargement en mémoire de initrd, "image disque
RAM initial" utilisé ensuite par le noyau pour
charger des pilotes utiles au système (par ex.
pour disque SCSI) - Avertissement Supprimer le répertoire /initrd/
provoquerait un échec de votre système, avec un
message d'erreur panique au moment du démarrage. - Le processus de démarrage est cédé au noyau
(kernel)
17Etapes de démarrage noyau
- Le noyau initialise et configure la mémoire, les
processeurs, le système E/S, les périphériques de
stockage, "standards" - Le noyau utilise ensuite initrd pour charger des
pilotes et modules spécifiques (principalement
SCSI, RAID, USB) nécessaires au noyau pour
accéder au système de fichier réel et continuer
le démarrage - Le fichier /boot/initrd.img est chargé en mémoire
comme un périphérique de stockage virtuel RAMDisk
(par ex. /dev/ram0) - Ce disque virtuel RAMDisk est ensuite monté en
tant que racine temporaire du système de fichiers
(/). - Les pilotes et modules mentionnés plus haut sont
maintenant chargés par le noyau. - initrd est démonté en tant que racine et la
racine définitive est montée. - À ce stade, le noyau est chargé en mémoire et est
désormais opérationnel. Il faut maintenant
initialiser l'environnement utilisateur.
18Etapes de démarrage init
- Le programme /sbin/init finalise le processus de
démarrage. - Il est guidé par le fichier /etc/inittab qui
décrit l'ensemble des processus qui sont lancés
en fonction des circonstances - principalement à l'initialisation du système,
lorsque le système passe à un niveau d'exécution
différent (runlevel), lorsque les touches
CTRL-ALT-DEL sont pressées, etc. - Suivant le runlevel, les processus lancés sont
divers gestionnaire de son, serveur de mail,
web, scheduler de tâches (crond), etc. - /sbin/init devient parent ou grand-parent de tous
les processus qui sont lancés. - init tourne tout le temps. Si init meure, tous
les processus meurent.
19Etapes de démarrage init (suite)
- /etc/inittab lance d'abord le script
/etc/rc.d/rc.sysinit sisysinit/etc/rc.d/rc.sysi
nit - rc.sysinit réalise les opérations
d'initialisation du système - initialise la variable PATH pour les autres
scripts - active la partition de swap
- monte les partitions de disque dur suivant
/etc/fstab - initialise le nom du système (hostname)
- vérifie l'intégrité du système de fichiers
- démarre la gestion des quotas
- initialise le "Plug and Play"
- prépare la gestion des modules
- initialise l'horloge système
- détruit les fichiers de verrouillage
20Etapes de démarrage init (suite)
- init lance ensuite divers processus en fonction
du niveau d'exécution (runlevel) configuré dans
inittab - Le runlevel est le contexte dans lequel se trouve
le système et qui va induire l'arrêt ou le
démarrage de processus. On distingue 7 runlevels
différents - 0 - Arrêt du système (Halt)
- 1 - Mode mono-utilisateur
- 2 - Mode multi-utilisateurs (sans NFS)
- 3 - Mode Multi-utilisateurs
- 4 Non utilisé
- 5 - Mode Multi-utilisateurs avec login graphique
- 6 Redémarrage du système (Reboot)
- Le runlevel peut changer pendant la vie du
système. init effectue alors les opérations
correspondantes
21Etapes de démarrage init (suite)
- En fonction du runlevel, innitab indique à init
de démarrer les processus dont les scripts de
démarrage se trouvent dans le répertoire
correspondant au runlevelPar ex pour runlevel
5, /etc/rc.d/rc5.d/ - En réalité, ces scripts sont des liens
symboliques vers des scripts existants dans le
répertoire /etc/rc.d/init.d/. - On peut ainsi modifier le lien (ajouter,
supprimer, renommer) sans affecter le script
auquel il fait référence - Le nom de ces liens symboliques décrit si les
processus doivent être démarrés (S, Started) ou
arrêtés (K, Killed), et dans quel ordre (le
nombre suivant la 1ère lettre du nom)Par ex
dans /etc/rc.d/rc5.d/ on trouve les scripts
S10network et S55sshdS10network indique que
toutes les opérations relatives au démarrage du
réseau sont effectuées avant de démarrer le
serveur de connexion sécurisée sshd
22Etapes de démarrage init (suite)
- init arrête tout d'abord tous les liens
symboliques K du répertoire en émettant la
commande /etc/rc.d/init.d/ltcommandegt stop,
ltcommandegt correspondant au processus à arrêter - Elle démarre ensuite tous les liens symboliques S
/etc/rc.d/init.d/ltcommandegt startPar ex le
lien S55xinetd lancera la commande
/etc/rc.d/init.d/xinetd start - Remarque on peut utiliser ces mêmes scripts en
tant que super-utilisateur (root) pour démarrer
ou arrêter des servicesPar ex
/etc/rc.d/init.d/httpd stop arrêtera le serveur
Web Apache - Pour les runlevels 2 à 5, le script local
(S99local) pointant vers /etc/rc.d/rc.local est
le dernier à être exécuté. Ce script permet de
lancer des commandes de personnalisation du
système.
23Etapes de démarrage init (suite)
- Après avoir exécuté tout les scripts de /etc/rc.d
pour le runlevel, le script /etc/inittab établit
un processus /sbin/mingetty pour chaque console
virtuelle (invites de login) assignée à ce niveau
d'exécution - Pour les runlevels 2 à 5, six consoles virtuelles
sont démarrées - Le runlevel 1 (mode mono-utilisateur) n'obtient
qu'une console - Pour les runlevels 0 (arrêt) et 6 (redémarrage),
aucune console n'est démarrée - mingetty est un getty, un gestionnaire (GET) de
terminal (TTY, teletype). Le getty attend une
connexion sur les liens série. A la connexion, il
configure le lien série, demande un login et un
mot de passe, puis effectue le processus de login
pour l'utilisateur - Pour le runlevel 5 (login graphique),
/etc/inittab exécute le script /etc/X11/prefdm
qui affiche le login graphique - La séquence de démarrage est terminée.
24Introduction à Linux
25Les services réseaux
- Plusieurs services réseaux disponibles
- Partage de fichiers et d'imprimantes (NFS, SMB)
- Serveurs de connexion sécurisée (sshd) ou pas
(telnet) - Serveurs web (httpd apache)
- Serveurs FTP (wu-ftpd, pro-ftpd, etc.)
- Etc.
- Deux moyens de démarrer ces services
- À l'initialisation du runlevel ou par ligne de
commande - À l'attente de connexion avec les TCP Wrappers et
Xinetd
26Lancement des services réseaux
- Dans le chapitre précédent, nous avons vu comment
démarrer un service (réseau ou pas) à
l'initialisation du système ou par ligne de
commande - Linux offre un contrôle d'accès sécurisé fiable
grâce à la mise en oeuvre du firewall IPTables - Cependant, pour accroître la sécurité, il est
recommandé d'ajouter une couche de protection
supplémentaire individuelle à chaque service
réseau démarré - Cette protection est offerte sur deux niveaux
- Les TCP Wrappers (enveloppeurs réseaux) qui
détermine les machines autorisées à se connecter
à chaque service - Xinetd qui s'intercale entre les TCP Wrappers et
le service réseaux et offre un contrôle d'accès
plus affiné au service réseau
27Les enveloppeurs TCP
- Les enveloppeurs TCP offrent un contrôle d'accès
basé sur le nom ou l'adresse de la machine qui
tente la connexion - Lorsqu'une tentative de connexion à un service
est effectuée - L'enveloppeur TCP contrôle l'accès en fonction
des fichiers /etc/hosts.allow et /etc/hosts.deny - Il loggue (enregistre) ensuite les informations
de connexion dans le fichier de logs
/var/log/secure ou /var/log/messages - Si l'accès est donné, l'enveloppeur TCP
n'interfère plus dans le processus de
communication entre le serveur et le client - Les enveloppeurs TCP sont ainsi complètement
transparents dans le contrôle d'accès à un
serveur - Ils offrent de plus une gestion centralisée de
l'accès aux services réseaux
28Xinetd un super-server
- xinetd est un super-service enveloppé dans un
enveloppeur TCP contrôlant l'accès à un
sous-réseau de services réseaux comme ftpd,
telnetd, etc. - En ce sens, xinetd est un super-service car il
centralise l'accès à d'autres services réseaux et
permet de les contrôler plus finement - xinetd offre une panoplie complète de gestion du
service, allant du simple contrôle d'accès à la
redirection réseau, en passant par la gestion des
ressources et l'enregistrement de connexion
(logging) - C'est un service très puissant. Cependant,
beaucoup de services décident de contrôler
eux-même l'accès et se passent de xinetd - Exemples Samba (httpd), sshd
29Fonctionnement de xinetd
- Xinetd écoute sur certains ports réseaux associés
à des services - Lors d'une tentative de connexion à un service
réseau géré par xinetd - Une première vérification d'accès est faite par
l'enveloppeur TCP - Si l'accès est autorisé, xinetd vérifie l'accès
et les modalités de démarrage du service en
fonction de sa propre configuration pour ce
service - Si l'accès est autorisé par xinetd, une instance
du service est démarrée à qui la connexion est
cédée. xinetd n'intervient plus alors dans le
processus de communication entre le serveur et le
client - Xinetd gère les nouvelles tentatives de connexion
à ce service, et en fonction des ressources
allouées, décide s'il doit lancer une nouvelle
instance de ce service
30Xinetd fichiers de configuration
- /etc/xinetd.conf configuration globale de
xinetd - Le répertoire /etc/xinetd.d/ fichiers de
configuration spécifiques au service - Un seul fichier est nécessaire, mais organisation
plus simple avec un fichier pour chaque service - includedir /etc/xinetd.d (dans xinetd.conf)
- La plupart des directives de configuration
globale sont héritées aux services
31/etc/xinetd.conf configuration globale
- Paramètres généraux lus une seule fois au
démarrage de xinetd - Lors de changement dans la configuration,
nécessaire de redémarrer xinetd - Exemple
- defaults instances
60 log_type SYSLOG
authpriv log_on_success HOST
PID log_on_failure HOST
cps 25 30includedir
/etc/xinetd.d
32/etc/xinetd.conf configuration globale
- Instances nombre de requêtes maximum que xinetd
peut gérer - log_type les logs sont envoyées à syslogd avec
la facilité authpriv. Pour enregistrer
directement dans un fichier sans envoyer à
syslogd, FILE /var/log/xinetdlog - log_on_success engregistrer les connexions
réussies. Par defaut, l'adresse IP de la machine
et le process ID du server lancé sont
enregistrés - log_on_failure entregistrer les connexions
non-réussies ou non-autorisées - Cps nombre de connexion / seconde pour chaque
service. Si cette limite est atteinte, le service
est inacessible pendant 30s. - includedir /etc/xinetd.d/ inclus les options de
configurations pour chaque service, sous la forme
d'un fichier spécifique
33Le répertoire /etc/xinetd.d
- Ce répertoire contient les fichiers de
configuration spécifiques à chaque service. Comme
xinetd.conf, lus au démarrage de xinetd une fois
pour toute. - Exemple
- service telnet flags REUSE
socket_type stream wait
no user root
server /usr/sbin/in.telnetd
log_on_failure USERID disable
yes
34Le répertoire /etc/xinetd.d
- Service nom du service. Correspond en général
aux services définis dans /etc/services file. - Flags définis les attributs de la connexion.
REUSE ordonne à xinetd de réutiliser le socket
pour une connexion Telnet - socket_type définit le type de socket à stream
- Wait le service est simple-tâche (yes) our
multi-tâches (no) ? - User sous quel utilisateur le service doit être
lancé - Server définit le programme à lancer
- log_on_failure paramètres à enregistrer en cas
de connexion réussie, en plus des paramètres par
défaut définis dans xinetd.conf - Disable définit si le service est active ou pas