Les services

Transcription

Les services
Les Services
Mémoire sur la pratique du shell Bash sous Gnu Linux
1. La console
2. Les services
3. Le networking
Par Patrick Hautrive
http://hautrive.free.fr
Les services © Patrick Hautrive !;~) 2010
1
Table des matières
DEVICE........................3PRINT.........................61DEB...........................118NIS.............................159
DISK............................11KERNEL.....................68TARBALL.................124APACHE...................160
FLOPPY......................13VMLINUZ...................73XWINDOW...............127MESSAGE................167
FSTAB.........................16PROC...........................78GNOME....................132POSTFIX...................170
INODE.........................21SYSLOGD...................80KDE...........................133IPTABLES................172
EXT2...........................30STOP...........................88BACKUP...................134MYSQL.....................187
REISERFS...................34USER...........................89VIM...........................136PHP............................190
RAID...........................35GROUP.......................94EMACS.....................140CMS...........................192
LVM............................37QUOTA.......................95TEXTE......................141FTP............................196
SWAP..........................39CRONTAB..................98IMAGE......................142IRC............................199
MOUNT......................41MAKE.......................104SOUND.....................143SSH............................202
OSI...............................44GCC...........................108VIDEO.......................145BOOKS.....................205
TCP/IP.........................48LIBRARY.................111SAMBA.....................146
NETWORK.................53MODULE..................114JAVA.........................154
FIREWALL.................58RPM...........................116NFS............................156
Copyright © 2010 Patrick Marceau Louis HAUTRIVE
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front­Cover Texts, and no Back­Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation Licence". For all the examples of commands and all the scripts, please refer to the GNU General Public License as published by the Free Software Foundation.
http://www.gnu.org/licenses/fdl.html
Copyright © 2010 Patrick Marceau Louis HAUTRIVE
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the license, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public Licence along with this program. If not, see:
http://www.gnu.org/licenses/ Les services © Patrick Hautrive !;~) 2010
2
DEVICE
Les périphériques
Les périphériques représentent tous les matériels (hardware) connectés à la carte mère et qui font d'un ordinateur (computer) un tout fonctionnel. Il existe de nombreux types de périphériques et de nombreux types de connexions.
Les disques durs et les lecteurs de CD­ROM sont des périphériques (devices) de stockage qui peuvent être classés selon le type de contrôleur avec lesquels ils fonctionnent (IDE­ATAPI, SATA ou SCSI). Les autres matériels sont en général classés selon leur fonction (imprimante, scanner, tablettes, disques externes, routeurs, écrans, projecteurs, appareils photographiques, carte d'acquisition vidéo, modem, etc.) ou sont classés selon le type de leur connexion (SERIE, PARALLEL, USB, FIREWIRE, FLASH, VGA, DVI, HDMI, SDCARD). Les types de connexion correspondent à un type de voix de communication (bus) sur la carte mère, et sont également appelées des ports (ports). Les périphériques sont des fichiers spéciaux qui sont localisés dans le répertoire “/dev/*” et qui parfois sont des liens génériques qui conduisent aux périphériques. Les évènements des périphériques sont gérés par le daemon « udev ».
L'architecture des bus de la carte mère
L'architecture des bus de la carte mère est constituée en général d'un bus local qui permet au processeur (cpu) et à la mémoire vive (ram) de communiquer, et d'un bus auxiliaire qui permet aux périphériques de communiquer (USB, ETHERNET, AGP, ISA, SCSI, IDE, EXTENDED CARD).
Les périphériques d'entrées
Les périphériques d'entrées sont les périphériques qui permettent de communiquer avec le système et d'envoyer des informations ou des commandes. Les périphériques d'entrées sont le clavier (keyboard) et la souris (mouse). La souris est un périphérique de pointage qui fonctionne avec l'interface graphique(xserver). Les périphériques de pointage sont configurés dans le fichier de configuration de l'interface graphique (“/etc/X11R6/XF86Config­4” avec le serveur graphique Xfree86 et “/etc/xorg.conf” avec le serveur XORG). Dans Debian, la configuration de l'affichage graphique s'effectue avec la commande «dpkg­reconfigure xserver­xorg».
Les types de connexions
Les périphériques représentent tous les matériels qui peuvent être connectés directement ou indirectement sur la carte mère (mother board). Les connexions directes sont réalisées par des branchements sur les contrôleurs intégrés (controler), tandis que les connexions indirectes sont Les services © Patrick Hautrive !;~) 2010
3
réalisées par l'intermédiaire des connecteurs (connectors) ou des cartes filles (extension card). Ainsi, les cartes mères intègrent de plus en plus de puces (chipset) dédiées à certaines tâches.
Par exemple, les disques durs (hard disks) et les lecteurs (drives) sont branchés et alimentés (power) à l'intérieur de l'unité centrale (central processing unit) sur les embranchements des contrôleurs de disque. De même les cartes réseaux Ethernet (network interfaces) sont branchées sur des emplacements (RJ45) qui sont le plus souvent déjà intégrées à la carte mère.
Les emplacements (slots) pour les cartes d'extension (ISA, PCI, AGP, PCX) peuvent recevoir d'autres cartes réseaux ou d'autres cartes contrôleurs. Les connecteurs (SERIE, PARALLEL, USB, FIREWIRE, FLASH, VGA, DVI, HDMI) peuvent recevoir des disques externes, des scanners, des tablettes, des appareils photographiques ou des imprimantes, ou tout autre type de matériel qui est pourvu de connecteurs.
Les types de connexions (mother board)
Controlers
FLOPPY
IDE
SATA
SCSI
Wifi
Interface
Video
Slots (cards)
ISA
PCI
PCX
SCSI
RAM
Eth0
AGP HDMI
Connectors
Series
Parallel
Usb
Firewire
Flash
RJ45
VGA DVI
Les spécifications des périphériques
Le transfert de données sur un périphérique est plus ou moins rapide (bits per seconds) selon la technologie et selon le type de connexion.
Les fichiers spéciaux
Les fichiers spéciaux sont des fichiers qui servent pour le transfert de données entre le système et des processus ou entre le système et des périphériques. Les transferts des données s'effectuent par l'intermédiaire des fichiers descripteurs (descriptors files) qui représentent les moyens de communication des processus (stdin, stdout, stderr) et qui assurent les redirections entre processus (IPC). Les entrées (In) et les sorties (Out) des processus sont numérotées zéro pour l'entrée, et de un à quatre pour les sorties.
Les fichiers spéciaux peuvent être des sockets réseaux (s), des tubes nommés (p) pour les redirections FIFO (First In First Out), des fichiers de gestion (“/dev/null”, “dev/zero” ou “/dev/random”), ou des fichiers d'interface avec les périphériques physiques. Ces fichiers d'interface qui servent à la communication entre le système et les périphériques physiques sont appelés des pseudo périphériques. Les pseudo périphériques sont de type caractère ©, quand les transmissions s'effectuent bit à bit, ou de type bloc (b), quand les transmissions s'effectuent par bloc entier.
Les services © Patrick Hautrive !;~) 2010
4
Les fichiers spéciaux des périphériques (devices)
/dev/console
/dev/mouse
/dev/psaux
/dev/modem
/dev/ppp
/dev/cdrom
/dev/lp0
/dev/hd
/dev/sd
/dev/sg
/dev/fd
/dev/st
/dev/tty
/dev/pty
/dev/cua
/dev/stdin
/stdout
/dev/stderr
/dev/full
/dev/null
/dev/zero
/dev/random
Le lien vers la console maitresse (premier terminal virtuel)
Le lien vers la sourie (link)
Le périphérique vers la sourie (round connector type)
Le lien vers périphérique modem (series connector type)
Le périphérique pour les connections avec le protocol PPP
Le lien vers le lecteur de CD­ROM (link)
Le périphérique pour l'imprimante (first parallel port)
Les périphériques de type IDE (hard disk)
Les périphériques de type SCSI et USB (scsi disk)
Les périphériques FIREWIRE Les périphériques lecteurs de disquettes (floppy disk)
Les périphériques lecteurs de bandes pour les sauvegardes (streamer)
Les terminaux virtuels (teletype)
Les pseudo terminaux pour l'interface graphique (pseudo type)
Les modems (modulateur démodulateur)
Le speudo périphérique d'entrée standard d'un processus
Le speudo périphérique de sortie standard d'un processus
Le speudo périphérique de sortie standard des erreurs d'un processus
Le speudo périphérique qui simule un périphérique saturé (la saturation)
Le pseudo périphérique qui fait office de poubelle (le grand vide)
Le pseudo périphérique qui envoi un flux de bit à zéro (l'uniforme)
Le pseudo périphérique qui donne un nombre aléatoire du noyau (le hasard)
Les types de périphériques
Les fichiers spéciaux des périphériques représentent des périphériques physiques (device) pour le système et sont tous définis dans le répertoire des périphériques (“/dev/*”). Les fichiers spéciaux des périphériques servent pour le transfert de données depuis et vers le périphérique. Les fichiers spéciaux des périphériques peuvent être de type caractère (caracter) ou de type bloc (bloc).
Le type de fichier spécial qui convient à un périphérique va dépendre de son type d'interface (controler) ou de son type de connexion (connector). Les disques sont toujours des périphériques de type bloc. Les terminaux virtuels sont des périphériques de type caractère. Les fichiers spéciaux se caractérisent par leurs numéros (Major, Minor).
Les modes de transfert
Les modes de transfert des fichiers périphériques sont de type bloc ou de type caractère. Le mode bloc se caractérise par un accès aléatoire, c'est­à­dire que les enregistrements et les consultations peuvent survenir à n'importe quel moment. Le mode bloc est le mode privilégié pour tous les périphériques de grande capacité et les transferts s'effectuent par bloc entier de données (Disks, Drives, Floppy, Loop, Les services © Patrick Hautrive !;~) 2010
5
Ramdisk, Streamers, Data Base, Swap).
Le mode caractère se caractérise par un accès séquentiel, c'est­à­dire qu'une connexion est établie avec le périphérique, et pendant toute la durée de la connexion, le périphérique est en attente de transfert, et les échanges se font dans les deux sens et les caractères sont transmis les uns après les autres (octet par octet). Le mode caractère est le mode privilégié pour les périphériques qui exigent des réponses rapides et qui établissent des échanges dans les deux sens (Terminals, Printers). Les imprimantes sont des périphériques de type caractère, mais qui utilisent le port parallèle pour démultiplier les canaux de transferts de données.
Les périphériques caractères
Les fichiers spéciaux des périphériques de type caractère permettent de transférer des données, caractère par caractère (caracter).
Les périphériques blocs
Les fichiers spéciaux des périphériques de type bloc utilisent des tampons de données (buffers) qui permettent de transférer des données par bloc entier (bloc). Par exemple, un bloc peut contenir 512 Octets, quand le tampon est rempli, son contenu est transféré par un flux de données. Les périphériques de type bloc possèdent également une interface en mode caractère, qualifiée de brute (raw).
Les numéros Majeur et Mineur
Les numéros Majeurs (major device number) et Mineurs (minor device number) sont pour le système les identifiants des fichiers de périphériques.
Le numéro Major correspond au pilote (device driver) qui va gérer les transferts de données pour le périphérique. Le numéro Minor correspond au périphérique (device) lui même et constitue un argument pour le pilote. Plusieurs périphériques peuvent partager le même numéro Major, parce qu'ils sont gérés par le même pilote, mais chaque périphérique possèdent son propre numéro Minor qui permet de l'identifier.
La commande “mknod” permet de créer les fichiers spéciaux pour les périphériques avec leurs numéros Majeurs et Mineurs. Le script “/dev/MAKEDEV” permet également de générer les fichiers spéciaux.
Les noms des périphériques
Les noms des fichiers spéciaux sont très précis et correspondent au type de périphériques qu'ils représentent. Toutefois, des liens génériques peuvent être créés dans le répertoire “/dev/*” afin de faciliter la configuration. Par exemple, le lien “/dev/cdrom” conduit vers le périphérique “/dev/hdc”, Les services © Patrick Hautrive !;~) 2010
6
ou le lien “/dev/mouse” conduit vers le périphérique “/dev/ttyS0”.
La commande «hotplug» permet de générer les fichiers spéciaux pour un périphérique USB branché à chaud (sans arrêter, ni rebooter le système).
La configuration des périphériques
La configuration des périphériques s'adapte aux circonstances et emploi selon les situations des commandes différentes.
La configuration des périphériques
Commands
hotplug
mount
umount
fdisk
mkfs
fsck
losetup
mknod
MAKEDEV
ln
ls
dmesg
mkdir
make
modprobe
man mount
hotplug
fdisk
cfdisk
Files
lspci
lsusb
lsmod
usbmodules
sane­find­scanner
sane­usb
update­usbids
devfs
udev
udisks
/dev/*
/etc/fstab
/etc/X11R6/XF86Config­4
/etc/xorg.conf
/proc/mounts
/proc/bus/pci/devices
/proc/bus/usb/devices
/proc/ide
/proc/scsi/device_info
/proc/tty/drivers
Les fichiers périphériques
Les fichiers spéciaux des périphériques sont créés, soit automatiquement par le système, soit manuellement par l'administrateur, avec la commande “mknod” et le script “/dev/MAKEDEV”.
Les périphériques (devices)
Le disque dur IDE maitre (master) de la première nappe
La première partition
La deuxième partition
Le disque dur IDE esclave (slave) de la première nappe
Le disque dur IDE maitre (master) de la deuxième nappe
Le disque dur IDE esclave (slave) de la deuxième nappe
Le périphérique SCSI en tête de la chaine
La première partition
La deuxième partition
Le périphérique SCSI en second de la chaine
Le lecteur de disquette 3 pouces ¼
La première carte réseau
La deuxième carte réseau
Les services © Patrick Hautrive !;~) 2010
7
/dev/hda
/de/hda1
/dev/hda2
/dev/hdb
/dev/hdc
/dev/hdd
/dev/sda
/de/sda1
/dev/sda2
/dev/sdb
/dev/fd0
eth0
eth1
Les paramètres des périphériques
Les paramètres des périphériques sont les identifiants des interruptions et les adresses en mémoire pour communiquer directement avec le périphérique (hexadecimal). Les interruptions IRQ (Interrupt Request) permettent de signaler au système qu'un évènement s'est produit (souris, clavier).
Les paramètres des périphériques
IRQ (Interruption Request)
Chanel DMA (direct Access Memory)
Address I/O (Input Output)
Address shared Memory
Les ports des périphériques
Les ports représentent les types de connexion des périphériques. Chaque port possède ses propres caractéristiques techniques de transfert et est géré par un pilote spécifique (driver).
Par exemple, le port série (serial) peut être utilisé avec une sourie ou un modem. Le port parallèle (parallel) est généralement employé pour une imprimante.
Souvent les identifiants numériques pour le système commencent à partir de zéro, tandis que les noms usuels commencent à partir de l'unité.
Les ports des périphériques
Port Series
ttyS0
ttyS1
ttys2
ttys3
=
=
=
=
COM1
COM2
COM3
COM4
Port Parallel
lp0
lp1
=
=
Devices
LPT1
LPT2
fd0
fd1
hda
sda
sga
=
=
=
=
=
FLOPPY1 (A:\)
FLOPPY2 (B:\)
IDE (master one)
SCSI (one)
FIREWIRE (ieee1394)
Les périphériques USB
Les périphériques USB se caractérisent par le port USB. Les périphériques USB sont considérés par le noyau comme des périphériques SCSI (émulation SCSI). Les périphériques USB peuvent être montés avec le système de fichiers “usbdevfs” ou plus récemment “usbfs”.
Les périphériques SCSI peuvent être de plusieurs types (SCSI, SCSI GENERIC, SCSI DISK et USB MASS STORAGE). Plusieurs types de contrôleurs USB se sont succédés, correspondant à plusieurs normes ou à plusieurs puces (chipset) différentes (EHCI, OHCI, UHCI).
Les services © Patrick Hautrive !;~) 2010
8
Les périphériques USB
EHCI
OHCI
UHCI
usbcore.o
usb­uhci.o
usb­ohci.o
(USB 2.0)
(Sis, Ali chipset, Power Book, Imacs, Compaq)
(Intel, Via)
Un exemple de compilation USB
La compilation du noyau (kernel) permet d'intégrer dans le système ou par l'intermédiaire de modules la gestion des périphériques USB et le chargement des pilotes USB.
Un exemple de compilation du noyau avec le pilote USB
Installation du package “pcutils”
Compilation d'un noyau
Chargement des modules USB
urpmi pciutils
lspci
lsusb
hotplug
cd /usr/src/linux
make menuconfig
make modules
make modules_install
modprobe usbcore
modprobe usbmouse
dmesg | grep USB
modprobe sd_mod
modprobe usb_storage
mkdir /mnt/usb
mount ­t vfat /dev/sda1 /mnt/usb
Les exemples de device
ls ­l /dev/hda7
ls ­l /dev/ide/host0/bus1/target0/lun0/part7
mount ­o loop http://public/install.iso /public/distro
loseup
mknod ­m 0664 /dev/exemple b 42 0
ln ­s /de/sda1 /dev/usb
ln ­s /de/ttys0 /dev/modem
echo “AT” > /dev/modem
less /dev/MAKEDEV
ls ­l /dev/pl0
mkdir /mnt/cdrom ; mount ­t iso9660 /dev/cdrom /mnt/cdrom ­o ro with devfs
rpm ­i pciutils
lspci ­v ; cat /proc/pci
mount ­t usbdevfs none /proc/bus/usb
vi /etc/fstab
/none
/proc/bus/usb
usbdevfs defaults
0 0
Les services © Patrick Hautrive !;~) 2010
9
vi /etc/X11R6/XF86Config­4
Section Input Device
identifier
“Mouse 0”
driver
“mouse”
option
“Protocol” “IMPS/2”
option
“ZAx is Mapping” “4 5”
option
“Device” “/dev/input/misc”
cdrecord ­scanbus
udisks –dump
hotplug
fdisk /dev/hda
cfdisk /dev/sda
Les services © Patrick Hautrive !;~) 2010
10
DISK
Les disques
Les performances des disques durs (IDE, SCSI, SATA, USB, FIREWIRE, FLASH) se sont améliorés au fil du temps. Les BIOS (Basic Input Output System) qui supporte le LBA (Large Bloc Addressing) permettent un adressage au boot qui va au­delà du 1024ième cylindre. L'indice MTBF (Mean Time Between Failure) permet de mesurer la durée de vie moyenne d'un disque qui se situe aux environs de 50 000 heures d'usage. La ZBR (Zone Bit Recording) désigne les disques dont les pistes externes contiennent plus de blocs.
Les spécifications des disques
Les spécifications des disques
Les permissions POSIX
Les libellés (label)
Les attributs
Les quotas
Les ACL (Access Control List)
Les logiciels de restauration
La taille des blocs logiques
La taille d'un bloc logique sur le disque peut varier de 512 Octets à 4096 Octets. La taille optimum dépend naturellement de la taille estimée des fichiers. Les petits blocs sont plus adaptés aux petits fichiers. La taille moyenne des fichiers peut être évaluée avec le rapport “%bloc/Nombre d'inodes”.
La configuration des disques
La configuration des disques
Commands
df
du
kdiskfree
dd
mkdir
quota
ulimit
lsattr
chattr
ddrescue
Files
fdisk
mount
umount
mkfs
fsck
/etc/fstab
/mnt/*
Les services © Patrick Hautrive !;~) 2010
11
L'installation d'un disque
L'installation d'un disque dans le système présuppose que son installation matérielle est conforme (nappe, cavalier, alimentation) et que le fichier spécial de périphérique qui lui correspond existe avec les bons paramètres (Major, Minor).
L'installation va consister à créer le répertoire (mkdir) pour le point de montage du disque dans l'arborescence racine, à créer la partition (fdisk), à installer le système de fichier (mkfs), à monter le nouveau système de fichiers (mount), et enfin à renseigner le fichier de configuration des systèmes de fichiers (“/etc/fstab”) pour monter automatiquement le nouveau système de fichier lors du prochain redémarrage (reboot).
Un exemple d'installation d'un disque IDE
mkdir /HDB1
fdisk /dev/hdb
mke2fs ­c /dev/hdb1
echo “/dev/hdb1 /HDB1 ext2 default 0 1” >> /etc/fstab
mount ­t ext2 /dev/hdb1 /HDB1
shutdown ­Rf now
Les exemples de disque
df ­hm
df –sync
du ­sh /tmp
du ­ach
fdisk ­l df ­hT
mount ­o remount /home
umount /dev/hdb
e2fsck /dev/
dd if=/dev/hda of=/dev/hdb conv=noerror, sync
ddrescue ­v
ddrescue –max­retries=­1 /dev/hda /dev/hdb
umount /dev/hdb
e2fsck /dev/hdb
Les services © Patrick Hautrive !;~) 2010
12
FLOPPY
Les disquettes
Une disquette (floppy disk) est un support de stockage qui contient 1,44 Mo. Les disquettes sont principalement utilisées pour le transfert manuel ou géographique de fichiers d'un système à un autre. Les disquettes sont également utilisées pour le dépannage du système. Les disquettes de dépannage s'appèlent communément des disquettes de boot.
Les disquettes de boot furent longtemps indispensables pour amorcer, démarrer ou dépanner un système. Aujourd'hui, les CD­ROM live sont aussi rapides et plus consistants, puisqu'ils peuvent proposer au boot, un noyau avec un shell et les outils qui conviennent pour réparer un système.
Les types de disquettes
La disquette d'amorçage permet d'amorcer le système en place, parce qu'elle contient un secteur de boot, une copie de la table des partitions et un chargeur de démarrage qui pointe vers la partition racine du système déjà installé. La disquette de démarrage permet de charger une image d'un noyau avec, par exemple, quelques outils de partitionnement et des pilotes pour la carte réseau lesquels permettront de lancer une installation. La disquette de dépannage contient également un mini noyau et le maximum d'outils (tools) pour l'administrateur (root).
Le formatage d'une disquette
Le formatage d'une disquette (comme le formatage d'une clef USB) peut bien sûr utiliser un système de fichiers natifs de Gnu Linux, comme ext2 par exemple. Toutefois, les autres systèmes que Gnu Linux ne sont pas toujours compatibles, et pour des raisons de portabilité, il est souvent nécessaire de formater les disquettes avec le système de fichier VFAT afin de pouvoir transférer des fichiers d'un système à l'autre.
Le système Gnu Linux est compatible avec tous les systèmes de fichiers et est capable de lire et d'écrire sous d'autres formats que le sien.
Le formatage d'une disquette consiste à installer un système de fichier sur le support. Le système de fichier choisit est indiqué en option de la commande “mkfs”.
Les services © Patrick Hautrive !;~) 2010
13
Le formatage et le montage d'une disquette Gnu Linux (floppy disk1,44 Mo)
fdformat /dev/fd0h1440
mke2fs /dev/fd0
mkdir /floppy
mount ­t ext2 /dev/fd0 /floppy
cat /etc/mtab
echo “/dev/fd0 /floppy auto user 0 0” >> /etc/fstab
umoumt /floppy ; mount /floppy
La disquette de boot
La disquette de boot
dd if=/boot/vmlinuz of=/dev/fd0 bs=8192
dd if=/mnt/cdrom/images/bootdisk.img of=/dev/fd0
mkbootdisk $(uname ­r)
mkboot
fdformat /dev/fd0
mformat
superformat
La disquette root
Cette disquette root doit contenir les outils compilés avec des liens statiques, qui inclus dans les binaires, les bibliothèques nécessaires (libraries). Une disquette root comporte un noyau (vmlinuz), la copie des principaux fichiers de configuration (/etc*), les outils d'administration pour le système de fichiers et pour les modules, un éditeur et un shell.
La disquette root
dd if=/mnt/cdrom/images/root.img of=/dev/fd0
dd if=/mnt/cdrom/images/rescue.img of=/dev/fd0
Le noyau Gnu Linux: /boot/vmlinuz
Les principaux fichiers de configuration : /etc/*
Les outils compilés avec des liens statiques:
rdev mount umount mkfs fsck fdisk lsmod insmod lspci tar gunzip gzip bash vi Les exemples de floppy
X:>\dosutils\rawrite.exe X:\images\bootdisk.img
rawrite.exe ­f \images\boot.img ­d A:
/sbin/hdparm ­c1 /dev/hda (32 bits, bus PCI)
/sbin/hdparm ­d1 /dev/hda (DMA)
Les services © Patrick Hautrive !;~) 2010
14
/sbin/hdparm ­d1 ­X11 /dev/hda (Ultra DMA)
vi /etc/rc.d/rc.local
mke2fs /mnt/floppy
mkfs ­t ext2 ­c ­m 0 ­b 2048 /dev/fd0 1444
fdformat /dev/fdOH1440
mformat ­h 2 ­s 18 ­t 80 A:
drakfloppy
GFFloppy
Les services © Patrick Hautrive !;~) 2010
15
FSTAB
Les systèmes de fichiers
Les systèmes de fichiers (file system) structurent l'organisation des fichiers dans une partition. Le système de fichier correspond au formatage d'une partition. C'est le format d'enregistrement des fichiers sur le support de stockage. Le système de fichier peut être intégré au noyau (kernel) ou comme modules. Le montage d'un système de fichiers (mount) est l'opération qui permet de déclarer un système de fichier et de le positionner au sein de l'arborescence générale dans un point de montage (mounting point).
Les systèmes de fichiers et les points de montage d'un système Gnu Linux sont déclarés dans le fichier “/etc/fstab”. L'ordre d'apparition de chacune des lignes est important parce qu'il conditionne le lancement des commandes « fsck », « mount » et « umount » qui lisent séquentiellement ce fichier.
Le montage d'un système de fichier dans un répertoire non vide va cacher son contenu, mais les fichiers ne seront pas écrasés, et réapparaitrons après le démontage.
Les commandes “man 5 fstab” et “man mount” décrivent le montage des systèmes de fichiers.
La vérification des systèmes de fichiers
En général, la procédure de vérification (fsck) d'un système de fichiers s'effectue celui­ci démonté ou en lecture seule (read only).
Le démontage d'un système de fichier (umount) est indispensable avant le retrait d'un périphérique amovible (usb key), parce que des écritures peuvent attendre dans un fichier tampon (buffer), et la déconnexion à chaud du périphérique pourrait endommager des fichiers.
Les caractéristiques d'un système de fichiers
Les systèmes de fichiers se différencient par certains attributs appliqués aux fichiers, à leur vitesse d'écriture et de lecture, par la taille maximale des fichiers et la capacité maximale d'un volume (outre le fait que certains sont propriétaires et payants). Par exemple, le système Reiserfs est particulièrement performant pour le stockage d'une multitude de petits fichiers, comme il en existe souvent sur les sites internet.
Les caractéristiques d'un système de fichiers dépendent amplement de la taille des unités de base de stockage (blocks), de la gestion des inodes dans la table des inodes (inodes table) et du type des informations de gestion qui sont enregistrées pour chaque fichier (bloc inode).
Les services © Patrick Hautrive !;~) 2010
16
Les gestionnaires de volumes
Les gestionnaires de volumes permettent de faire abstraction des contraintes physiques liées à l'organisation des disques et des partitions. Les gestionnaires de volumes constituent une couche supplémentaire pour la gestion des systèmes de fichiers. Le système de fichier LVM (Logical Volume Manager) permet de virtualiser les disques et les partitions physiques.
Les systèmes de fichiers virtuels
Les systèmes de fichiers virtuels permettent de simuler la présence d'un périphérique et de présenter dans l'arborescence les donnés qu'ils contiennent. Par exemple, l'image instantanée de la mémoire vive est présentée dans le pseudo système de fichiers /proc. Des fichiers peuvent être montés virtuellement comme des périphériques virtuels (loop device). Le système de fichiers VFS (Virtual File System) est un système de fichiers virtualisé.
Les types de système de fichiers
Les systèmes de fichiers Ext2 et Ext3 (Ext2 avec en plus la journalisation des écritures sur le disque) sont avec Reiserfs les systèmes les plus utilisés. Cependant, un système Gnu Linux reconnait tous les autres systèmes de fichiers, et par conséquent est capable de monter dans son arborescence, n'importe quel autres types pourvu qu'il soit compilé directement à l'intérieur du noyau, soit comme module.
Les types de systèmes de fichiers (/etc/fstab)
Unices
SYSV
UFS
JFS
XFS
XIAF
VXFS
ADFS
GPFS
OpenBSD
FFS
EXT
EXT2
EXT3
REISERFS
LVM
(Unix™)
(Bsd Solaris)
(AIX d'IBM)
(Inix, SGI)
(HP­HUX)
(True 64)
(Open BSD)
(BSD)
(Gnu Linux)
(Gnu Linux)
(Gnu Linux)
Others
MINIX
HFS
HPFS
NCPFS
NCP
BEFS
AFFS
UMSDOS
MSDOS
VFAT
NTFS
CVSFAT
AUTOFS
EFS
GNX4
Cdrom
(Apple)
(Macintosh)
(Novell)
(Netware)
(BeOS)
(Amiga)
(setuid, posix)
(Fat16)
(Fat 32)
(Windows™)
ISO9600
NFS
ROCKRIDGE
SMBFS
JOLEIT (Unicode)
UDF
HIGHSIERRA
USBFS
Les services © Patrick Hautrive !;~) 2010
17
Network
Virtual
VFS
PROC
SYSFS
ROOTFS
TMPFS
SOCKFS
PIPEFS
BDEV
DEVFS
DEVPTS
MQUEUE
RAMFS
ROMFS
CRAMFS
COHERENT
SWAP (82)
CODA
La configuration fstab
Les commandes d'administration des systèmes de fichiers sont nombreuses et diversifiées, puisqu'elles concernent le partitionnement (fdisk), la création des fichiers spéciaux de périphériques (mknod), l'installation d'un système de fichier sur une partition (mkfs), le paramétrage (tune2fs), la vérification (fsck), la synchronisation des écritures (sync), le montage (mount) et le démontage (umount) des systèmes de fichiers, la recherche des blocs physiques défectueux du disque (badblocks) ou la copie (dd).
Le fichier “/procfilesystems” permet de connaitre les différents systèmes de fichiers compilés et reconnus par le noyau. Les noms des options de la commande “mount” sont les même que pour le fichier “/etc/fstab”, puisque la commande se réfèrent aux mêmes caractéristiques, et que sa tâche est de lire le fichier de configuration.
La configuration des systèmes de fichiers avec le fichier “/etc/fstab” permet de procéder à une automatisation des montages et des démontages, et de ne se référer qu'à un seul des critères de montage, le périphérique (device) ou le point de montage (mounting point).
Les gestionnaires de volumes, comme LVM disposent de leurs propres jeux de commandes.
La configuration des systèmes de fichiers
Commands
fdisk
mount
umount
fsck
e2fsck
mkfs
mkfs.ext2
reiserfsck
mkreiserfs
mkswap
swapon
swapoff
tune2fs
mknod
exports
mountd
losetup
testdisk
sync
rdev
fuser
lsof
lsattr
chattr
man 5 fstab
man 8 mount
man 5 fs
man 5 nfs
man rpc.nfsd
Files
debugfs
badblocks
dumpfs
kfstab
e2label
e2image
xfs_admin
df
du
dd
dump
sum
resize2fs
blkid
/etc/fstab
/etc/mtab
/etc/lvmtab
/etc/filesystems
/etc/crontab
/etc/anacrontab
/proc/filesystems
/proc/partitions
Les services © Patrick Hautrive !;~) 2010
18
Les champs du fichier fstab
Le fichier « /etc/fstab » se compose de plusieurs champs séparés par un espace ou une tabulation. Le champ DEVICE caractérise le périphérique à monter localement ou via le réseau. Le champ POINT indique le point de montage dans l'arborescence. Le champ TYPE stipule le type de système de fichiers, le champ OPTIONS marque les options retenues pour le montage.
Les deux derniers champs sont des drapeaux (flags) qui peuvent prendre les valeurs numériques zéro, un ou deux. Le champ DUMP est utilisé pour savoir si le système de fichier doit être sauvegardé. Le drapeau DUMP à zéro indique à la commande “dump” que le système de fichiers n'a pas besoin d'être sauvegardé.
Le champ FSCK est utilisé pour ordonner les priorités de lancement des vérifications des systèmes de fichiers (pass number). Les vérifications automatiques de l'état du système de fichiers sont effectuées régulièrement au démarrage et dépendent du nombre de fois que le système de fichiers a été monté. Le drapeau FSCK du système de fichier racine (root) doit toujours être à un pour indiquer la priorité de la vérification, les autres partions étant vérifiées après et positionnées à deux.
Les champs du fichier /etc/fstab (man 8 mount)
DEVICE
MOUNTPOINT
FS TYPE
OPTIONS
DUMP FSCK
Les options fstab
Les options du fichier “/etc/fstab” sont les même que pour la commande “mount” qui en lit le contenu. Certaines options sont génériques et rassemblent en une seule expression, plusieurs options habituelles. De nombreuses options possèdent leur contraire. Une option générique peut être suivie d'une option contraire sans contradiction. Les options sont séparées par une virgule.
Toutes les options sont détaillées dans la page man de la commande “man mount”.
Par exemple, l'option none indique qu'il n'y a pas de périphérique à monter pour la swap. L'option default rassemble les options qui sont généralement utilisées. L'option auto permet le montage de tous les systèmes de fichiers avec la commande “mount ­a” au démarrage du système d'exploitation. L'option sync demande la synchronisation immédiate des écritures sur le système de fichiers. L'option user autorise les utilisateurs à monter le système de fichiers. L'option noexec empêche l'exécution de binaire à partir du système de fichiers.
Le drapeau FSCK peut être positionné à zéro (clean bit) pour les systèmes de fichiers journalisés comme Ext3 ou Reiserfs. Les points de montage contenant des espaces doivent être échappés avec la séquence “\040”. L'option « pri=32767 » indique la plus haute des priorités et une parallélisation des Les services © Patrick Hautrive !;~) 2010
19
swap sur plusieurs partitions.
Les options des champs du fichier /etc/fstab et les options génériques (man 8 mount)
DEVICE POINT TYPE
/dev/hda1 /
server:/path /home
ignore
none
ext2
ext3
swap
auto
OPTIONS
user (noexec, nosuid, nodev)
defaults (rw, suid, dev, exec, auto, nouser, async)
sw
supermount, pri, remount, umask=002, owner
comment
conv= (auto, binary, text)
atime
noatime
auto
noauto
dev
nodev
exec
noexec
suid
nosuid
user
nouser
sync
async
ro
rw
uid=501
gid=501
usrquota
grpquota
resuid
resgid
DUMP FSCK
0
1
1
2
Un exemple de fstab
Un exemple de fichier /etc/fstab
proc
/proc
proc
/dev/hda3
/
ext3
/dev/hda6
/home
ext3
/dev/hda2
none
swap
/dev/hdc
/media/cdrom0
udf,iso9660
/dev/fd0
/media/floppy0
auto
server:/usr
/nfs/tools
nfs
mailserver:/var/spool/mail /var/spool/mail nfs
/dev/sda2
none
swap
/dev/sda3
none
swap
/dev/sda4
none
swap
defaults
defaults,errors=remount­ro
defaults
sw
ro,user,noauto
rw,user,noauto
defaults
timeo=20, intr
sw,pri=3
sw,pri=3
sw,pri=1
Les exemples de fstab
man fstab
cat /etc/fstab
Les services © Patrick Hautrive !;~) 2010
20
0
0
0
0
0
0
0
0
0
0
0
0
1
2
0
0
0
2
0
0
0
0
INODE
Les noms des fichiers
Chaque fichier possède un numéro d'inode qui lui est propre, à moins qu'un fichier ne soit un lien physique (hardlink) vers un fichier qui existe déjà sur la même partition. Le nombre maximal d'inode pour une partition dépend de la taille de la partition (partition size), de la taille de l'unité minimale de stockage sur le disque (block size) et du système de fichier qui est installé (file system). Le rapport « Nombre d'octets/(2**13) » donne une idée du nombre d'inode d'un système de fichier EXT3. Par exemple, pour une partition de 453 Mo, le nombre d'inode est de 57 958, considérant des blocs de 512 Octets et huit blocs réservés pour chaque inode.
Toutes les informations concernant un fichier sont stockées dans la table des inodes (inode table), sauf le nom du fichier, qui lui est enregistré dans le répertoire qui le contient, avec le numéro d'inode qui lui correspond.
Un répertoire est un fichier dont le contenu est constitué des noms des fichiers qu'il contient et des numéros des inodes qui leur correspondent. Pour aller chercher un fichier, l'utilisateur utilise le nom du fichier, le système recherche dans le répertoire du fichier, l'inode qui lui est associée, puis le système recherche dans la table des inodes les adresses physiques des blocs où sont enregistrés les données du fichier sur le disque.
Le noyau à la poursuite d'un fichier
NAME ­­> DIRECTORY ­­> FILESYSTEM ­­> DEVICE ­­> INODE ­­> @BLOCK ­­> DATA
Les numéros d'inodes
Le numéro d'inodes (index nodes) constituent en quelque sorte la référence d'un fichier pour le système de fichiers (file system). Les numéros des inodes (inodes number) sont des entiers numériques positifs qui identifient chaque fichier présent physiquement sur le disque. Les numéros d'inodes sont uniques et sont attribuées dans l'ordre de création des fichiers.
Le Super Bloc (super block) du disque pointe vers la prochaine inode libre (block inode) et vers le prochain bloc de donnée libre (block data). Le bloc de contrôle d'un cylindre (control bloc) conserve les adresses physiques (adresses) sur le périphérique (device) de toutes les inodes et de tous les blocs de données, ainsi que la liste des numéros des inodes libres et occupées (i­list).
Les informations de gestions des fichiers sont enregistrées dans 128 Octets et regroupées par huit dans un bloc logique de 1024 Octets. Ces blocs d'enregistrement des informations de gestion des fichiers (block inode) constitue avec la liste des inodes (i­list) ce qui est couramment appelé la table des Les services © Patrick Hautrive !;~) 2010
21
inodes.
La commande «stat /etc/passwd» montre les attributs d'un fichier figurant dans la table d'inode.
La correspondance entre le nom du fichier, son numéro d'inode et l'adresse physique du bloc
File System (root)
Inode Table (i­list ­­> bloc inode)
Name
Inode
Inode 1 @ Block
file.txt
Name
1234 ­­> 1234
Inode
Inode
big.tgz
6789 ­­> 6789
12 @ Data
Informations 1001 to 1012
5622
15 @ Block
Device (blocks on the disk)
@ Block
Block Data (@ Block)
­­> 5622
@ Block
Raw Data
Block Data (@ Block)
­­> 1001 to 1012 Raw Data
(128 Octets) 3 @ Indirection
@ BlockSimple ­­> 1013
@ BlockDouble ­­> 1014
@ BlockTriple ­­> 1015
256 @ Block
256*256 @ Block
256*256*256 @ Block
La taille des disques
Tout d'abord, il faut savoir que les tailles des disques sont fausses, parce que les tailles affichées sont calculées en divisant le nombre d'octets disponibles par une approximation de mille et non par 1024. Ainsi par exemple, une clef vendue pour 65 Méga Octets, et qui contient exactement 65 208 320 Octets, ne contient en réalité que 63 680 Kilo Octets (65 208 320 Octets divisés par 1024), ce qui ne fait que 62,1875 Méga Octets ( 63 680 Kilo Octets divisés par 1024). Certains vous diront que c'est la part des anges, et d'autres encore, vous diront que les anges ne sont, ni des menteurs, ni des voleurs, mais, c'est sans doute que les anges n'y sont pour rien...
Les équivalences des unités 8 bits
1024 Octets
1024 Kilo Octets
1024 Méga Octets
1024 Giga Octets
1024 Tera Octets
sont équivalents à sont équivalents à
sont équivalents à
sont équivalents à
sont équivalents à
sont équivalents à
un Octet
un Kilo Octet
un Méga Octet
un Giga Octet
un Tera Octet
un Péta Octet
(Byte)
(Ko)
(Mo)
(Go)
(To)
(Po)
La géométrie du disque
Un disque est constitué de plateaux et les plateaux sont fait de blocs physiques (blocks). Chacun des plateaux est muni d'au moins une tête de lecture (heads), et sur chaque plateau, les blocs physiques sont répartis en cercles concentriques qui ressemblent à des pistes. Le premier cercle est celui qui est le plus éloigné du centre, et le dernier cercle est celui qui en est le plus rapproché. Ces blocs physiques constituent la plus petite unité physique de stockage du disque. La taille d'un bloc physique dépend du Les services © Patrick Hautrive !;~) 2010
22
modèle et du constructeur du périphérique. En général, la taille d'un bloc physique est de 512 Octets.
Lors du formatage de bas niveau, l'espace du disque est organisé en blocs logiques et en cylindres. Les disques sont vendus avec un formatage de bas niveau. La taille d'un bloc logique peut être égale à la taille d'un bloc physique (512 Octets) ou être supérieure. En général, les disques de petites capacités conservent la même unité (512 Octets), tandis que les disques de grande capacité passent à une unité double, c'est­à­dire que la taille de leur bloc logique est de 1024 Octets, ce qui correspond bien à deux blocs physiques de 512 Octets chacun.
Dans le processus de partitionnement, le disque est divisé en partitions (fdisk). Les partitions sont composées d'un certain nombre de cylindres. Les partitions commencent par l'adresse physique de début d'un cylindre, et se terminent avec l'adresse physique de fin d'un cylindre. Une partition pourrait être constituée d'un seul cylindre. Les partitions peuvent être primaires (4), dont une peut être étendue (1) et contenir des partitions logiques (60). Un disque IDE peut contenir jusqu'à 63 partitions différentes, tandis qu'un disque SCSI peut contenir jusqu'à 12 partitions logiques. A l'intérieur d'une partition, l'espace est composé de cylindres qui rassemblent un certain nombre de blocs logiques. Le bloc logique va constituer la plus petite unité logique de stockage.
La géométrie d'un disque
Partition ­­>
Cylinders
­­>
Tracks (Heads)
(per cylinder)
x
Sectors
(per tracks)
x
Blocks Block Size
(per sector) (in bytes)
Les cercles concentriques de chaque plateau du disque forment des pistes (tracks), lesquelles sont de plus en plus courtes au fur et à mesure que l'on se rapproche du centre. Chacune des pistes d'un même plateau est divisée en toutes petites parties égales pour former des petits arcs de cercles. Chacun de ces petits arcs de cercles est composé du même nombre de bloc. Les petits arcs de cercles contigus de l'intérieur vers l'extérieur du disque, forment un ensemble de parties convexes qui constitue un secteur (sector). Un secteur est composé de blocs logiques (blocks). Tous les secteurs d'un disque ont la même taille et rassemblent tous le même nombre de blocs logiques. A chaque étage, les secteurs de chaque plateau se superposent et forment un ensemble superposé qui est appelé un cylindre (cylinder).
Le cylindre est l'unité logique qui sert à choisir la taille des partitions. Comme les bras des têtes de lecture sont placés les uns au­dessus des autres, les secteurs de toutes les plateaux d'un même cylindre peuvent être lus en même temps par le contrôleur de disque (controler). Toutefois, la géométrie physique des disques a évoluée avec le progrès technologique. De nos jours, la géométrie logique, qui apparait avec la commande «fdisk ­l», de reflète plus la géométrie physique, qui est gérée indépendamment par le contrôleur de disque. C'est pourquoi, il peut apparaitre un nombre élevé de tête de lecture, par exemple. Ainsi, en multipliant la taille d'un block logique (512 bytes sector size) par le nombre de secteur par pistes (63 sectors per track), puis par le nombre logique de têtes de lecture (255 heads), et enfin par le nombre de cylindre (9733 cylinders), l'on obtient un total de 80 056 650 240 bytes pour le disque, ce qui est proche de celui qui est affiché: 80 060 424 192 bytes. La Les services © Patrick Hautrive !;~) 2010
23
différence entre ces deux totaux correspond à un certain nombre de blocs réservés par le contrôleur de disque: La somme du MBR (512 bytes), à laquelle il faut ajouter un certain nombre de blocs secteurs répartis sur le disque, et réservés par le contrôleur, lequel dépend du nombre de partitions installées et de la façon dont le contrôleur gère le disque.
Un exemple de géométrie
Pour résumer, la taille des blocs logiques d'un disque est décidée lors du partitionnement de bas niveau du disque, et le disque est divisé en cylindres (cylinders). Les cylindres constituent l'unité logique qui composent les partitions. Chacun de ces cylindres peut avoir plusieurs niveaux selon le nombre de plateaux. A chaque niveau se trouve un secteur (sectors) qui est composés de plusieurs pistes (tracks) ayant toutes le même nombre de blocs logiques (blocks).
Par exemple, un disque possède un seul niveau (un seul plateau) et le disque est conditionné avec une seule partition prenant tout l'espace. L'unique partition regroupe donc tous les cylindres du disque. Les cylindres sont numérotés de 1 à 1010 et il y a donc 1010 cylindres différents (1010 cylinders). Chaque cylindre est composé de 3 pistes (3 tracks) avec pour chacune d'entre elle 3 têtes de lecture (3 heads). Les 3 pistes de chaque cylindre forment un secteur (1 sector). Chaque piste contient 42 blocs, et un bloc est égale à 512 Octets.
Donc, pour retrouver la taille réelle d'un disque, il faut multiplier la taille d'un bloc logique (512 Octets) par le nombre de blocs par pistes (42), puis par le nombre de pistes par secteur (3) et enfin par le nombre de cylindres (1010), reste alors le nombre de blocs réservés pour la gestion (les superblocs, les blocs de contrôle et les blocs inodes).
Exemple de la géométrie d'un disque de 65 Mo
Disk /dev/sda: 65 MB, 65 208 320 bytes
3 heads, 42 sectors/track, 1010 cylinders
Units = cylinders of 126 * 512 = 64 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1
1010 63 609 b
W95FAT32
Block = 512 Octets
Sector = 42 blocks
Number of Heads = 3 Tracks (3x42=126)
Number of Cylinders = 1010
Super Blocks & Block control = 51200Octets
(512 Octets)x(42 Blocks per Tracks)x(3 Tracks per sector)x(1010 Cylinders)=65 157 120 Octets
Block Size x Sectors x Tracks x Cylinders + Super Blocks = Device Size
Les cinq structures
Cinq structures composent les disques, les partitions et les cylindres: le Superbloc (SUPERBLOCK), les blocs de contrôle (BLOCKCONTROL), les blocs inodes (BLOCKINODE), les blocs contenants des adresses d'indirection (BLOCKADRESSES) et les blocs de données (BLOCKDATA).
Le Superbloc se trouve en début de partition (ensemble de cylindres) et les autres blocs se placent à la Les services © Patrick Hautrive !;~) 2010
24
suite du superbloc. Le superbloc liste les adresses physiques de début et de fin des partitions. Des copies du superbloc sont réparties dans la partition. Par exemple, une copie du superbloc peut se retrouver tous les 8 Méga Octets (8192=8*1024). Le premier superbloc est à l'adresse 1 (1=1), le deuxième superbloc est à l'adresse 8193 (8192+1), le troisième superblock est à l'adresse 16 385 ((2*8192)+1), le quatrième superbloc est à l'adresse 24 577 ((3*8192)+1), et ainsi de suite.
Le bloc de contrôle d'un cylindre contient les adresses physiques des blocs de toutes les inodes (BLOCKINODE) et de tous les blocs de données (BLOCKDATA), ainsi que la liste des numéros des inodes libres et occupées (i­list). La liste des inodes rassemble les numéros et les adresses de toutes les inodes, et permet ainsi, de connaître les blocs qui sont allouées et les adresses des blocs libres (bit­
map).
Les blocs d'inodes enregistrent les informations de gestion des fichiers dans 128 Octets. Les blocs d'inodes et la liste des inodes (i­list) constituent la table des inodes. Les indirections à l'intérieur d'un enregistrement d'inode peuvent être simples, doubles ou triples. Une indirection pointe sur un bloc du disque, mais ce bloc contient d'autres adresses de blocs (BLOCKADRESSES), plutôt que des données (BLOCKDATA).
Les blocs de données contiennent les informations brutes d'un fichier (raw data).
Généralement, le système de fichier effectue automatiquement et régulièrement une copie de la table d'allocation des fichiers sur le disque. Ainsi, est­il possible de récupérer un système de fichier qui a été endomagé avec la commande «dd» (pourvu que l'on sache le numéro du bloc qui contient la copie) ou l'utilitaire «dd_rescue». Des CD­ROM spécialisés dans la récupération ou la restauration d'un disque existe, comme Trinity Rescue Kit ou System Rescue CD. Les fabricants de disque proposent également des utilitaires spécifiques pour leurs matériels.
Les services © Patrick Hautrive !;~) 2010
25
Les structures du disque, des partitions et des cylindres
Master boot Record (MBR)
(block 0)
La table de partition du disque
Le code du chargeur de démarrage
Le Magic Number
Super Bloc (SUPERBLOCK)
(block 1)
La table du système de fichier (file allocation table)
La taille des blocs
La taille du système de fichiers
Le nombre de montage
Un pointeur vers la racine du système de fichiers
Un pointeur vers la prochaine inode libre
Un pointeur vers le prochain bloc de données libres
Blocs de contrôle (BLOCKCONTROL)
(blocks 2 to n)
La table des inodes
Les adresses de tous les blocs d'inodes (i­list)
Les adresses de tous les blocs de données
Liste des blocs allouées
Liste des blocs libres Blocs d'inodes (BLOCKINODE)
(blocks n+1 to p)
Les enregistrements des informations de gestion des fichiers
Une inode (128 Octets), huit inodes pour un block logique (1024 Octets)
Le type de fichier, les permissions, le nombre de hardlink
L'identité du propriétaire (UID) et du groupe propriétaire (GID)
Les 15 adresses des blocs:
12 @BLOCKDATA (contenant des données)
3 @ BLOCKADRESSES
(contenant des adresses d'indirection)
Blocs de données (BLOCKDATA)
(p+1 to z)
Les informations brutes du fichier
Blocs d'indirection (BLOCKADRESSES)
Les adresses de blocs d'indirection (BLOCKADRESSES) ou de données (BLOCKDATA)
Le nombre des inodes
Le nombre d'inodes occupés et le nombre d'inodes disponibles sont plutôt des indices de la gestion du disque que de l'occupation du disque. En effet, s'il n'y a plus d'inode de disponible pour un nouveau fichier, alors celui­ci ne peut pas être référencé dans la table d'inodes, et aucun bloc inode ne peut donc lui être alloué pour enregistrer ses informations de gestion, alors qu'il peut très bien encore rester de l'espace vierge sur le disque. Inversement, il peut rester des inodes de libre, alors que l'espace de stockage est rempli.
Le nombre maximal d'inodes d'un système de fichiers dépend de l'unité de stockage minimale (block), Les services © Patrick Hautrive !;~) 2010
26
de la taille globale du système de fichiers (partition) et du nombre de bits utilisés pour l'adressage (address). L'ajout de disques et de partitions, et le montage de système de fichiers dans l'arborescence racine permettent de faire croitre l'espace adressable et l'espace de stockage disponible.
La taille des fichiers
Un fichier occupe au moins un bloc, même s'il est vide, et au moins un bloc inode lui est alloué (128 Octets). Inversement, un fichier peut occuper plusieurs blocs. Quand les 12 adresses qui pointent vers des blocs de données dans l'enregistrement des informations de gestion du bloc inode ne suffisent pas pour stocker le fichier, alors le mécanisme des indirections est mise en place.
Les trois adresses d'indirection pointent vers des blocs qui contiennent d'autres adresses de blocs. Les systèmes Gnu Linux utilisent une triple indirection. C'est­à­dire, que trois blocs successifs peuvent servir à pointer des adresses d'autres blocks pour le stockage du fichier.
La copie des blocs avec la commande «dd» permet de sauvegarder un disque en entier, mais avec l'inconvénient de recopier aussi les blocs vides ou défectueux.
La triple indirection
Prenons un exemple, avec comme unité logique de stockage, un bloc logique de 1 Kilo Octet (1024 Octets). Les fichiers occupent au moins un bloc de données et leur taille est au minimum de un Kilo Octets. La taille maximale d'un fichier dépend de la taille d'un bloc logique (1 Kilo Octet), du nombre de niveaux d'indirection (simple, double ou triple) et du nombre d'adresses physiques que peut contenir un bloc d'indirection (256 @). Le mécanisme d'indirection s'appelle également l'adressage indirect.
Trois niveaux d'indirection peuvent se succéder. Dans une indirection simple, l'adresse du bloc d'indirection pointe vers un bloc qui contient d'autres adresses (BLOCKADRESSES), et chacune des ces adresses (256) pointent vers un bloc de données (BLOCKDATA). Dans un indirection double, chacune de ces adresses pointent vers des blocs qui contiennent eux aussi d'autres adresses (256*256), lesquelles pointent enfin vers des blocs de données (BLOCKDATA). Dans une indirection triple, trois niveaux d'adresses se succèdent (256*256*256), avant de pointer vers des blocs de données (BLOCKDATA).
La taille maximale d'un fichier est donc de (12+(256*256*256))*1024 = 17179881472 Octets =16 Go.
La taille maximale d'un fichier est donc de (12+(126*126*126))*4096 = 8193589248 Octets =7,63 Go.
Les services © Patrick Hautrive !;~) 2010
27
La triple indirection des adresses physiques vers des blocs d'adresses et des blocs de données
12 @ de bloc de données
1 @ de bloc de première indirection
Pointant vers 256 @ de blocs de données
1 @ de bloc de double indirection
Pointant vers 256 @ de bloc de première indirection
Pointant vers 256 @ de bloc de données
1 @ de bloc de triple indirection
Pointant vers 256 @ de bloc de première indirection
Pointant vers 256 @ de bloc de double indirection
Pointant vers 256 @ de bloc de données
12*1 Ko
= 12 Ko
256*1 Ko
= 256 Ko
256*1 Ko
= 256 Ko
256*256*1 Ko= 64 Mo
256*1 Ko
= 256 Ko
256*256*1 Ko= 64 Mo
256*64 Mo = 15,625 Go
La table des inodes
La table des inodes est stricto sensu la liste des inodes (i­list) qui se trouve dans le bloc de contrôle du cylindre (control block). Par contre, toutes les informations d'un fichier sont contenues dans le bloc inode qui lui est alloué. Ces informations sont appelées les informations de gestion des fichiers.
L'enregistrement des informations de gestion d'un fichier occupe 128 Octets. Ainsi, la déclaration de 8 inodes occupe un bloc logique de 1024 Octets. La table des inodes au sens large est constituée de la liste des inode (i­list) et de tous ces blocs inodes qui sont utilisés pour enregistrer les informations des fichiers, lesquels pointent vers des blocs d'indirection ou vers des blocs de données. Comme le bloc zéro d'un disque est occupé par le MBR (Master Boot Record), et que le bloc un est occupé par l'enregistrement du Superbloc de la partition, la table des inodes commence à partir du bloc deux jusqu'à N (pour une liste de N­1 inodes). Les blocs suivant, de N+1 à Z, sont consacrés à l'enregistrement des données brutes des fichiers (ou des adresses d'indirection).
Les informations d'une inode
Les données de gestion comprennent le type de fichier (­ d b c l p s), les permissions du fichier (rwsrwSrwT), le nombre de liens physiques (hard links), c'est­à­dire le nombre de fichier portant de noms différents, mais pointant vers la même inode, le numéro d'identifiant du propriétaire (UID), le numéro d'identifiant du groupe propriétaire (GID), les adresses de 15 blocs physiques sur le disque, la taille du fichier (en octets), et les dates du fichier.
Les adresses de blocs physiques sont au nombre de 15 au total. Les 12 premières peuvent contenir des données (12 @ DATABLOCK), tandis que les 3 dernières sont réservées pour une éventuelle redirection, si la taille du fichier l'impose, et contiennent les adresses de trois blocs physiques pour les indirections (3 @ INDIRECTION). La première adresse pointe vers un bloc pour une simple indirection, la deuxième adresse pointe vers un bloc pour une double indirection et la troisième adresse Les services © Patrick Hautrive !;~) 2010
28
pointe vers un bloc pour une triple indirection.
Les dates du fichier sont la date de création, de déplacement ou de changement de nom (ctime), la date de la dernière modification (mtime) et la date du dernier accès en lecture (atime).
Les données de gestion des fichiers dans la table des inodes (128 Octets)
TYPE PERMISSIONS HARDLINKS UID GID
@BLOCKS
­ d b c l p s rwsrwSrwT
Same inode
501 501 12 @ DATA
Different names
3 @ INDIRECTION
@ simple
@ double
@ triple
Les exemples d'inodes
ls ­li
e2fsck ­f ­b 8193 /dev/hda2
/sbin/dump2fs /dev/hda | more
readlink
dd if=/dev/sda1 of=/home/pat/bloc1 bs=512 count=1
hd bloc1
man 8 sfdisk
stat file.txt
Les services © Patrick Hautrive !;~) 2010
29
SIZE DATES
1024 ctime
mtime
atime
EXT2
La fragmentation
La fragmentation d'un système de fichiers signifie qu'avec le temps, les blocs d'enregistrement des fichiers sont de plus en plus éparpillés. L'éparpillement des blocs pour un même fichier implique un accroissement des déplacements des têtes de lecture du disque, et donc un temps de lecture ou d'écriture plus long, et à terme une usure plus importante des mécaniques, mais aussi des supports.
L'idéal pour un fichier est d'avoir des blocs continus afin d'accélérer la lecture, mais aussi l'écriture. Le système de fichier EXT2 ne fragmente pas beaucoup les fichiers sur un disque (1%), parce qu'il opère une pré allocation de blocs (block) pour chaque nouveau fichier. Avec le système de fichier EXT3, quand un bloc est écrit sur le disque, 7 autres sont réservés à la suite (segmentation). Ainsi, lorsque deux fichiers sont écrits simultanément sur le disque, une plage est réservée pour chacun d'entre eux, et les blocs alloués à chacun des deux fichiers ne s'entrelacent pas.
L'arborescence
Les arborescences des systèmes de fichier ne sont pas toutes les même. L'arborescence d'un système de fichier dépend de l'organisation des fichiers et de la façon dont l'index est structuré pour conduire jusqu'au fichier. Par exemple une liste linéaire est simple, mais requière de lire à chaque fois toute la liste pour trouver le bon fichier. Les listes linéaires peuvent devenir rapidement déséquilibrée quand les fichiers sont majoritairement enregistrés toujours au mêmes endroits.
La journalisation
La journalisation d'un système de fichier consiste à faire passer toutes les écritures sur le disque par l'intermédiaire d'un journal. Dans un premier temps, les écritures sont enregistrées dans un journal, puis dans un deuxième temps, elles sont réalisées sur le disque, enfin, dans un troisième temps, quand l'écriture sur le disque s'est bien passée, elles sont supprimées du journal. Ainsi, les écritures peuvent être asynchrones et elles sont plus sécurisées par le journal qui évite, quand une écriture sur le disque s'est mal passée, de perdre des données. Enfin, en cas d'arrêt brutal du système, les écritures peuvent être poursuivies après le redémarrage du système. La journalisation accroit l'utilisation du temps processeur pour les écritures sur disques, mais c'est la contrepartie nécessaire pour obtenir un système de fichier plus sûr.
La journalisation consiste en l'écriture d'un journal. A l'intérieur de ce journal sont enregistrées des informations qui peuvent être les méta data (meta data), l'ordre des écritures (ordered) et éventuellement les données elles même (data). En général, la journalisation consiste en l'écriture des méta data seulement. Parfois, ce sont les méta data et les données qui sont enregistrées (metadata + data).
Les services © Patrick Hautrive !;~) 2010
30
La journalisation pour Gnu Linux est disponible depuis les noyaux 2.4.16.
Les fichiers orphelins
Les fichiers orphelins sont des noms de fichiers qui sont référencés dans l'arborescence du système de fichier, mais qui n'existe plus sur le disque dur. Par exemple, un lien symbolique est créé à partir d'un fichier. Quand l'utilisateur pointe sur le lien, celui­ci le conduit jusqu'au fichier source. Mais si le fichier source disparait, parce qu'il est supprimé ou parce qu'il est déplacé, alors, le lien est brisé et il ne pointe plus sur rien.
Les spécifications de Ext2
Le système de fichiers Ext2 fait suite à Ext. Le système de fichier Ext2 est aujourd'hui le système de fichier de référence sous Gnu Linux. Le système de fichiers Ext3 en est la version journalisée. Les spécifications de Ext2 représentent un compromis entre souplesse et rapidité. Le système de fichiers Ext2 correspond bien aux cas général, où la taille des fichiers est incertaine, quand elle varie mais restent dans une moyenne, quand les fichiers ne sont pas tous très petits, ni tous très gros, et que l'accès aux fichiers est diversifiés, quand ce n'est pas toujours les même qui sont lus, ni modifiés.
Les spécifications du système de fichier Ext2
Une fragmentation peu sensible
Une arborescence en listes linéaires peu équilibrées
Une racine de 32 To au maximum
Des partitions de 4 To au maximum
Des blocs logiques de un, de deux ou de 4 Kilo Octets
Des tailles de fichiers de 4 Go au maximum
Des noms de fichier long pouvant aller jusqu'à 256 caractères (un octet)
Des inodes qui réservent 8 blocs continus
La synchronisation des écritures
La réservation d'une zone à l'usage de l'administrateur (root)
La journalisation avec Ext3
La gestion des orphelin dans le répertoire /lost+found
Le paquetage e3fsprogs requis pour son installation
La disponibilité à partir du noyau 2.0.0
Un accès direct avec 12 blocs logiques pointant vers des blocs de données
Une triple redirection (adressage indirect)
Les services © Patrick Hautrive !;~) 2010
31
La vérification du système de fichiers
La vérification du système de fichiers est aussi importante que peuvent l'être les sauvegardes régulières. Le système de fichiers Ext2 est vérifié automatiquement après un certain nombre de montage. Le nombre de fois que le système de fichiers est monté, est enregistré dans le Superblock. La commande « fsck » permet de vérifier le système de fichiers.
Le démontage du système de fichiers est fortement préconisé, voire indispensable avant de lancer une vérification de son intégrité, parce que des écritures peuvent être lancées en même temps et causer des pertes, voire des dégâts irréparables. Ainsi le contrôle de la racine du système de fichier doit être réalisée au boot, ou avec une disquette de boot.
Les systèmes de fichiers sont périodiquement et automatiquement vérifiés après un certain nombre de montage, par exemple, tous les 30 montages. Pour ce faire le système de fichier maintient des paramètres dynamiques (dynamic parameters), qui sont des compteurs, et qui permettent de lancer la vérification automatique, lors d'un redémarrage du système (reboot). La commande « dump2fs ­h /de/hda2 » affiche les paramètres dynamiques du système de fichiers. La commande « tune2fs ­c 0 /dev/hda2 » permet de remettre à zéro les compteurs.
La commande fsck
La commande “fsck” permet de vérifier un système de fichiers, et de corriger les éventuelles erreurs (corrupted file system). Comme la commande “mkfs” qui permet de créer un système de fichiers, la commande “fsck” est un front end, c'est­à­dire que ces commandes font appel à d'autres commandes en fonction des situations, en l'occurrence, en fonction du type de système de fichier dont il est question. Par exemple, pour le système de fichiers ext2, les commandes spécialisées sont respectivement “fsck.ext2” et “e2fsck” pour la vérification et “mkfs.ext2” et “mke2fs” pour la création.
Les fronts end pour Ext2
fsck
mkfs
­­>
­­>
fsck.ext2
mkfs.ext2
­­> e2fsck
­­> mke2fs
Les services © Patrick Hautrive !;~) 2010
32
La configuration de Ext2
La configuration de Ext2 fait appel à de nombreuses commandes.
La configuration de Ext2
Commands
fsck
fsck.ext2
e2fsck
fsck.ext3
e3fsck
reiserfs
mkfs
mkfs.ext2
mke2fs
mkfs.ext3
mke3fs
lsattr
chattr
df
du
dd
Files
tune2fs
badblocks
debugfs
dump2fs
e2image
e2label
resize2fs
testdisk
Les exemples Ext2
mkfs ­t ext2 options ­c ­v /dev/hda1
mke2fs ­b 1024 ­i 4096 ­c /dev/hda1
mke2fs ­j /dev/hda1
tune2fs ­j /dev/hda1
umount /dev/hda1
init 1
fsck /dev/hda1
fsck ­N
(No execution but simulation)
fsck ­M
(Mounted file systems only are checked)
fsck ­A
(All file system in /etc/fstab are checked)
fsck ­f
(Force the file system check)
fsck ­y
(Yes to all reparation of the file system)
fsck ­t ext2
fsck /mnt/partition3
e2fsck ­f ­b 8193 /dev/hda1
mkfs.xls /dev/hda6
mkfs.xfs ­jfs /dev/hda6
badblocks ­sv /dev/hda
dump2fs ­h /dev/hda2
(Show dynamic parameters of the file system)
tune2fs ­c 0 /dev/hda2
(Reinitialization of the counters)
Les services © Patrick Hautrive !;~) 2010
33
REISERFS
Les spécifications de reiserfs
Les spécifications de reiserfs
La disponibilité à partir du noyau 2.4.18
L'arborescence équilibrée
La rapidité d'accès
La journalisation des méta data
La variabilité importante des échelles de grandeur (scalability)
L'utilisation de l'algorithme de recherche et de trie performant (Btree)
La taille des fichiers très grande (very large file)
La taille minimum des fichiers de 4 Ko (very small file)
Le nombre important de fichiers dans un même répertoire (lots of file)
La non gestion des quotas
Le nombre illimité des inodes
La configuration de reiserfs
La configuration de reiserfs
Commands
Files
mkreiserfs
reiserfsck
fsck.reiserfs
resize_reiserfs
debugreiserfs
Les services © Patrick Hautrive !;~) 2010
34
RAID
Le RAID
Le RAID (Redundant Array of Inexpensive Disks) consiste en un agrégat de partitions (type 0xFD). C'est­à­dire que plusieurs partitions seront traitées conjointement (Matrice) ou rassemblées pour ne former qu'un seul espace (Volume). Le RAID permet de créer une performance ou une tolérance de panne à l'aide d'une redondance dans la gestion des fichiers sur un disque. Ainsi, les données sont accélérées ou protégées. Quand elles sont protégées, les données sont susceptibles d'être éventuellement récupérées en cas de panne. Les RAIDS qui proposent une redondance des données permettent une maintenance des disques durs à chaud (hotplug), c'est­à­dire sans éteindre la machine, et sans interrompre le service (hors le temps nécessaire pour reconstituer les données).
Le RAID peut être matériel ou logiciel. Le RAID matériel signifie qu'il existe un dispositif dédié comme une carte RAID. Le RAID logiciel signifie que les fonctions RAIDS sont compilées dans le noyau et que les procédures d'enregistrement sont effectuées par le contrôleur de disques de la carte mère. Le RAID logiciel est moins rapide et moins couteux. Le Volume Set est un RAID linéaire qui consiste à concaténer deux disques pour n'en former qu'un seul. Rappelons que la question n'est pas de savoir si un disque tombera en panne ou non, mais bien quand cela se produira.
Les avantages du RAID
Les avantages du RAID peuvent être de plusieurs sortes, en fonction du type de RAID. La duplication consiste en une double écriture (duplexing) des mêmes données simultanément sur deux disques différents (MIRRORING). Ainsi, si l'un des disques tombe en panne, l'autre est immédiatement opérationnel pour assurer la continuité de service. La duplication exige deux disques rigoureusement identique, même constructeur, même modèle, même capacité pour permettre l'échange instantané. Quand les disques sont placés sur des nappes différentes, avec des contrôleurs de disques différents, alors les enregistrements et les consultations bénéficient du parallélisme des contrôleurs.
Le parallélisme des contrôleurs de disque permet l'accélération des lectures et des écritures sur plusieurs disques appartenants à des nappes différentes. L'écriture des données sur plusieurs bandes consiste en une répartition de la charge (STRIPPING). Dans ce cas de figure, il n'y a pas de redondance des données, seulement une recherche de performance.
La tolérance de panne signifie qu'il y a une redondance dans les procédures d'écriture, à l'aide de bits de parité qui permettent de reconstituer les données réparties sur plusieurs bandes (PARITY). La tolérance de panne doit être répartie sur au minimum trois bandes différentes, dont l'une servira à enregistrer le bit de parité qui est calculé en fonction de la valeur des bits des autres bandes. Le bit de parité peut être enregistré toujours sur la même bande ou alterner avec les autres bandes, l'on parle alors d'entrelacement de la parité (SHAKING). Certains RAIDS proposent également l'enregistrement Les services © Patrick Hautrive !;~) 2010
35
d'une redondance dans la parité (DOUBLE PARITY), tandis que d'autres n'effectuent qu'une vérification de celle­ci (Parity check ECC et test XOR). Les trois bandes seront idéalement placées sur trois disques différents. L'une des meilleures solutions consiste à utiliser deux types de RAID en même temps. Un MIRRORING (raid 1) pour la partition système, qui doit toujours être en bon état de fonctionnement, et une PARITY (raid 5) pour la partition des données qui sont ainsi protégées efficacement contre le risque de panne, pour un cout tolérable.
Les types de RAID
Les principaux types du RAID
Volume Set
VOLUME (raid linéaire)
RAID 0
STRIPPING (parallélisme et performance)
RAID 1
MIRRORING (duplication ou duplexing)
RAID 5
STRIPPING + PARITY (redondance de parité)
RAID 6
STRIPPING + PARITY + SHAKING (entrelacement)
RAID 10
STRIPPING + MIRRORING + PARITY + SHAKING A
B
A
C
A
B
A
C
E
A
C
P
A A
B B
C C
La configuration du RAID
La configuration d'un RAID requiert de préférence des disques identiques.
La configuration du RAID
Commands
raidstart ­a
raiddev
man 5 raidtab
mkraid
raidtools
Files
/etc/raidtab
/proc/mdstat
Les services © Patrick Hautrive !;~) 2010
36
C
D
B
D
A
B
B
D
F
B
P
E
U
W
P
P
P
P
P
D
F
V
P
Y
P
X
Z
LVM
La gestion des volumes
La gestion des volumes permet de s'abstraire des contraintes physiques des disques et des partitions. L'espace de stockage est géré par une couche logique supplémentaire (un niveau d'abstraction supérieur) qui permet de modifier les tailles à la volée de l'espace fonctionnel, mais sans procéder à un redimensionnement à chaud des partitions elle même.
Le package LVM (Logical Volume Manager) est l'outil de gestion des volumes sous Gnu Linux, et il dispose de ses propres commandes pour l'administrer. Une fois décidée, la taille des blocs logiques ne peut plus être changé sur les disques, mais l'extension de l'espace par l'adjonction de disques est parfaitement géré. La version LVM2 introduit une nouvelle façon d'enregistrer les méta data qui est plus performante.
Les concepts et l'organisation LVM
Les concepts et l'organisation des volumes LVM
PV (Physical Volume)
VG (Volume Group)
PE (Physical Extent)
LV (Logical Volume)
Les partitions réelles ou les disques entiers (type 0x8E).
Les disques virtuels pouvant regrouper plusieurs partitions et disques.
L'unité de stockage physique d'un VG (blocs logiques de 4 Mo). Les partitions virtuelles à l'intérieur d'un VG.
La configuration de LVM
La configuration de LVM
Commands
man 8 lvm
man 8 pvcreate
man 8 vgcreate
clvmd
readline
vgcfgbackup
pvcreate
pvmove
pvremove
pvdisplay
pvdata
pvchange
pvscan
pvs
vgchange
vgck
vgconvert
vgcreate
vgdisplay
vgextend
vgexport
vgimport
Files
vgmerge
vgmknodes
vgreduce
vgremove
vgrename
vgs
vgscan
vgsplit
lvchange
lvcreate
lvdisplay
lvextend
lvmchange
lvmdiskscan
lvreduce
lvremove
lvrename
lvresize
lvs
lvscan
Les services © Patrick Hautrive !;~) 2010
37
man 5 lvm.conf
/etc/lvm/lvm.conf
$HOME/.lvm_histo
ry
Les exemples de LVM
pvcreate /dev/hdb2
vgcreate VG0 /dev/hdb2
lvcreate ­L 2500 ­n LV0 VG0
pvdisplay
vgdisplay
lvdisplay /dev/VG0/LV0
Les services © Patrick Hautrive !;~) 2010
38
SWAP
La pagination
La pagination est le mécanisme qui permet d'accroitre la mémoire vive en recopiant des pages de celle­
ci dans un espace réservé sur le disque dur. Les pages inactives sont transférées dans l'espace d'échange pour libérer de la mémoire pour les processus en activité.
La swap est une mémoire virtuelle d'appoint, et constitue une extension de la mémoire physique. Les pages des processus passent de la mémoire au disque, et vice versa, selon les besoins.
La pagination peut être réalisée dans une partition dédiée ou dans un fichier. Les partitions de swap peuvent être parallélisées sur plusieurs contrôleurs de disques afin d'accélérer les entrées (écriture) et les sorties (lecture).
L'espace adressable
Pour les processeurs Intel (i 386) des ordinateurs compatibles IBM PC, les pages de mémoire sont de 4096 Octets. Un système de fichiers peut contenir jusqu'à 32 zones de swap différentes allant jusqu'à 4 Go d'espace de pagination.
La PAE (Physical Adresse Extension) permet d'agrandir l'espace adressable afin de faire croitre l'espace de pagination (jusqu'à 64Mo pour les Pentium Pro du fondeur Intel). L'usage de la mémoire
Le cache unifié représente une anté mémoire, c'est­à­dire que le système anticipe les besoins futurs des processus en chargeant en mémoire les pages adjacentes à celle qui est demandée, parce que statistiquement, s'y trouvent souvent des données qui seront également demandées, ainsi, celles­ci sont déjà présentes en mémoire, prêtes à servir, ce qui accélère les traitements.
Ainsi, la mémoire vive semble toujours utilisée à saturation avec la commande “free”, mais en réalité, c'est souvent le cache qui la remplie.
Par contre, quand l'espace de la swap est comblée, c'est peut être le signe qu'il faille agrandir la swap, en attendant d'augmenter la mémoire physique, c'est­à­dire la RAM (Random Access Memory).
La répartition entre la mémoire Ram et la Swap
%use
%total
Kernel
Processus
Cache Disk
Processus
Physical Memory
Unused
Swap
Les services © Patrick Hautrive !;~) 2010
39
La configuration de la swap
La configuration de la swap
Commands
free
sync
Files
mkswap
swapon ­a
swapoff ­s
/etc/fstab
/proc/swaps
Un exemple de partition swap
Un exemple de partition swap
fdisk /dev/hda
mkswap /dev/hda2
sync
swapon /dev/hda2
free
cat /proc/swaps
echo “/dev/hda2 swap swap defaults,pri=2 0 0” >> /etc/fstab
Un exemple de fichier swap
Un exemple de fichier swap
touch /swap
dd if=/dev/zero of=/swap bs=1024 count=10240
dd if=/dev/zero of=/swap bs=1024 count=32768
dd if=/dev/zero of=/swap bs=1024 count=65536
mkswap /swap
chmod 600 /swap
sync
swapon /swap echo “/swap none swap sw 0 0” >> /etc/fstab
swapoff
rm /swap
Les exemples de swap
swapon ­a ; swapoff ­s
swapon ­p2 /swap
mkswap ­c 32768 ; rm ­Rf /swap
Les services © Patrick Hautrive !;~) 2010
40
MOUNT
Le montage
Les systèmes de fichiers doivent être montés (mount) dans l'arborescence racine pour être accessibles. Inversement, ils doivent être inutilisés afin de pouvoir être démontés (umount). Les systèmes de fichiers montés peuvent être locaux, ou distant via le réseau.
Le système de fichier racine est monté en lecture seule par le chargeur de démarrage (initrd) et en lecture et écriture (read and write) par le noyau (kernel) lors de la procédure d'initialisation du système. En général, les autres systèmes de fichiers sont montés automatiquement (sysinit) pour le niveau d'initialisation graphique (runlevel 5). Les autres types de systèmes de fichier doivent être reconnus par le noyau, c'est­à­dire que le noyau doit être compilé avec les fonctionnalités (module) correspondant aux systèmes de fichiers requis.
La commande « mount » accepte de nombreuses options et peut être employé pour monter de nombreux types de système de fichiers, dont des images ISO (iso image). La commande « mount » lit le fichier « /etc/mtab » pour afficher les périphériques qui sont actuellement montés sur le système de fichier racine (root file system). La commande “mount ­a” lit le fichier de configuration “/etc/fstab” où sont répertoriés tous les systèmes de fichiers à monter, et monte ceux qui ont l'option « auto ».
Les points de montage
Les systèmes de fichiers sont montés dans l'arborescence sur des points de montage qui sont des répertoires. Ces répertoires doivent avoir les droits qui conviennent pour l'utilisateur qui s'en servir pour monter un système de fichiers.
La commande “mountpoint” permet de connaitre si un répertoire est un répertoire actuel de montage.
L'auto montage
L'auto montage est un mécanisme qui permet de monter automatiquement tous les systèmes de fichiers qui se trouve dans le fichier “/etc/fstab”. Ainsi l'utilisateur qui n'a pas les droits root peut accéder aux fichiers dès sa connexion. Il existe trois mécanismes d'auto montage (AMD, AUTOFS et SUPERMOUNT).
L'auto montage permet également de monter automatiquement les périphériques amovibles comme un lecteur de CD­ROM ou une clef USB. L'auto montage “supermount” est un script Perl qui requiert que le langage interprété Perl soit installé.
Les services © Patrick Hautrive !;~) 2010
41
La configuration de mount
Le montage d'un système de fichier doit prendre en compte le point de montage, le type de système de fichier, qui doit être reconnu par le noyau (module) et les attributs de montage.
La configuration de mount
Commands
mount
umount
disklabel
exportfs
cryptdir
mountpoint
autofs
supermount
sync
fdisk
growfs
fsck
debugfs
Files
man 8 mount
/dev/MAKEDEV
man MAKEDEV
mknod
dumpfs
tune2fs
e2label
/etc/fstab
/etc/mtab
/proc/mounts
/proc/filesystems
/proc/ide
/proc/swap
Un exemple autofs
Un exemple d'auto montage avec autofs
urpmi autofs
/usr/lib/autofs
man 5 autofs
man 8 automount
cd /usr/libautofs
cp sample/auto.master /etc
cp sample/auto.misc /etc
cp sample/rc.autofs /etc/rc.d/init.d/
echo “/automount /etc/auto.misc –timeout=60” >> /etc/auto.master
vi /etc/auto.misc
net
­fstype=nfs,rw,nosuid
poste:/net
cdrom
­fstype=iso9660,ro,nosuid,nodev
:/devcdrom
floppy
­fstype=auto
:/dev/fd0
sources
­fstype=nfs,soft
server:/sourcesnfs
/etc/rc.d/init.d/autofs status
/etc/rc.d/init.d/autofs restart
modprobe autofs
modprobe autofs4
ps aux | grep automount
ls /automount/cdrom
vi /sbin/init.d/boot.local
vi /etc/rc.d/rc.local
modeprobe autofs
autofs
Les services © Patrick Hautrive !;~) 2010
42
Les exemples de mount
man mount
fdisk ­l ; cat /proc/mounts
/dev/MAKEDEV ­v audio
ext2rsize /dev/fd0 500000
fuser ­vm /dev/hda5
mount ­o check=strict ­t msdos /dev/hda5 /dos
mount ­t ext2 /dev/hda3 /disk
mount ­o conv=auto ­t vfat /dev/fd0 /floppy
mount ­o ro ­t iso9660 /dev/cdrom /cdrom
fsck ­c ext2 /dev/hda3
mount ­t nfs ­o timeo=20,intr server:/share /nfsshare
mount ­t reiserfs /dev/hda6 /mnt/hda6
mount /mnt/hda6 ­o remount,rw
supermount enable
supermount disable
echo “/dev/floppy /mnt/floppy supermount fs=vfat,dev=/dev/fd0” >> /etc/fstab
ls ­al /dev/.devfsd
mount ­o loop ­t iso9660 image.iso /mnt/iso
Les services © Patrick Hautrive !;~) 2010
43
OSI
L'architecture OSI
Le modèle OSI (Open Systems Interconnection) l'organisme de normalisation ISO (International Standard Organisation) est un modèle théorique qui présente une méthode générale pour l’interconnexion des systèmes ouverts. Selon le modèle OSI, le processus de transmission des données sur un réseau est décomposé en plusieurs étapes, dans un ordre bien déterminé. Le modèle OSI distingue 7 étapes fondamentales, et décompose le processus de transmission des données en 7 couches. Le modèle IEEE 802, en date de février 1980, est une version améliorée du modèle OSI. En 1984, l’ISO publia une mise à jour du modèle OSI qui devint dès lors une norme internationale.
Chaque couche a une fonction bien précise dans le processus de transmission des données. A chacune de ces couches correspond la réalisation d’une ou de plusieurs tâches, et plusieurs cas de figure sont envisageable. Soit, une tâche est réalisée par un seul protocole, soit, toutes les tâches d’une couche OSI sont réalisées par un seul protocole, soit, plusieurs tâches appartenants à différentes couches OSI sont réalisées par un seul protocole, soit, toutes les tâches de plusieurs couches OSI sont réalisées par un seul protocole. Ainsi, les spécifications du modèle OSI sont respectées, mais la délimitation de chaque couche ne l’est pas forcément.
Dans le processus de transmission, les données «traversent» la pile de protocoles, mais le nombre de protocoles constituants la pile n’est pas obligatoirement égale au nombre de couches du modèle OSI. La théorie ne correspond pas exactement à la réalité. Les couches du modèle OSI correspondent plus ou moins aux couches d’une pile de protocoles. Les couches basses (1 & 2) spécifient la manière dont les matériels sont connectés, tandis que les couches hautes (7 à 3) énoncent les règles de communication. Les opérations des couches hautes sont plus complexes que celles des couches basses.
Le modèle OSI
Layers
7. APPLICATION
Fonctions
Informations pour initier ou accepter une requête réseau (affichage)
6. PRESENTATION Informations de formatage, de conversion, de cryptage (structure)
5. SESSION
Informations de connexion de départ d’un paquet (synchronisation)
4. TRANSPORT
Informations de segmentation, ordre, réception des paquets (fragmentation)
3. RESEAU
Informations d’adressage au paquet (routage)
2. LIAISON
Informations de contrôle d’erreurs des trames (CRC) et queue (empaquetage)
1. PHYSIQUE
Missions des trames sur le réseau en forme de flux de bits bruts (impulsion)
Les services © Patrick Hautrive !;~) 2010
44
La comparaison des piles de protocoles
La comparaison des piles de protocoles permet de se faire une vue d'ensemble de l'architecture réseau des différents protagonistes. Les recommandations du modèle OSI et les sept couches ne sont pas toujours respectées. Toutefois, le modèle OSI reste le canevas théorique qui peut servir d'exemple et d'échelle de comparaison.
La pile de protocole Tcp­ip (tcpip stack) est universellement reconnue par les différentes architectures, parce que c'est une implémentation libre et éprouvée, et parce que c'est l'architecture du réseau internet.
La comparaison des piles de protocoles
Modèle OSI
TCP­IP
Windows™ NT
Application NFS FTP SNMP Redirecteur
Presentation XDR SMTP RIP
ARP POP3 OSPF
Session
PPP IMAT ICMP
Transport
TCP
Network IP
Pilotes LAN Couche MAC
Liaison
Apple
Serveur
NetWare
AppleShare
TDI
NCP
AFP
Tube NetBIOS
NWLink NBT DLC ASP ADSP ZIP PAP
ATP NBP AEP RTMP
SPX
TCP
NDIS 4.0 DDP
IPX
Pilotes LAN
Pilotes LAN
IP
Wrapper Local Token Ether
Couche
NDIS
ODI NDIS
Talk
Ring
Talk
MAC
Physique La carte réseau
La communication client serveur
La communication client serveur est un échange entre deux ordinateurs, l'un joue le rôle du client et l'autre joue le rôle du serveur. Parfois les rôles s'intervertissent.
La communication client serveur
Client
connect
receive (ack)
send (request)
receive (response)
disconnect
Network
1
4
5
8
9
­­­­>
<­­­­
­­­­>
<­­­­
­­­­>
Server
2
3
6
7
10
Les services © Patrick Hautrive !;~) 2010
45
listen
send (ack)
receive (request)
send (response)
close connexion
Les RFC
Les RFC (Request For Comments) sont des documents techniques qui décrivent les mécanismes des technologies utilisés sur internet et dans les réseaux en général. Ce sont des documents qui explicitent en détail le fonctionnement d'un protocole ou d'une norme et qui font référence pour les constructeurs de matériels, les opérateurs, les administrateurs et les professionnels des réseaux et de l'industrie informatique. Les RFC sont numérotés dans leur ordre historique d'apparition, de la plus anciennes à la plus récentes. Des sites spécialisés proposent la consultation en ligne de ces documents.
Les RFC (Request For Comments)
RFC 768 UDP
RFC 791 DARPA
RFC 792 ICMP
RFC 793 TCP
RFC 821 SMTP
RFC 822 MAIL
RFC 950 SUBNET
RFC 977 NNTP
RFC 1058 ROUTING IP
RFC 1178 DOMAIN NAME
RFC 1180 TEACHING TCPIP
RFC 1208 GLOSSARY
RFC 1219 ADDRESSING
RFC 1234 ROUTING IPX
RFC 2196 SECURITY
RFC 1597 PRIVATE NETWORK
Les environnements réseaux hétérogènes
L’hétérogénéité des réseaux provient de la cohabitation plus ou moins heureuse des nombreux fournisseurs qui se battent ou s'entendent pour conquérir des parts de marchés et imposer leurs normes. Les éditeurs de système d’exploitation réseau développe des API (Application Program Interface) qui leur sont propres, les constructeurs de machines conçoivent des architectures propriétaires, les fondeurs de processeurs mettent au point des instructions processeurs particulières, les organismes de régulation s'apparentent parfois à des consortiums de multinationales et de services spéciaux des états qui revendiquent le contrôle de l'univers numérique et le monopole des nouvelles technologies.
Les normes des protocoles réseaux ne sont pas toujours suivies, les technologies suivent des processus de création et de validation qui sont privés, le cycle de vie des produits est court et incertain, les constructeurs de matériels essayent de favoriser leurs produits et utilisent les techniques de commercialisation et de fidélisation “moderne”, basé sur la dépendance, l'influence des lobbyistes, les progrès de la sociologie de groupe et les neurosciences. La plus part des réseaux hétérogènes combinent les architectures, les technologies, les protocoles, les systèmes et les logiciels.
Les services © Patrick Hautrive !;~) 2010
46
Les réseaux hétérogènes
Computers
Mini
Processors
Constructors
Cryptography
Langages
IBM
Macintosh™
CISC Cesar
Vigenere
Assembler
Delphi
Editors
Microsoft
Systems Windows
Protocols NetBEUI
Servers
Nfs
Lines
Blade
RISC
HP Sun Intel Dell Motorola Xerox Nokia Sony
ANSI
Networks
Terminal IBM PC
CELLS
Normes
Topology
Main Frame
C
C++
DES
MD5
CHA
PGP
Java
Sql
Php
Shell
IEEE 802 EIA 568 IPV4
IPV6
Asymetric
Ruby
ITU
Python
OSI
Oracle
Netware
OS/2
UDP XNS
SPX/IPX Ssh
Apache
Postfix Smtp
Ring
Ethernet
LAN MAN WAN
Extranet
Client Server
Private Public
FDDI
VPN
Bus
Star
Peer to Peer
Unices
RFC
3com
Novell
Ftp
RTC
RSA
Asus
Bsd
Intranet DMZ
ADSL
RNIS
Unix™
X.25
ATM
Community
Apple
Gnu Linux Mac OS TCP/IP
Apple Talk
Pop
Bind
Mysql
Internet
Transmission
Analogical Broadband
Digital Baseband
Supports
Coaxial
UTP/STP
Fiber
Connectors
BNC
AUI DIX
RJ11
RJ45
USB
Serie
Wifi
LPT
FIRE
Slots
ISA
EISA
MCA
PCI
PCX
AGP
RAM
VGA
DVI
Methods
Concentrators
Collision Prevention
Hub
Switch
Commutation
Radio Spectral Microwave
Jeton
MAU
A/Synchronous
Priority
CSUDSU
Bridge
Les services © Patrick Hautrive !;~) 2010
47
Canals
Router
Satellite
Modem
Firewall
Laser
Sneakernet
Gateway
TCP/IP
Le protocole TCP/IP
Le protocole Tcp­ip est le protocole d'échange de données sur internet et sur la plupart des réseaux intranet. Le protocole Tcp­ip se compose de deux protocoles distincts, le protocole TCP et le protocole IP. Le protocole TCP (Transport Control Protocol) assure le transport des messages sur le réseau et correspond à la couche TRANSPORT du modèle OSI. Le protocole IP (Internet Protocol) assure l'adressage des messages et correspond à la couche RESEAU du modèle OSI.
Le protocole TCP est un protocole de commutation de paquets routés dans le maillage des routeurs du réseau internet. Les paquets (packets) sont découpés (segments), encapsulés (datagrammes) et véhiculés (trames) selon l'état du trafic (trafic), et empruntent le chemin (route) le plus directe ou le plus rapide. En théorie, un paquet peut très bien traverser l'atlantique pour arriver chez votre voisin.
Le protocole Tcp­ip est un protocole de connexion, c'est­à­dire que les messages ne sont pas simplement envoyés. L'émetteur entame toute une procédure de connexion avec le destinataire. Les échanges sont systématiquement vérifiés (check) et réceptionnés (ack), et parfois, ils sont même synchronisés (sync) et contrôlés (control). Autrement dit, l'expéditeur d'un paquet attend un retour de la part du destinataire.
La commande “man tcp” présente la mise en œuvre du protocole de connexion TCP. La commande “man udp” présente la mise en œuvre du protocole non connecté UDP. La commande “man ip” présente la mise en œuvre du protocole d'adressage IP.
L'histoire de TCP/IP
Le protocole TCP/IP (Transport Control Protocol / Internet Protocol) est le plus connu des protocoles parce que c’est celui qui est employé sur le réseau des réseaux, c’est à dire internet. Historiquement, TCP/IP présentait deux inconvénients majeurs, sa taille et sa lenteur. Le protocole TCP/IP fait partie intégrante du système d’exploitation BSD 4.2 et des systèmes Unix™ depuis le milieu des années 1970. Auparavant, c’était le protocole UUCP (Unix to Unix Copy Program) qui était employé pour copier des fichiers et des messages électroniques entre deux machines.
Le protocole TCP/IP est une norme ouverte, c’est à dire que les protocoles qui constituent la pile de protocoles TCP/IP ont été développés par des éditeurs différents sans concertation. Le groupe de travail IETF (Internet Engineering Task Force) a rassemblé les différents protocoles de la pile TCP/IP pour en faire une norme. Le travail de l’IETF est régulièrement soumis à l’ensemble de la «communauté internet» dans des documents appelés RFC (Request For Comments). Les RFC sont considérées comme des brouillons parce que les spécifications qu’elles contiennent peuvent à tout moment être réexaminées et remplacées.
Les services © Patrick Hautrive !;~) 2010
48
La pile TCP­IP
La pile TCP/IP est une pile de protocoles relativement volumineuse et sa vitesse d’exécution et de transmission des paquets est comparable à SPX/IPX. Le protocole TCP/IP est devenu la référence à partir de laquelle sont évalués les autres protocoles. La pile de protocole TCP/IP est la plus riche fonctionnellement. La pile TCP­IP est relativement volumineux, mais rapide. Le protocole TCP/IP est un protocole en mode datagramme (commutation de paquets) avec connexion( ack+sync) et perte (TTL).
Le protocole IP dispose de fonctions standardisées, les «API sockets» qui se comportent de la même façon sur tous les types de matériels. Les sockets sont des mécanismes qui permettent la communication inter processus distant. C'est­à­dire que les sockets assurent l'échange de données entre différents processus appartenant à des systèmes différents reliés par le réseau. Le mécanisme des socket existe depuis 1969 avec Unix™ BSD 4.2 de l'université de Berkeley. La pile TCP/IP est très répandue et très fonctionnelle, mais assez compliqué et assez volumineux. En fait, l’inconvénient majeur provient de son succès, et de la diminution du nombre des adresses IP disponibles, en attendant la version IPV6 appelé aussi IPNG. La pile TCP­IP est une norme industrielle. Tous les réseaux reconnaissent les protocoles TCP/IP et correspond à un standard pour la communication inter réseau et particulièrement entre des réseaux hétérogènes. La pile TCP­IP assure l'interopérabilité entre les systèmes hétérogènes. Le protocole TCP­IP est un protocole routable.
De nombreux protocoles ont été développés pour la pile TCP­IP, que ce soit pour la gestion des adresses physiques du réseau (arp), le routage (rip et ospf), la réception des mails (pop3 et imap4), l'envoie de mail à un serveur de messagerie (smtp), le transfert de fichier (ftp), ou la surveillance des réseaux (snmp). Le protocole ARP (Address Resolution Protocol) permet de retrouver l'association entre l'adresse IP (@ip) et l'adresse MAC d'une machine (@mac). Le protocole RARP (Reverse Address Resoltion Protocol) permet de faire l'inverse, c'est­à­dire retrouver à partir de l'adresse MAC (@mac) l'adresse IP (@ip) d'une station.
Les services © Patrick Hautrive !;~) 2010
49
Les protocoles de la pile TCP/IP Name Fonction SSH
SSH (Secure Shell) pour se connecter en mode sécurisé à un serveur ssh
UDP
UDP (User Datagram Protocol) protocole non connecté sans contrôle de flux (no ack)
HTTP
HTTP (Hyper Text Transfer Protocol) affiche les pages HTML
FTP FTP (File Transfer Protocol) s’occupe des transferts de fichiers
TELNET TELNET permet d’établir une connexion non sécurisé à un hôte distant
DHCP
DHCP (Dynamic Host Configuration Protocol)
TCP TCP (Transport Control Protocol) assure la segmentation et la transmission des paquets
IP IP (Internet Protocol) gère les adresses logiques des nœuds (address)
ARP ARP (Address Resolution Control) associe les adresses IP et physiques MAC (@mac)
RARP
RARP (Reverse Address Resolution Control) associe les adresses MAC et IP (@ip)
RIP RIP (Routing Internet Protocol) trouve la route la plus rapide (route)
OSPF OSPF (Open Shortest Path First) est une amélioration de RIP, plus rapide et plus fiable
ICMP ICMP (Internet Control Message Protocol) gère les erreurs et les réponses (ping)
BGP/EGP BGP/EGP (Border Gateway Protocol / Exterior Gateway Protocol) sécurise les réseaux
SNMP SNMP (Simple Network Management Protocol) permet de gérer les matériels réseaux
PPP PPP (Point to Point Protocol) permet d’établir une connexion distante par téléphone
NFS
NFS (Network File System) pour partager des fichiers sur le réseau
DNS
DNS (Domain Name Service) pour la résolution des noms de domaine
NIS
NIS (Network Information Service) centralise les informations d'un réseau (nis domain)
NNTP
NNTP (Network News Transport Protocol)
SMTP SMTP (Simple Mail Transport Protocol) pour envoyer des courriers électroniques
POP3
POP3 (Post Office Protocol version 3) pour récupérer son courrier électronique
IMAP4 IMAP4 (Internet Message Advertising Protocol version 4) pour recevoir son courrier
Les services © Patrick Hautrive !;~) 2010
50
L'entête TCP
L'entête TCP permet le transport des paquets. L'entête TCP est de 40 Octets. Certaines informations des entêtes sont importantes comme les drapeaux (flags) qui permettent de configurer la communication. Par exemple, TTL (Time To Live) indique le nombre maximal de saut de routeurs, MSS (Maximum Segment Size) indique la taille maximale des segments, ou IRTT (Initial Round Trip Time). Les initiales ont une signification: U ( up), H (host), G (gateway), D (dynamic) et M (modified).
L'entête TCP (40 Octets)
Le contrôle des erreurs avec réexpédition (check)
Le contrôle des séquences avec ré­assemblage (order)
Le contrôle de flux avec des “fenêtres de tir” (timing)
L'accusé de réception (ack)
Le port de la source émettrice (sport)
Le port de destination (dport)
Le numéro de séquence des données (sequence)
Le numéro de l'accusé de réception (ack number)
La taille de l'entête TCP (data offset)
Le drapeau de contrôle (control)
La fenêtre de tir (window)
Le total de contrôle de l'entête TCP (tcp checksum)
Le pointeur d'urgence (urgent)
Les options éventuelles comme la taille maximale (options)
L'entête IP
L'entête IP (20 Octets) permet l'adressage et le routage des paquets ou des trames sur le réseau TCP/IP.
Les services © Patrick Hautrive !;~) 2010
51
L'entête IP (20 Octets)
La version du protocole IPV4 ou IPV6 (ipv4)
La longueur de l'entête IP (length)
Le type de service prioritaire ou non (service)
La longueur totale du paquet (total)
L'identification du paquet ou le numéro de séquence des données (sequence)
Les informations de défragmentation (defrag)
Le nombre de sauts de routeurs encore possible (TTL) Le nom du protocole de transport (tcp)
Le calcul de la parité de contrôle de l'entête IP (ip checksum)
L'adresse IP de l'ordinateur émetteur (@source)
L'adresse IP de l'ordinateur de destination (@target)
Les options éventuelles (options)
Les classes d'adresse IP
Classe A
Classe B
Classe C
Classe D
Classe E
(voir Le networking)
Les services © Patrick Hautrive !;~) 2010
52
NETWORK
La configuration du réseau
La configuration réseau dépend d'un grand nombre de facteurs, comme de l'architecture réseau, du mode de transmission, du type de ligne, de la topologie, de la méthode d'accès au réseau, des protocoles, des systèmes, des distributions Gnu Linux, de l'organisation hiérarchique des services, de l'adressage des sous réseaux, et des dispositifs de routage et de filtrage de l'infrastructure.
La configuration du réseau Commands
ifconfig
iwconfig
route
ping
netstat
nslookup
traceroute
vmstat
tcpdump
hostname
host
hostid
ssh
service
dhcpclient
ifrename
dhclient­script
dhclient.conf
dhclient.leases
dhcp­eval
dhcp­options
services­admin
iwconfig
Files
ifup
man tcp
ifdown man ip
arp
man udp
rarp
man route
ethtool man ifconfig
named man ipchains
ntpdate man iptables
man iftab
man ethtool
man uri
/etc/inittab
/etc/hostname
/etc/hosts
/etc/host.conf
/etc/hosts.allow
/etc/hosts.deny
/etc/iftab
/etc/networks
/etc/services
/etc/named.pid
/etc/named.boot
/etc/resolv.conf
/etc/nsswitch.conf
/etc/network/interfaces
/etc/sysctl.conf
/etc/sysconfig/network/ifcfg­eth0
/etc/sysconfig/network.scripts
/etc/init.d/networking
/etc/rcS.d/S40networking
/proc/sys/net/ipv4
/proc/net/route
/proc/net/rt_cache
/proc/sys/net/ipv4/ip_forward
/etc/dhcp3/dhclient.conf
Les noms de domaine
La résolution des noms de domaine (domain name) consiste à associer le nom d'une machine à son adresse IP (@ip). La résolution des noms de domaine peut s'effectuer localement dans le fichier “/etc/hosts”, ou par le réseau, via un serveur DNS (Domain Name Service) ou un serveur NIS (Network Information Service).
L'ordre de recherche pour la résolution est indiqué dans le fichier “/etc/host.conf”. Quand c'est un serveur qui résout les noms de domaine, son adresse IP est spécifié dans le fichier “/etc/resolv.conf”. Le serveur “named” ou BIND (Berkeley Internet domain Name) est le serveur de nom de domaine, et le fichier “/etc/named.boot” est le fichier de configuration. La résolution d'une adresse IP en nom de domaine s'appèle la résolution DNS inverse (reverse dns).
Dans un LAN (Local Area Network), les noms de domaine peuvent s'écrire simplement avec le nom de Les services © Patrick Hautrive !;~) 2010
53
la machine (hostname). Mais, dans le cadre d'un réseau plus vaste, le nom de domaine pour identifier une machine doit être complet et s'écrire dans le format FQDN (Full Qualified Domain Name) comportant le nom de la machine, le nom du domaine local, et se terminant par le nom hiérarchique du domaine internet ou TLD (Top Level Domain)
Le fichier /etc/hosts
Le fichier de résolution locale des noms d'hôtes /etc/hosts (@ip hostname.domain.tld)
127.0.0.1
127.0.0.1
192.168.1.2
192.168.1.7
localhost.localdomain.tld
loopback localhost
machine.domain.org
server.domain.org
machine
machine
server
Le fichier /etc/networks
Le fichier de résolution des noms de sous réseaux /etc/networks (subnetname @subnets)
default localnet
loopnet
here
there
faraway
domain
0.0.0.0
127.0.0.0
127.0.0.0
192.168.1.0
192.168.2
10.10.10.0
­c1 192.168.1
Le fichier /etc/host.conf
Le fichier d'ordre de la résolution des noms d'hôtes /etc/host.conf (/etc/hosts, named)
order host,bind,nis
multi on
nospoof on
alert on
Le fichier /etc/resolv.conf
Le fichier de résolution des serveurs de noms de domaine DNS resolver (/etc/resolv.conf)
search domain
nameserver
nameserver
nameserver
nameserver
domain.tld
here.org
212.27.32.176
212.27.32.177
192.168.1.1
@subnets
Les services © Patrick Hautrive !;~) 2010
54
Le fichier /etc/named.boot
Le fichier /etc/named.boot (named)
directory
cache
primary
primary
/var/named
.
named.ca
domain.tld
named.host
172.266.12.in­addr.arpa
namedrev
Le fichier /etc/sysconfig/network
Le fichier de configuration des interfaces réseaux /etc/sysconfig/network (VARIABLE=Value)
NETWORKING
HOSTNAME
GATEWAY
GATEWAYDEV
DOMAINNAME
FORWARD_IPV4
NISDOMAIN
=
=
=
=
=
=
=
yes
hostname.domain.tld
192.168.1.1
“eth0”
here.org
true
nisdomain
Le fichier /etc/ network/interfaces
Le fichier /etc/network/interfaces (Debian)
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow­hotplug eth0
iface eth0 inet static
address 10.0.2.155
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
gateway 10.0.2.254
dns­domain tld.org
dns­search tld.org
dns­nameservers 10.0.2.254
#ifconfig eth0 down
#ifconfig eht0 up
#/etc/init.d/networking restart
Les services © Patrick Hautrive !;~) 2010
55
La configuration PPP
La configuration PPP
Commands
/sbin/ipppd
chat
isdnctrl dial ppp0
minicom
isdnctrl hangup ppp0 imon
imontty
seyon
kppp
pppstats
wvdial
Files
dh_installppp
plog
poff
pon
pppconfig
pppd
pppdump
pppoeconf
eagle­usb­utils
PPP Howto
/etc/ppp/ioptions
man pppd
/etc/ppp/pap­secrets
/etc/ppp/chap­secrets
/etc/ppp/connect­errors
/var/log/chat.log
/var/log/pppd.log
Les exemples réseaux
http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html
ping 127.0.01 ; ping 192.168.1.2 ; ping 192.168.1.254
ifconfig – a
ifconfig eth0 down
ifconfig eth1 up
ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up
netstat ­nr
host machine
nsloopkup www.hautrive.tk
route add ­net 192.168.1.0 netmask 255.255.0.0
route add 192.168.1.1
route add default netmask 0.0.0.0 ppp0
route add default gv passerelle.domain.tld
route add default gv 192.168.1.254
route add ­net 192.168.2.0/24 gw 10,0,2,254
route del 192.168.1.254 1 #Metric Gateway flag 1=external 0=local
dhcpclient eth0
ifconfig plip machine­one­to­one machine­one­2­one
/etc/rc.d/init.d/dhcpd restart
/etc/rc.d/init.d/network restart
vi /etc/networking/interfaces
(Debian)
/etc/sysconfig/network/ifcfg­eth0
(SuSE)
netstat ­lnp –ip
netstat ­ac
Les services © Patrick Hautrive !;~) 2010
56
netstat ­ta
netstat ­i w3m http://10.0.2.111:80
echo 1 > /proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf
forwarding=1
apt­get install ntp
iwconfig
lspci | grep 03:00
lspci ­n | grep 03:00
iwconfig wlan0
iwlist scan
ifconfig wlan0 up
lsmod | grep ­i ath
modprobe ­r ath5k ; sleep 3s ; logger "test ath5k" ; modprobe ath5k ;
Les services © Patrick Hautrive !;~) 2010
57
FIREWALL
Le pare feu
Le pare feu ou bastion (firewall) est un dispositif à l'entrée d'un sous réseau qui filtre les paquets entrants et sortant. Le dispositif peut être un routeur sophistiqué ou une station dédiée. Le pare feu dispose toujours d'au moins deux cartes réseaux, une pour chaque sous réseau.
Le pare feu enregistre les trames et analyse les informations contenues dans les entêtes (@ip source, @ip destination, numéro de port source, numéro de port de destination, types de protocoles), et fonction des règles qui lui ont été assignées, le pare feu transmet ou rejette le paquet TCP/IP.
Les pare feux permettent de mettre en place des zones protégées, comme les DMZ (Demilitirized Zone). Les pare feux sont répertoriés en différentes catégories, selon la fonction qu'ils opèrent. Les pare feux qui protègent un sous réseau sont appelés des remparts (bastion). Les pare feux qui filtrent et routent les paquets sont appelés des routeurs (screening). Les pare feux qui servent de cache internet comme le logiciel libre Squid sont appelés des serveurs de caches (proxy). Les pare feux qui font de la translation d'adresse sont appelés des serveurs de mascarades (masquerading).
La mascarade
Un pare feu est également capable de faire de la mascarade, c'est­à­dire la réécriture des adresses ip et des numéros de port sources, afin d'expédier les paquets sous sa propre identité, puis en recevant les réponses, le pare feu changent à nouveau les adresses et les ports, pour transmettre les paquets à la station d'origine. Ainsi, la mascarade permet de partager une connexion à internet et en même temps de conserver l'anonymat des véritables expéditeurs. Ce mécanisme de mascarade est aussi dénommé NAT (Network Address Translation). Les documentations NAT Howto et IPCHAINS Howto présentent les différentes implémentations des pare feux.
Le proxy
Un pare feu peut également servir de serveur Proxy, c'est­à­dire de serveur internet et de cache. Le cache consiste à conserver une copie des pages qui sont demandées et livrées, et quand les même page sont une nouvelle fois demandées, et qu'elle n'ont pas été mise à jour depuis la dernière requête, d'être alors en mesure de les livrer immédiatement, sans attendre la réponse du serveur sur internet.
Les logiciels de pare feux
Il existe plusieurs programmes permettant de mettre en œuvre un pare feu.
Les services © Patrick Hautrive !;~) 2010
58
Les logiciels de pare feux
Ipfw Ipfwadmin
Pf Ipmasq
Ipchains
Netfilter
IP Firewall
IP Firewall Administration
Packet Filter des systèmes BSD
IP Masquerading
Gnu Linux kernel 2.2
Gnu Linux kernel 2.4 (#iptables)
Les protocoles de routages
Il existe plusieurs protocoles de routages des paquets et ils se distinguent selon qu'ils routent les paquets à l'intérieur d'un sous réseau privé (RIP, HELLO, OSPF), ou selon qu'ils routent les paquets vers l'extérieur sur le réseau public internet (EGP, BGP).
Un exemple de pare feu
Station
Router
Internet
Provider
Modem
Firewall
Routeur
LAN
DMZ
L'adressage en sous réseaux
Un exemple d'adressage de sous réseaux
Class B
Class C
8 Subnets
192.168.1.0
192.168.1.32
192.168.1.64
192.168.1.96
192.168.1.128
192.168.1.160
192.168.1.192
192.168.1.224
Net (16) + Subnet (6) + Host (10)
64 Subnets (2^6) with 1024 hosts (2^10)
Sub Mask 255.255.252.0
Subnet Hosts (32­2) Subnet Broadcast
1 to 30
192.168.1.31
32 to 62
192.168.1.63
64 to 94
192.168.1.95
96 to 126
192.168.1.127
128 to 158
192.168.1.159
160 to 190
192.168.1.191
192 to 222
192.168.1.223
224 to 254
192.168.1.255
Les services © Patrick Hautrive !;~) 2010
59
La configuration d'un pare feu
La configuration d'un pare feu
Firewalls
armo­iptables
ferm
fiaif
filtergen
fireflier­client­gtk
fireflier­server
firehol
firestarter
firewall
fwanalog
fwbuilder­linux
guarddog
ipkungfu
knetfilter
lokkit
mason
netscript
pyroman
shorewall
uruk
uif
ufw
Netfilter
Files
ipchains
iptables
iptstate
ipmasq
ipmasqadm
ipfwadm
iproute
ipac­ng
knetfilter
Les services © Patrick Hautrive !;~) 2010
60
PRINT
L'impression
Les travaux d'impression sont enregistrés dans un répertoire appelé indifféremment une “imprimante”, ou file d'attente (spool). Le répertoire de Spool peut être un répertoire local ou distant sur un serveur d'impression. Les travaux d'impression proviennent généralement d'une application qui a été configurée pour proposer l'impression avec un ou plusieurs périphériques d'impression. Le document de l'application est conditionné selon le format de l'application. Afin d'être convenablement imprimé par le périphérique d'impression, le document doit être préparé ou formaté selon le langage de l'imprimante. Le langage du périphérique d'impression s'appèle un langage de description de page ou PDL (Page Description Language).
C'est le pilote d'impression (driver) ou le serveur d'impression (daemon) installé sur chacun des postes de travail qui réceptionne les travaux d'impression, les formate (filter) et les redirige vers la file d'attente (spool) du périphérique d'impression (printer). Le périphérique d'impression (device) imprime les travaux d'impression (jobs) selon leur ordre d'arrivée FIFO (First In first Out) ou de priorité (priority). Un répertoire de SPOOL (Simultaneous Peripheral Operation Off Line) peut être lié à plusieurs périphériques, et/ou plusieurs répertoires de spool peuvent être liés au même périphérique d'impression.
Les documentations Printing Howto et Apsfilter Handbook décrivent l'installation et la configuration de l'impression pour les systèmes Gnu Linux. Le fichier PRINTCAP (Printer Capabilities) rassemble toutes les configurations des imprimantes d'une station Gnu Linux. Le fichier spécial de périphérique “/dev/lp1” représente la première imprimante d'un système Gnu Linux. L'impression d'un document doit tenir compte des polices de caractères (fonts), de la table de codage des caractères (unicode) et du langage de description de page du périphérique d'impression (language).
Le processus d'impression
System
Document Driver
Filter
Application
Fonts
Daemon
Spool
Spool
Daemon PDL
Network
Printer
Printer
Paper
Paper
Les systèmes d'impression
Les systèmes Unices disposent de plusieurs systèmes d'impression. Le système d'impression est constitué d'un serveur (daemon) qui attend les demandes d'impression qui sont lancées par les utilisateurs (jobs), et qui, en fonction du fichier de configuration (configuration file), et après une éventuelle conversion du format (filter), les redirige vers la file d'attente (spool) du périphérique d'impression (device).
Les services © Patrick Hautrive !;~) 2010
61
Les systèmes d'impression des systèmes Unices
System
Name
System V Unix™ AT&T LPD (Line Printer Daemon)
Command
lp
System BSD 4.4
LPRng (Line Printer New Generation) lpr
System Gnu Linux
CUPS (Common Unix Printer System)
Daemon
lpd
cupsd
L'impression CUPS
Le système d'impression CUPS (Common Unix Printer System) est le système privilégié des systèmes Gnu Linux. Le système d'impression Cups utilise le protocole IPP et le langage de description de page PPD. Le système CUPS est modulaire, accepte le chiffrage et gère les quotas. Le système CUPS est compatible avec les systèmes BSD et Unix™ System V d'AT&T.
Les filtres d'impression
Les filtres d'impression (filter) interceptent les travaux d'impression (jobs) et les préparent pour le périphérique d'impression. En général, cette préparation consiste en une conversion ou une traduction (language). Ainsi, les travaux d'impression arrivent avec le bon format (format) dans la file d'attente (spool) et sont prêts à être imprimés par le périphérique d'impression (device). Des outils permettent de convertir les formats de fichier dans d'autres formats (dvi, ps, pbm).
Le programme Magic Filter identifie le format “natif” des imprimantes et sélectionne l'outil de conversion adéquat, comme Ghostscript, qui permettra de présenter au périphérique les travaux d'impression au bon format. Il existe différents filtres qui conviennent plus ou moins bien selon les types d'imprimantes. L'outil Ghostscript permet de convertir les fichiers Postscript en de nombreux autres formats. L'outil Ghostscript s'utilise en mode interactif avec un prompt “GS>”.
Les outils de conversion permettent de transformer un format dans un autre en remplaçant certains caractères ou codes par d'autres. Les outils de conversion peuvent être très spécialisés et ne fonctionner que dans un seul sens (depuis un format vers un autre). Ils portent un nom qui indique le format de départ, le sens avec le chiffre “2” qui s'entend et sonne en anglais comme la conjonction de coordination “to”, et le format d'arrivée. Les outils de conversion peuvent ainsi être utilisés dans des scripts qui automatisent les tâches répétitives. Par exemple la commande “ps2pdf” convertit un fichier Postscript vers le format PDF. L'on parle aussi d'encodage, pour signifier le type de code.
Les formateurs sont des outils généralistes qui permettent de rechercher et d'extraire un motif connu.
Les services © Patrick Hautrive !;~) 2010
62
Les filtres d'impression et les outils de conversion
Filters
Tools
Conversion
Magic Filter de Image Magic Ghostscript (Postscript) mft
Aps Filter
Print Tool de Red Hat lout
Foomatic
Package Psutils
gs
Gimp Print
gv
a2ps
ps2pdf
ps2epsi
ps2ascii
html2text
dvips
dvipdf
xdvi
kdvi
dvilj
enscript
nenscript
netpbm
pbmplus
tiffg3
efax
flexfax
wv
Formators
pr
tr
cut
awk
troff
nroff
groff
Le format d'impression
Les commandes “gs” ou Ghostscript et “gv” ou Ghostview permettent d'interpréter et de visionner les documents qui sont dans un format Postscript ou dans un format PDF (Portable Document Format). Les fichiers au format Postscript portent l'extension “.ps” et les fichiers au format PDF portent l'extension “.pdf”. Le format PDF est un format qui est compatible avec tous les systèmes et toutes les imprimantes.
Les types de formats sont nombreux et certains sont des formats propriétaires pour lesquels il faut payer une redevance, et d'autres sont des formats libres et gratuits. Les formats caractérisent les structures et les codes d'enregistrement d'un document, d'une image ou d'un fichier. Le format brut (raw) est un format texte (ascii), sans structure ni code que celui de la table des caractères. Le format ASCII (American Standard Code for Information Interchange) est le format le plus simple et le plus universel qui soit, puisque c'est le codage de base des caractères.
Les formats d'impression
ps
gif
pdf
jpeg
raw
jpg
ascii
Les types d'imprimantes
Il existe plusieurs catégories d'imprimantes, les imprimantes à aiguilles (needle), les imprimantes à jet d'encre (bubble), les imprimantes à faisceau laser et toners (laser) et les tables traçantes d'architecte (table). Les imprimantes peuvent être des imprimantes en noir et blanc (black) ou des imprimantes couleurs (color).
Les imprimantes ou les périphériques d'impression se distinguent par le ou les langages de description de page qu'elles ou ils utilisent. Les langages peuvent être des langages propriétaires, spécifiques à un éditeur de système d'exploitation ou à un constructeur de matériel, ou être des normes ouvertes qui Les services © Patrick Hautrive !;~) 2010
63
peuvent être exploitées sur plusieurs systèmes et plusieurs types de matériels.
Les types d'imprimantes et leur PDL (Page Description Language)
Language
GDI
Postscript
PDF
Encapsulated Postscript
Adobe 1 & 3
PCL 5
HP­GL
HP Laser jet
Spécification
Extension
Les systèmes Windows™
Portable Document Format
EPS
La société Adobe
Postscript Common Language de Hewlett Packard
Hewlett Packard General Language
Hewlett Packard Language for Laser Printer
“.ps”
“.pdf”
La configuration de l'impression
La configuration d'un système d'impression dépend du système d'impression installé (lpd, lprng, cups), de la localisation et du type d'imprimante, et particulièrement du type de langage de description de page.
La configuration de l'impression
Commands
lp
lpstat
lpadmin
lpoptions
lpstatus
banner
lpdomatic
smbspool
cancel
printafm
lpr
lpq
lprm
lpc
print
printf
lptest
gsbj
gsdj
gslj
gslp
gsnd
cups­calibrate
cups­genppdupdate
cups­lpd
cups­polld
cupsaddsmb
cupsd
cupsdisable
cupsenable
red­hat­config­printer
Files
Filters
PRINTER
/etc/hosts.lpd
LPDEST
/etc/lpd.perms
PRINTDEST /etc/lpd.conf
NENSCRIPT /etc/printers.conf
GSLP.PS
/etc/printcap
GSDIR
/etc/cups/client.conf
GS_LIB
/dev/lp0
man printcap /var/spool/lpd/printer
man 1 lp
/usr/local/lib/ghostscript
man 4 lp
/etc/lprng/printcap
man gs
/var/spool/lpd/smb/.config
man lpc
/var/lock/subsys/lpd
apropos print
locate print
~/.apsfilterrc
/etc/apsfilter
/usr/lib/apsfilter
/usr/share/magicfilter
Parce que pour passer par le serveur il suffit
1) sur le serveur de partager l'imprimante
2) sur le client d'avoir un /etc/cups/client.conf qui contient
ServerName <nom du serveur>
Les services © Patrick Hautrive !;~) 2010
64
Un exemple d'imprimante locale
Un exemple d'installation d'une imprimante locale avec le système lpd (print daemon).
Un exemple d'installation d'imprimante
mkdir ­p /var/spool/lpd/laser
chown root.daemon /var/spool/lpd/laser
chmod ug=rwx,o=rx /var/spool/lpd/laser
cd /var/spool/lpd/laser
touch .seg errs status lock
chown root.daemon *
chmod ug=rw,o=r *
vi filter
#!/bin/sh
#filter
echo “­­­­­” >> /tmp/testlp.out
date >> /tmp/testlp.out
echo “­­­­­” >> /tmp/testlp.out
chmod ug=rwx,o=rx filter
mv /etc/printcap /etc/printcap­old
vi /etc/printcap
laser | laser : :lp=/dev/lp0:
:sd=/var/spool/lpd/laser:
:lf=/var/spool/lpd/laser/errs:
:if=/var/spool/lpd/filter:
:mx#0:
:sh:
:sf:
chown root.daemon /etc/printcap
chmod 644 /etc/printcap
ls ­l /etc/rc.local
lpd
ls ­l | lpr ­P laser
less /tmp/testlp.out
\
\
\
\
\
\
\
\
Un exemple d'imprimante Windows™ en réseau
Un exemple d'installation d'une imprimante réseau (remote) et d'une imprimante Windows™ avec le protocole SMB (Server Message Block).
Un exemple d'imprimante Windows™ en réseau
mkdir ­p /var/spool/lpd/remotelp
chown lp /var/spool/lpd/remotelp
chmod 700 /var/spool/lpd/remotelp
vi /var/spool/lpd smb/.config
server=”Windows™ Printing Server”
service=”Printer Name”
password=”secret”
user=””
vi /etc/printcap
smb | Remote Windows™ printer :
:if=/usr/bin/smbprint :
:lp=/dev/null :
:sd=/var/spool/lpd/smb
:mx#0 :
Les services © Patrick Hautrive !;~) 2010
65
\
\
\
\
\
Le fichier /etc/printcap
Le fichier “/etc/printcap” rassemble les différentes configurations d'imprimantes d'une station.
Le fichier /etc/printcap
Local Printer
Remote Printer
laser | local laser : :lp=/dev/lp0:
:sd=/var/spool/lpd/laser:
:lf=/var/spool/lpd/laser/errs:
:if=/var/spool/lpd/filter:
:mx#0:
:sh:
:sf:
lp | lexmark over there :
:if=/usr/share/magicfilter/lexmark :
:gqfilter : :lp=/dev/usb/lp0 :
:sd=/var/spool/lpd/lp :
:pl#66 :
:pw#80 :
:pc#150 :
:mx#0 :
:sh :
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
remotelp | Remote printer : :rm=distant:
:rp=lp :
:sd=/var/spool/lpd/remotelp :
:mx#0 :
:sh :
\
\
\
\
\
\
smb | Remote Windows™ printer :
:if=/usr/bin/smbprint :
:lp=/dev/null :
:sd=/var/spool/lpd/smb
:mx#0 :
\
\
\
\
\
Les services © Patrick Hautrive !;~) 2010
66
Les exemples d'impression
Voici quelques exemples de commandes pour gérer les impressions sur un système Gnu Linux.
Les exemples d'impression
ls > /dev/lp
export PRINTER=”printer”
/usr/sbin/lpd –help
dvips ­o letter.ps letter.dvi man printcap | col ­b | lpr
mkdir ­p /var/spool/lpd/lp
lp < file
/usr/sbin/lpc status printer
chown lp /var/spool/lpd/lp
cat test.ps > /dev/lp1
lpc Topq 37 ; lpc down lp0
chmod 700 /var/spool/lpd/lp
pr ­h “Title” file | lpr
lpc enable ; lpc status lp0
/etc/init.d/lprng restart
lp ­d laser­printer file
lpc stop lp0 ; lpc start lp0
lpr file ; lpq ­P laser
lpstat ­a all ; lpq ­a
/etc/rc.d/init.d/lpd restart ; lpd ­l lprm user@localost +670
cancel laser­printer
chmod ug=rwx, o=xr /var/spool/lpd/laser gs ­h ; gs
lprm ­ ; lprm 15
chgrp daemon laser
GS>devicename=laser
lprm $USER
dpkg ­l | grep cupsys | awk '{print $2}'
GS>quit
lpstatus ; lptest 35 6
a2ps ­4 file.txt ­P file.ps
export GSDIR=”/usr/bin”
lpr ­P our­printer file
groff ­ms file
gs file.ps ; ps2ascii *.ps
lpr ­P html file.html
groff ­Tx75 ­ms file
gs_init *.ps
lpr ­P our­printer #3 ­m file
export NENSCRIPT=”­B ­L66 ­N ­P printer”
export GS_LIB=”/usr/lib/ghostscript:/usr/local/lib/fonts:/usr/X11R6/fonts”
groff ­man ­Tps /usr/man/man5/printcap.5 | lpr
vi /etc/cups/client.conf
ServerName cupsserver
Les services © Patrick Hautrive !;~) 2010
67
KERNEL
Les noyaux
Les noyaux sont classés en deux types, les micro noyaux (Hurd, Mach) et les noyaux monolithiques (Windows™, Gnu Linux). Les micro noyaux sont de petites tailles et forment le centre d'un ensemble plus vaste qui permet d'ajouter selon les besoins des fonctionnalités. Les noyaux monolithiques sont de grandes tailles et forment un ensemble auto suffisant où toutes les fonctionnalités sont réunies et sont toujours présentes en mémoire. Le système Gnu Linux est un noyau monolithique, mais ils disposent de la possibilité de charger en mémoire des modules supplémentaires qui ont été prévus lors de la compilation. Le système Gnu Linux peut être réduit en taille pour constituer un minuscule noyau qui peut être intégré à des solutions électroniques embarquées (embedded) pour des matériels spécialisés.
Le noyau est un programme qui est compilé en fonction de l'architecture du processeur à la quelle il est destiné (architecture). Le noyau est chargé en mémoire au démarrage du système, et reste en mémoire vive (memory) pendant toute la durée d'utilisation du système. C'est le noyau qui lance la procédure d'initialisation du système (init) et qui fait l'interface entre l'utilisateur (user), le matériel (hardware), le réseau (middleware), et qui ordonne le temps processeur (sheduler), gère l'exécution des processus (process) des différentes applications (software). C'est le noyau qui coordonne les actions des utilisateurs (human) et les réactions de l'ordinateur (computer). Le noyau Gnu Linux peut être utilisé en mode ligne de commande (shell) ou par l'intermédiaire d'une interface graphique (window).
Le noyau Gnu Linux
Le noyau Gnu Linux (kernel) fut initié par le finlandais Benedicte Linus Torvalds en l'année 1991, en envoyant un message sur un forum (news), au sujet d'un projet d'extension de Minix pour l'architecture Intel 386. Le noyau Gnu Linux est un système d'exploitation monolithique et modulaire (modules), qui intègre la pile de protocole réseau TCP/IP (network), qui fonctionne en multi tâche préemptif (multi threads) et en mode multi utilisateurs (secure), et qui peut être porté sur la plus part des architectures existantes. Le noyau est composé de sous systèmes spécialisés dans la gestion de la mémoire, des périphériques, de la pile de protocoles réseaux, ou de l'ordonnancement des processus.
Le noyau fut par la suite livré avec la licence Gnu GPL (General Public Licence). Comme tous les projets de la communauté des Logiciels Libres (free software), les développements du noyau sont décidés collégialement par les membres de l'équipe de programmeurs qui participent à son élaboration, et arbitrés par une personne élue par ses pairs (maintainer). La personne responsable du développement du noyau Gnu Linux est en ce moment Alan Cox. Le noyau Gnu Linux est un système performant, robuste, souple et réactif. Ainsi, la correction des d'erreurs (bugs) et les parades aux trous de sécurité (holes) sont apportées très rapidement (patch) par les membres de la communauté (community).
Les services © Patrick Hautrive !;~) 2010
68
Les termes de la licence sont disponibles à cette adresse: http://www.gnu.org/copyleft/gpl.html
La licence Gnu GPL version 2 sur un système Gnu Linux: “/usr/share/common­licenses/GPL­2”
Les versions du noyau
Les noyaux Gnu Linux sont numérotés avec un numéro principal (major), un numéro secondaire (minor) et un numéro de suivie des corrections (revision) auquel peut éventuellement s'ajouter une identification de la distribution (distribution) ou de l'architecture (architecture). Les numéros secondaires permettent de différencier, les versions stables des versions en développement. Les versions propres à une utilisation en production (stable) portent un numéro secondaire pair (even). Les versions en cours de développement et de test (development) portent un numéro secondaire impair (odd). Les distributions qui sont construites autour du noyau Gnu Linux sont appelées des distributions Gnu Linux et rassemblent en plus du noyau lui même (kernel), les outils (tools) et nombre d'autres Logiciels Libres (free software).
Le code source des différentes versions du noyau (source), aussi bien que des versions pré compilées (binary) ou modifiées (patch) sont téléchargeables sur le site “kernel.org”. Le noyau peut être téléchargé sous la forme du code source qui devra être compilé, comme le code source original (tarball), ou le code source modifié selon les besoins de telle ou telle distribution (sources patched). Le noyau peut également être téléchargé sous la forme de binaires déjà compilés spécialement pour un type d'architecture (i386) ou déjà patché pour une certaine distribution (distribution).
Les appels systèmes
Les appels systèmes (system calls) du noyau sont les fonctions de base ou fonctions primitives qui permettent d'exécuter certaines tâches systèmes, comme la gestion des processus par l'ordonnanceur (sheduler), la gestion des communications réseaux (network), la détection des matériels (hotplug) ou la gestion des lectures et des écritures sur le disque dur (file system).
Les appels systèmes du noyau Gnu Linux
fork ()
ioctl ()
exec ()
syslog ()
read ()
write ()
listen ()
send ()
receive ()
L'image du noyau
Le noyau Gnu Linux est une image compactée à laquelle il faut ajouter quelques commandes permettant de la décompresser et de l'installer en mémoire. Les commandes gzip (“.gz”) ou bzip2 (“.bz2”) permettent de décompresser le noyau avant de le charger en mémoire. L'image qui est chargée Les services © Patrick Hautrive !;~) 2010
69
au démarrage se trouve dans le fichier “/boot/vmlinuz”. Cette image est le résultat d'une configuration et d'une compilation. Les paramètres de la dernière configuration ou de la précédente compilation sont conservés dans le fichier “/usr/src/linux/.config”.
Les sources et les entêtes du noyau
Les sources et les entêtes du noyau sont des packages indispensables pour la configuration et la compilation d'un noyau Gnu Linux. L'installation du package “kernel­source” permet d'installer tous les fichiers et les programmes utiles pour la compilation d'un noyau dans le répertoire “/usr/src/kernel­
source­version/*”. L'installation du package “kernel­headers” permet d'installer les fichiers d'entêtes de programmation en langage C. Les répertoires “/usr/include/linux/*” et “/usr/include/asm/*” contiennent tous les fichiers d'entête (“.h”) pour la programmation en langage C.
Les paramètres du noyau
Le fichier “/usr/src/linux/Documentation/kernel­parameters.txt” explicite les nombreux paramètres du noyau. Les paramètres de la configuration du noyau évoluent avec les fonctionnalités qui y sont ajoutées par l'équipe de développement. Pour chacun de ses paramètres, il faut décider, s'il est intégré au noyau (“y”), s'il y est ajouté en tant que module (“m”) ou s'il n'en est pas tenu compte (“n”). Les paramètres sont organisés par catégories (I/O, API Posix, Sheduler, VFS, TCP/IP, Modules). Le fichier “/usr/src/linux/Documentation/changes” présente les changements, les ajouts et les suppressions de paramètres depuis la version précédente du noyau, tandis que le fichier “/usr/src/linux/Documentation/configure.help” propose des conseils pour la configuration du noyau.
La taille du noyau
La configuration d'un noyau permet d'ajouter ou de retirer des fonctionnalités intégrées ou des modules (modules). La réduction de la taille du noyau (size) est un enjeu parce que cela permet d'en accélérer le fonctionnement. Les premiers noyaux Linux représentaient 100 à 300 Kilo Octets, et se composaient d'environ 10 000 lignes de code en langage C (source), qui après la compilation devenaient environ 1000 lignes de code en langage machine (assembler). En 2006, le noyau Gnu Linux 2.6 représentait environ 56 Méga Octets.
Les fonctionnalités du noyau
La configuration d'un nouveau noyau peut s'avérer indispensable lors de mise à jour de sécurité (patch), ou lors de l'intégration d'un nouveau pilote (driver) pour un nouveau matériel (device). Le numéro principal de version d'un noyau (major) est important parce qu'il est lié avec les numéros de versions des librairies dynamiques (library). De la même façon, les numéros de versions des programmes (packages) et de leurs dépendances (dependancy) sont importants pour des raisons de compatibilité.
Les services © Patrick Hautrive !;~) 2010
70
Certaines fonctionnalités sont obligatoirement intégrées dans le noyau, afin que celui­ci soit opérationnel. Le support du premier contrôleur de disque (controler), et le système de fichier racine (root file system) sont nécessairement intégrés dans le noyau, afin de pouvoir accéder à l'arborescence qui contient les commandes de base, et de pouvoir monter les autres systèmes de fichier.
La virtualisation
La virtualisation consiste à faire tourner un système d'exploitation à l'intérieur d'un autre. L'on parle de moteur, d'émulateur, de système de virtualisation qui simule un environnement matériel ou système. Il existe plusieurs systèmes de virtualisation (Vmware, Wine, User Mode Linux, KVM et Xen).
Les modules
Les modules sont intégrés indirectement au noyau, car ils ne sont chargés et reliés au noyau que si celui­ci en a besoin. Le chargeur de modules est responsable du chargement d'un module. Les modules correspondent à une fonctionnalité, un système de fichier, un pilote de périphérique. Les modules tiers, sont des modules qui ne sont pas développés directement par les membres de la communauté des Logiciels Libres, mas par des sociétés privées, comme Nvidia pour les cartes graphiques.
Les commandes systèmes
Les commandes systèmes permettent d'interagir avec le noyau, de connaitre son état et de modifier ses paramètres.
Les commandes systèmes et de configuration du noyau Gnu Linux
Commands
uname
linuxinfo
uptime
sysctl
rdev
patch
systune
strace
ltrace
lcap
mkrboot
memtest86+
x86info
xsysinfo
mon
ksymoops
powernowd
prospect
powertweakd
crashme
sensord
lm­sensors
lsb­release
Packages
make
gcc
gzip
gunzip
bzip2
bunzip2
tar
zcat
kcmlinuz
procps
kernel­img.conf
kernel­source
kernel­headers
kernel­image
kernel­package
glibc­devel
ncurses­devel
egcc
cpp
bin86
kernel­patch­scripts
dh­kpatches
initrd­tools
r­cran­kernsmooth
kernel­internals­guide
Les services © Patrick Hautrive !;~) 2010
71
Files
/boot/vmlinuz
/usr/src/linux/.config
/usr/include/linux/*
/usr/include/asm/*
/usr/src/kernel­source­version/*
/usr/src/linux/Documentation/*
/usr/scr/linux/README
/proc/version
/lib/modules/2.6.19­5­686/*
/etc/sysconfig/kernel
Les exemples du noyau
uname ­a
cat /etc/debian_version
cat /proc/version
cat /etc/issue
cat /etc/*­release
lsb­release ­a
rdev /boot/vmlinuz /dev/hda5
gunzip ­cd patch.gz | patch ­p1
zcat /usr/src/patch­2.4.19.gz | patch ­p1
apt­cache search kernel | grep ^kernel
dpkg­reconfigure tzdata
Les services © Patrick Hautrive !;~) 2010
72
VMLINUZ
Le téléchargement du noyau
La documentation Linux Kernel Howto présente le téléchargement, la configuration, la compilation et l'installation d'un noyau Gnu Linux. La documentation Linux Crash Rescue Howto présente différentes méthodes pour prévenir et dépasser un blocage du système. Le téléchargement du noyau peut s'effectuer à partir du site HTTP de référence “kernel.org”, ou d'un site FTP. L'intégrité de l'image téléchargée doit être vérifié avec la commande “md5sum”. Il existe par ailleurs, de nombreux sites miroirs (miror) qui hébergent des copies exactes et actualisés des fichiers d'origines, que ce soit pour le noyau, ou pour les packages contenant des Logiciels Libres (free software).
http://kernel.org/pub/linux/kernel
La préparation du jardin
La préparation du jardin consiste à protéger les fichiers existants, soit en faisant des copies de sauvegarde, soit en les renommant afin d'éviter que leur contenu ne soit altérer par les nouveaux fichiers. Ces mesures prophylactiques permettront de revenir facilement à la situation antérieure. Le fichier de configuration du chargeur de démarrage (lilo, grub) et le fichier “/usr/src/linux/.config” contenant les paramètres de la dernière compilation sont particulièrement important à sauvegarder. La commande “make oldconfig” permet de générer un fichier de configuration avec les paramètres actuels.
La préparation du jardin ou la sauvegarde des anciens fichiers de configuration
mv /boot/vmlinuz­2.4.7.10 /boot/vmlinuz­2.4.7.10.old
cp /boot/system.map /boot/system.map.old
cp /etc/lilo.conf /etc/lilo.conf.old
mv /usr/src/linux /usr/src/linux.old
cd /usr/src/linux.old ; mv .config .config.last
make oldconfig ; cp .config .config.old
La préparation des outils
La préparation des outils du jardin, de la graine ou de la jeune pousse, consiste à installer les packages et leurs dépendances nécessaires à la configuration et à la compilation du noyau. Les packages indispensables sont les “kernel­source”, les “kernel­header”, la bibliothèque Gnu du langage C “glibc­devel”, le compilateur Gnu pour le langage C “gcc” qui contient la commande “make” et le pré processeur pour le langage C “ppc”. Cette opération peut s'effectuer de différentes manières selon les distributions (Red Hat, Debian), le type de sources (internet mirrors, local servers, cdrom) et le Les services © Patrick Hautrive !;~) 2010
73
mode de gestion des packages (.rpm, .deb, tarball).
Le choix du noyau à télécharger, la dernière version stable ou le numéro de version correspondant aux fonctionnalités recherchées, le choix des sources ou d'une archive pré compilée et patchée pour une distribution, sont autant de décision à prendre avant toute autre chose. Le répertoire d'installation est généralement “/usr/src”. La décompression et le désempaquetage de l'archive y créent habituellement un répertoire nommé “linux­x.y.z” avec les numéros de version de l'archive. Parfois un lien symbolique est établi entre le répertoire des sources et le répertoire générique “/usr/src/linux” afin d'en faciliter l'accès.
La préparation des outils du jardin ou l'installation des packages du noyau
cp linux­2.4.10.tar.gz /usr/src
cd /usr/src
mkdir /usr/src/linux
Red Hat rpm ­q kernel­source
mount ­t iso9660 /dev/cdrom /mnt/cdrom
rpm ­i /mnt/cdrom/RedHat/RPMS/kernel­*
ln ­s /usr/src/linux­2.4.8 /usr/src/linux
Debian apt­cache search kernel
apt­get install debhelper modutils fakeroot
apt­get install kernel­package libncurses5­dev kernel­source­2.4.18
vi /etc/kernel­pkg.conf
tar ­­bzip2 ­xvf kernel­source­2.4.18.tar.bz2
cp /boot/config­2.4.12­386 /usr/src/kernel­source­2.4.18/.config
ln ­s /usr/src/kernel­source­2.4.18 /usr/src/linux
Tarball bzip2 ­dc linux­2.4.10.tar.bz2 | tar xvf ­
tar xvfz linux­2.4.10.tar.gz
ln ­s /usr/src/linux­2.4.10 /usr/src/linux ; ls ­l /usr/src/linux
mv /usr/src/linux/.config /usr/src/linux/.config.new
cp ­i /usr/src/linux.old/.config /usr/src/linux/.config
La préparation du terrain
Le temps du terrain consiste à examiner les documentations du noyau, afin de déterminer si la procédure standard de configuration et de compilation prévaut, ou s'il faut prendre en considération certaines nouveautés. Le fichier MAKEFILE reprend toutes les instructions qui seront données à la commande “make” pour la compilation. Le fichier “.config” prépare en quelque sorte la configuration en présentant les paramètres par défaut les plus courants. La récupération de l'ancien fichier “.config” peut être un gain de temps, s'il le précédent noyau était proche du nouveau. Si de grands changements de fonctionnalité ou d'architecture ont eu lieu depuis, alors, il est préférable de choisir le nouveau fichier “.config”.
Les services © Patrick Hautrive !;~) 2010
74
La préparation du terrain ou la considération des dernières innovations
less /usr/src/linux/MAKEFILE #­­> EXTRAVERSION=”­new.2.4”
less /usr/src/linux/README
less /usr/src/linux/Documentation/configure.help
less /usr/src/linux/Documentation/Changes
less /usr/src/linux/.config
#­­> Valeur de configuration par défaut
La préparation des racines
La préparation des racines et du feuillage de la plante consiste à la configuration du noyau. La configuration du noyau est la phase où sont choisis tous les paramètres qui seront retenus pour le nouveau noyau. La configuration du noyau en mode graphique avec la commande “make xconfig” génère un nouveau fichier “.config”. Les nouveaux paramètres seront conservés dans le fichier “.config”. Si un autre fichier “.config” était présent dans le répertoire, il serait utilisé comme base pour la nouvelle configuration, et serait écrasé avec les nouveaux paramètres à la fin de la configuration. Les paramètres dépendent amplement de la version du noyau et des fonctionnalités qu'il propose. En général, plus le noyau est récent et volumineux, et plus le nombre de paramètres est élevé, et plus la configuration est longue et complexe, parce qu'elle prend en compte les dernières innovations. Fort heureusement, les processeurs actuels sont rapides, et cette phase n'est plus aussi fastidieuse qu'auparavant.
Trois niveaux ou trois modes de configuration sont possibles, soit le mode texte et basique (« make config »), soit le mode interactif avec un menu et une hiérarchisation des paramètres (« make menuconfig »), soit enfin, le mode graphique plus convivial (« make xconfig »). Le mode graphique présente des explications sur chacun des paramètres et les conditions d'utilisation (“?help”). Pour chacun des modes, il faudra sélectionner individuellement les paramètres souhaités, et choisir, s'ils seront intégrés directement dans le noyau (“yes” or <*>), s'ils seront ignorés (“no” or <>), ou s'ils seront ajoutés comme module (“m” or <M>).
La préparation des racines et du feuillage ou la configuration du noyau
Debian
pwd ; ls ­l /usr/src/linux
ls ­l /usr/src/linux/.config ; less /usr/src/linux/.config
cd /usr/src/linux
make proper
#make mrproper ; make oldconfig
make config
make menuconfig
make xconfig
make­kpkg clean
less /usr/src/linux/.config
Les services © Patrick Hautrive !;~) 2010
75
La mise en terre
La mise en terre de l'arbre consiste en la compilation de l'image du noyau proprement dite. La compilation s'appuie sur le fichier de configuration nouvellement créé “.config”, et tient compte des dépendances. La compilation du noyau produit généralement un fichier image qui est compressé (« make bzImage »). Cette image constitue le nouveau noyau. La compilation des modules est effectuée séparément (« make modules »).
Ensuite, l'installation des fichiers aux bons endroits dépendants de l'organisation de la distribution Gnu Linux et des scripts d'installation. L'installation s'effectue également séparément, pour le noyau (« make install »), et pour les modules (« make modules_install »). Les modules sont installés dans le répertoire “/lib/modules/$(uname ­r)/*” et le fichier “/usr/src/linux/system.map” est généré.
La mise en terre ou la compilation de l'image du nouveau noyau
cd /usr/src/linux
Kernel #make dep clean bzImage > resultat.txt
make clean
make dep
make bzImage
ls ­l /usr/src/linux/arch/i386/boot/bzImage
cp ­i /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­2.4.18
#make bzDisk
#make zImage
#make Image
#make all
make install
Modules make modules
ls ­l /usr/src/linux/system.map
cp ­i /usr/src/linux/system.map /boot/system.map
make modules_install
depmod ­a
ls ­l /lib/modules/2.4.18/*.so
vi /etc/modules
L'arrosage et la tutorisation
L'arrosage et la tutorisation consiste à configurer le chargeur de démarrage (lilo, grub) et à rebooter la machine sur le nouveau noyau. La compilation du noyau peut également produire une image Ram Disk (initrd) pour le démarrage du système.
Les services © Patrick Hautrive !;~) 2010
76
L'arrosage et la tutorisation ou la configuration du chargeur de démarrage
Lilo
Grub
ls ­l /boot/vmlinuz­2.4.18
ls ­l /boot/system.map
ls ­l /boot/System.map­2.6.18­686 ls ­l /boot/config­2.4.18
ls ­l /vmlinuz
ln ­s /boot/vmlinuz­2.4.18 /vmlinuz
vi /etc/lilo.conf
boot = /dev/hda
delay = 20
vga = normal
root = /dev/hda1
readonly
image = /boot/vmlinuz­2.4.18
label = newlinux
image = /boot/vmlinuz­2.4.7.10.old
label = oldlinux
/sbin/lilo ­v ­c /etc/lilo.conf
vi /boot/grub/menu.1st
vi /boot/grub/grub.conf
timeout 20
title newlinux
root (hd0,0)
kernel /boot/vmlinuz­2.4.18
title oldlinux
root (hd0,0)
kernel /boot/vmlinuz­2.4.7.10.old
reboot
root=/dev/hda1 ro
root=/dev/hda1 ro
Les services © Patrick Hautrive !;~) 2010
77
PROC
Le répertoire /proc
Le répertoire « /proc » contient un système de fichier virtuel (virtual file system), qui reflète les valeurs du noyau (kernel) en mémoire vive (memory). Les valeurs qui sont contenues dans les fichiers du répertoire « /proc/* » sont extraites de la mémoire vive au moment de leur consultation, et constituent une image instantanée du noyau. Le répertoire « /proc » présente les informations sur les processus, sur l'état du système, comme les bus de la carte mère (bus), les pilotes (driver), les lecteurs ATAPI (ide) ou les périphériques SCSI (scsi), les interruptions (irq), les ports de communication entre le système et les périphériques (ioports), l'accès direct à la mémoire pour certains périphériques (dma), le réseau (net), le système (sys) et les terminaux (tty).
L'attribution de valeur permet à l'administrateur (root) de modifier en direct le noyau et d'affiner sa configuration (tuning). De nombreuses commandes utilisent les données du répertoire « /proc » pour alimenter leur sortie standard. Les paramètres des périphériques PCI sont attribués automatiquement.
Les informations systèmes du répertoire /proc
apm
buddyinfo cmdline cpufreq cpuinfo crypto devices diskstats dma execdomains
fb
filesystems interrupts iomem ioports kallsyms kcore
kmsg loadavg
locks
mdstat meminfo
misc modules mounts mtrr partitions self slabinfo
stat
swaps sysrq­trigger uptime version vmstat
asound/
bus/
driver/
fs/
ide/
irq/
net/
scsi/
sys/ sysvipc/ tty/
Les informations des processus
Tous les processus sont référencés avec leur numéro de PID comme répertoire. Chaque processus en cours possède un répertoire, à l'intérieur duquel se trouvent toutes ses informations et ses caractéristiques. Par exemple, tous les répertoires des processus présentent la ligne de commande qui a été lancée (cmdline), les variables d'environnement qui ont été héritées (environ), les fichiers descripteurs pour les entrées sorties (fd), la racine relative de l'arborescence (root), le répertoire de travail courant ou CWD (Current Working Directory), le code exécutable qui est chargé en mémoire (exe), la carte de l'espace mémoire du processus (maps), les points de montage connus du processus (mounts), ou le statut du processus (status).
Les informations des processus dans le répertoire /proc
attr
auxv
cmdline
cwd
environ
exe
fd
maps
mem
mounts
Les services © Patrick Hautrive !;~) 2010
78
root
stat
statm
status
task
wchan
Les fichiers core
Les fichiers core sont des fichiers qui sont créés dans le répertoire d'exécution d'une commande quand celle­ci vient de crasher. Les fichiers core contiennent une image instantanée de l'espace mémoire du processus de la commande (procces memory) au moment où celle­ci s'est interrompue. L'on parle de fichiers “core dump”. Les fichiers core peuvent être utiles pour découvrir les raisons de l'interruption brutale ou les bugs d'un programme. L'administrateur du système peut régulièrement tracer la présence de ces fichiers core, non seulement pour découvrir la source d'un dysfonctionnement, mais aussi pour éviter qu'ils ne pullulent.
Les exemples de /proc
echo 8192 > /proc/sys/fs/file­max
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1024 > /proc/sys/kernel/threads­max
ls ­d /proc/[0­9]*
free
cat /proc/meminfo
memtest86
ls /var/run/
isapnp
pnpdump
lspci
lsusb
Les services © Patrick Hautrive !;~) 2010
79
SYSLOGD
La journalisation système
Le système Gnu Linux produit des messages qui font l'objet d'une journalisation, c'est­à­dire que les messages du système sont enregistrés dans des journaux (log). Les messages du noyau peuvent être journalisés par le service “klogd” (kernel) et/ou le service “syslogd” (system). Le service “syslogd” est un programme qui a été amélioré à partir des sources d'un système de journalisation issu du système BSD (Berkeley Software Development).
Le service klogd
Le service “klogd” (Kernel Logging Daemon) intercepte les messages du noyau et les journalise ou les transmet au service “syslogd”. Les fonctionnalités du service “klogd” ont été incorporées dans le service “syslogd”. Toutefois certains administrateurs apprécient le service “klogd”, parce qu'il propose une gestion des priorités plus souple, et la capacité de retrouver l'adresse mémoire précise qui est à l'origine d'un message d'erreur du noyau. Les priorités utilisés par le service “klogd” sont définies dans le fichier “/usr/include/linux/kernel.h”.
La commande “man klogd” donne une description du service et de sa configuration.
Le service syslogd
Le service “syslogd” centralise tous les messages systèmes en général et les messages du noyau en particulier. Le service “syslogd” peut fonctionner conjointement avec le service “klogd” ou le remplacer. Le service “syslogd” peut enregistrer directement les messages provenants du noyau, ou indirectement par l'intermédiaire du service “klogd”.
Le service ou le démon “syslogd” (System Logging Daemon) est lancé par la procédure d'initialisation (init) du système. Le service “syslogd” permet de conserver une trace de toutes les activités du système. Les évènements (event) et leur degré d'importance (priority) sont consignés dans des journaux (log). Le service “syslogd” reçoit et centralise les messages (messages) de tous le système. Les messages peuvent provenir d'autres services (daemon), de sous systèmes du noyau (facility), d'applications (server), de binaires exécutables (command), ou de bibliothèques (library).
La configuration du service “syslogd” est enregistrée dans le fichier de configuration “/etc/syslog.conf”. Les messages peuvent être configurés pour être redirigés vers un utilisateur (root), vers un terminal virtuel (console), vers un fichier journal dédié (/var/log/*), ou vers un autre serveur “syslogd”. La journalisation à distance (remote) permet de centraliser sur une seule machine, les messages de plusieurs. Les messages peuvent inclure en option le numéro d'identification du processus associé (pid).
Les services © Patrick Hautrive !;~) 2010
80
La commande “man syslogd” donne une description du service et de sa configuration.
La protection des journaux
Les journaux systèmes devraient être régulièrement recopiés et protégés sur une autre machine, afin d'en conserver une copie originale et actualisée. Les tentatives de connexion, d'intrusion, d'installation de programmes, ou de changement de configuration peuvent être enregistrés dans les journaux systèmes.
Les journaux systèmes représentent une cible pour les pirates, puisqu'ils sont susceptibles de conserver la trace de leurs visites.
Les journaux systèmes
Les journaux systèmes sont nombreux et peuvent être différents selon les distributions Gnu Linux. En général, les fichiers journaux (log) sont placés dans le répertoire “/var/log/*”.
Certains fichiers journaux sont conservés, archivés, compressés, numérotés et remplacés en boucle par un système de rotation pouvant aller de zéro à neuf. Ainsi, le maximum d'information est conservé sans compromettre la taille du répertoire.
Certains journaux peuvent être spécifiques à une distribution Gnu Linux (distribution), d'autres n'enregistrent que les évènement concernant l'utilisation de certaines commandes (command), d'autre enfin sont propres à des services (daemon) ou à des sous systèmes du noyau (facility), comme par exemple l'authentification et le contrôle des permissions (authentication), ou les activités d'un utilisateur (user). Des fichiers journaux peuvent être créés par des applications (software) ou par l'administrateur système (root).
La commande “logger” permet d'envoyer un message au service “syslogd” afin qu'il soit automatiquement enregistré dans le fichier système “/var/log/messages”.
La commande “dmesg” permet d'afficher et de modifier la mémoire tampon circulaire du noyau (kernel ring buffer).
Les services © Patrick Hautrive !;~) 2010
81
Les journaux systèmes
Journal
Specification
/var/log/messages
/var/log/boot.log
/var/log/boot.msg
/var/log/dmesg
/var/log/wtmp
/var/log/secure
/var/log/loginlog
/var/log/lastlog
/var/log/btmp
/var/log/sulog
/var/log/sudo.log
/var/log/maillog
/var/run/utmp
/var/log/installer/messages
/var/log/installer/hardware­summary
/var/log/installer/partman
/var/log/installer/status
/var/log/installer/syslog
/var/log/base­config.log.1
/tmp/install.log
/var/log/auth.log
/var/log/daemon.log
/var/log/debug
/var/log/kern.log
/var/log/lpr
/var/log/mail.log
/var/log/news/news.notice
/var/log/syslog
/var/log/userlog
/var/log/Xorg.0.log
System Journal
Red Hat
SuSE
Kernel Ring Buffer
#last
#login
#login
#lastlog
#lastb
#su
#sudo
#mail
#who
Debian Installer
Debian Hardware
Debian Partitions
Debian Packages List
Debian First Boot
Debian Base Configuration
Red Hat Installer
Authentication Messages
Services Messages
Kernel Debuging Informations
Kernel Messages
Line Printer Message
Mail Server Postfix Messages
News server Message
System Logging Messages
User Messages
Graphical Window Server
Les services © Patrick Hautrive !;~) 2010
82
La syntaxe du fichier /etc/syslog.conf
Le fichier /etc/syslog.conf permet de configurer le comportement du service syslogd. La commande “man syslog.conf” donne des exemples d'utilisation.
Le fichier de configuration accepte les caractères joker (“*”) pour remplacer une quelconque occurrence. Les lignes commençants par un dièse (“#”) sont des commentaires et les lignes se terminant par un antislash (“\””) continues sur la ligne suivante pour permettre une indentation qui facilite la lecture (échappement de la fin de ligne).
Chaque ligne (rule) est constituée de deux champs séparés par un espace (space) ou une tabulation (tab). Le premier champ stipule le service (facility) et le degré d'alerte (priority), tandis que le deuxième champ renseigne sur la conduite à tenir (action). Le service est associé à son degré d'alerte par un point (“.”).
Plusieurs services peuvent être réunis sur la même ligne par une virgule (“,”) et partager le même niveau d'alerte. Quand un degré d'alerte est spécifié, alors tous les messages correspondants à ce degré, et tous les messages correspondants à un degré d'alerte supérieur seront pris en compte. En indiquant un degré d'alerte, c'est donc un seuil qui est indiqué. L'opérateur égal (“=”) permet d'indiquer un seul et unique niveau de priorité. L'opérateur de négation (“!”) permet de définir un ensemble de priorité et de ne sélectionner que son complémentaire.
L'expression “none” indique aucune priorité et permet d'exclure un service. Plusieurs services associés chacun à leur degré d'alerte peuvent être cumulés sur la même ligne par un point virgule (“;”) afin de leur attribuer la même action. L'accumulation séquentielle sur une même ligne du même service avec des niveaux d'alerte différents permet de limiter les écritures et de constituer des filtres ou des plages, en commençant par un ensemble général (“*”), puis en affinant par des exclusions (“none”) ou par des négations (“!”). La lecture des critères de chaque ligne est linéaire pour le démon “syslogd”, aussi, les dernières conditions prennent le dessus (overwrite) sur les précédentes.
Le deuxième champ spécifie l'action à tenir. L'action sera effectuée pour tous les messages correspondants aux critères de la ligne. L'action peut consister à envoyer le message aux utilisateurs connectés (user), à enregistrer le message dans le fichier journal indiqué avec son chemin absolu depuis la racine de l'arborescence (/var/log/file), ou à envoyer le message via le réseau à un autre démon “syslogd” situé à distance sur une autre station (remote).
L'opérateur moins (“­”) devant un nom de fichier permet de ne pas synchroniser immédiatement les écritures dans le fichier journal. Ainsi, les écritures dans les journaux seront réparties dans le temps en fonction de l'activité du processeur. L'opérateur pipe (“|”) devant un nom de fichier de périphérique (“/dev/console”) permet de rediriger le message dans un tunnel vers un fichier fifo qui aura été créé avec la commande “mkfifo”. L'opérateur arrowbase (“@”) devant le nom d'hôte d'une machine Les services © Patrick Hautrive !;~) 2010
83
permet de transmettre les messages à un autre serveur syslogd, et ainsi de centraliser sur une seule machine les messages de plusieurs machines.
Le fichier de configuration du service syslogd avec /etc/syslog.conf (/usr/include/sys/syslog.h)
Facility
auth
authpriv
cron
daemon
ftp
kern
lpr
mail (tcp wrapper)
mark (internal)
news
security (depreciated use auth)
syslog
user
uucp
local0
local7
*
#
Priority
emerg (panic)
alert
crit
err (error)
warning (warn)
notice
info
debug
none
=debug
!crit
*
0
1
2
3
4
5
6
7
­
Destination
Emergency
Alert
Critical
Error
Warning
Notice
Informational
Debug
Les services © Patrick Hautrive !;~) 2010
84
root
/var/log/messages
­/var/log/syslog
|/dev/console
@machine
root,admin
*
Un exemple de /etc/syslog.conf
Un exemple de /etc/syslog.conf
auth,authpriv.*
/var/log/auth.log
*.*;auth,authpriv.none
­/var/log/syslog
#cron.*
/var/log/cron.log
daemon.*
­/var/log/daemon.log
kern.*
­/var/log/kern.log
lpr.*
­/var/log/lpr.log
mail.*
­/var/log/mail.log
user.*
­/var/log/user.log
uucp.*
/var/log/uucp.log
mail.info
­/var/log/mail.info
mail.warn
­/var/log/mail.warn
mail.err
/var/log/mail.err
news.*
/var/log/news/news
*.=debug;\
auth,authpriv.none;\
news.none;mail.none\
­/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none
­/var/log/messages
*.emerg
*
#Please adjust or split the list below
#daemon,mail.*;\
#
news.=crit;news.=err;news.=notice;\
#
*.=debug;*.=info;\
#
*.=notice;*.=warn
/dev/tty8
#The named pipe with the `xconsole' utility
#$ xconsole ­file /dev/xconsole [...]
#daemon.*;mail.*;\
#
news.crit;news.err;news.notice;\
#
*.=debug;*.=info;\
#
*.=notice;*.=warn
|/dev/xconsole
La configuration de syslogd
La configuration de syslogd
Commands
syslogd
klogd
syslogd­listfiles
logrotate
savelog
metalog
swatch
dmesg
logger
mkfifo
Files
man syslogd
man sysklogd
man dmesg
man syslog.conf
man syslog­facility
man savelog
/etc/syslog.conf
/proc/kmsg
/usr/include/syslog.h
/usr/include/sys/syslog.h
/var/run/syslogd.pid
/var/log/messages
/etc/sysconfig/syslog
Les services © Patrick Hautrive !;~) 2010
85
/dev/syslog
/dev/log
/dev/error
Un exemple d'archivage
Un exemple d'archivage local des journaux systèmes
vi /etc/log.cron
mv /var/log/messages /var/log/messages­old ; cp /dev/null /var/log/messages
export DATE=”­­­­­`date +”%m%d%y”`­­­­­”
mv /var/log/messages­old /var/log/message.$DATE ; gzip /var/log/messages.$DATE
chmod u+x /etc/log.cron
crontab ­e
Les messages d'erreurs
Les messages d'erreurs (insult) sont des messages qui sont adressés à l'utilisateur en réponse à une commande inappropriée. Les messages d'erreurs sont généralement en anglais, mais, comme avec les pages man, il arrive qu'ils se présentent dans la langue choisie pour le système.
Les services © Patrick Hautrive !;~) 2010
86
Les messages d'erreurs
Messages
too many links (<1000)
RE Error
read only file system
permission denied
no such process
write­protected regular file
no such file or directory
no process can be found
nor a directory
arg list too long
broken pipe
usage
cannot access
cross device link
different file system
device or ressource busy
I/O error
file exist
login incorrect
file table overflow
file too large
illegal option
insufficient argument
missing destination file
is a directory
Signification and Exemple
Il ne peut avoir plus de mille sous répertoires
Expression régulière invalide #grep '[x' file touch /root/file
kill 50000
rm ­i /root/*
cp file /save
cd ~/unknow
chmod 444 file
ln file /mnt/usbkey
umount /mnt/cdrom
ls ­j
cp file
Les exemples de syslogd
cat /dev/null /var/log/syslog
kill ­HUP syslogd ; kill ­HUP `cat /etc/syslog.pid`
tail ­f ­s2 /var/log/messages ; sudo /etc/init.d/sysklogd restart
logger "I am `whoami` and we are the `date`"
grep named /var/log/messages | tail ­3 ; killall ­HUP syslogd
chmod 744 /var/log/* ; syslogd ­ng package ; metalog package
Les services © Patrick Hautrive !;~) 2010
87
STOP
L'arrêt du système
La commande “shutdown” arrête le système proprement, c'est­à­dire en prévenant les utilisateurs (user), en envoyant un signal de terminaison à tous les processus (process), et en bloquant la procédure d'authentification (login). Avant un arrêt du système, il est préférable de forcer la synchronisation des écritures (sync), puis démonter tous les systèmes de fichiers qui ne figurent pas dans le fichier “/etc/fstab”. Un arrêt d'urgence peut être provoqué par l'arrêt de l'alimentation.
L'arrêt du système
Commandes
shutdown
halt
reboot
init
telinit
sync
umount
kill
xkill
wall
Control Sequences
man shutdown
exit
quit
logout
SIGTERM
SIGKILL
SIGPWR
Ctr+Alt+Z (suspension)
Ctr+Alt+C (interruption)
Ctr+Alt+D (terminaison)
Ctr+Alt+Backspace (xserver)
Ctr+Alt+F1 (virtual console)
Ctr+Alt+F7 (interface graphique)
Ctr+Alt+Del (system shutdown)
Files
/etc/inittab
/etc/shutdown.allow
/etc/shutdown.deny
/etc/powerstatus
apcupd
apmd
L'alimentation électrique
UPS (Uninterruptible Power Supply) est une alimentation d'urgence sur batterie avec éventuellement un ondulateur qui régule l'intensité du courant électrique. APM (Advanced Power Management) est un système qui régule la batterie d'un ordinateur portable afin d'économiser de l'énergie quand il n'est pas utilisé. L'arrêt d'urgence provoque l'envoi d'un signal SIGPWR au processus init. Ensuite, selon la configuration (“/etc/inittab” et “/etc/powerstatus”), le système réagit (FAIL=powerfail+powerwait, OK=powerokwait et LOW=powerfailnow).
Le changement de niveau d'exécution
Le changement du niveau d'exécution (runlevel) provoque l'envoi du signal SIGTERM à tous les processus, puis après un délais de cinq secondes, l'envoi du signal SIGKILL au processus init.
Les exemples de stop
telinit ­t 10 6 ; ls ­l /etc/rc.d/rc0.d/K* ; /sbin/shutdown ­r now
/sbin/shutdown ­r +10 “Shutdown in ten minutes” ; /sbin/shutdown ­r 14:30 “Shutdown at 2h30pm”
/sbin/shutdown ­c +5 ; /sbin/shutdown ­h now ; /sbin/shutdown ­g 120
Les services © Patrick Hautrive !;~) 2010
88
USER
Les informations de compte
Les informations de compte constituent l'identité des utilisateurs. Les principales informations de compte sont le mot de passe (password) qui doit être changé régulièrement, et le nom de connexion (login) qui lui reste constant. Les informations de compte sont généralement conservées localement dans les fichiers des mots de passe “/etc/passwd”, “/etc/shadow”, et les fichiers des groupes “/etc/group” et “/etc/gshadow”.
Le contrôle de l'identité (authentication) s'effectue une seule fois lors de la connexion, tandis que le contrôle des droits (permission) s'effectue à chaque accès à un fichier. C'est la procédure d'authentification qui permet de vérifier la concordance entre le nom du compte et le mot de passe. Cette phase d'authentification est importante parce qu'elle conditionne l'accès aux ressources du système. Les commandes “su” (switch user) et “sudo” (“/etc/sudoers”) permettent de changer d'identité en cours de connexion. L'authentification peut être gérée par d'autres systèmes de contrôle des identités (PAM). La centralisation des informations de compte dans des bases de données représente également d'autres types de gestion des informations de compte (NIS, Kerberos, Ldap, Acl).
La commande «uuidgen» permet de générer un nombre unique pour identifier un seul utilisateur.
La collecte d'information
La collecte d'information sur les personnes est une pratique croissante sur internet parce qu'elle permet de ficher les gens sur une grande échelle, et de cibler des propositions commerciales ou malhonnêtes. La collecte d'information peut être volontaire et anodine, dans le cadre d'un simple formulaire d'enregistrement proposé à l'entrée d'un site par exemple (registering). Mais, elle peut être également malicieuse et illicite, soit par l'intermédiaire de programmes de divertissement proposés gratuitement sur internet (spyware), soit en obligeant l'internaute à accepter l'enregistrement d'un fichier de suivie des connexions (cookies), soit en enregistrant les noms des pages des sites visités (history). Dans les deux cas, c'est une pratique qui peut très rapidement dériver, et les bases de données peuvent être facilement revendues et détournées.
C'est un risque dont il faut tenir compte, car la collecte d'information à l'insu des personnes (fishing) constitue une atteinte à la vie privée, et va à l'encontre du respect de la dignité humaine. Les tentatives d'intrusion commencent presque toujours pas une étude du profil (profiling) de la cible, et une recherche de renseignements (social engineering), susceptibles d'être utilisés contre la volonté et contre les intérêts des personnes. Les informations collectées peuvent être utilisées longtemps après leur collecte. Les messages envoyés sur des forums sont référencés (referencing) par les moteurs de recherche et se révèlent être des traces rémanentes non authentifiées qui peuvent desservir leur auteur et être sortis de leur contexte.
Les services © Patrick Hautrive !;~) 2010
89
Les comptes utilisateurs
Le compte le plus important est celui de l'administrateur (root) ou super utilisateur (super user) qui doit être réservé pour les opérations d'administration du système. La création des comptes et la gestion des utilisateurs est du domaine de compétence de l'administrateur système. L'on dit qu'il faut posséder les informations d'un compte valide (account), ou s'enregistrer sur un système pour pouvoir s'y connecter. Toutefois, la plupart des systèmes et des services à distance disposent d'un compte utilisateur pour les invités (guest) ou pour une connexion anonyme (anonymous).
Le système utilise certains comptes spécialisés dans certaines tâches (system account) et dont le nom est réservé. Les services ou les serveurs sont généralement lancés et administrés par un compte de services (daemon account) qui ne correspond à aucun utilisateur, en chair et en os, mais à un utilisateur conventionnel qui permet de gérer précisément les permissions sous lesquelles sont exécutées les opérations de service. Les comptes systèmes n'ont généralement pas besoin de shell qui est dés lors désactivé (“/bin/false”). Le champ Gecos est un champ libre et optionnel qui permet de décrire l'activité du service ou de fournir des renseignements sur un utilisateur.
Par convention, les numéros d'identifiant des comptes ou UID (User Identification) et les numéros d'identifiant des groupes ou GID (Group Identification) sont attribués pour les utilisateurs standards à partir du numéro 500 ou 1000.
Les types de compte
Account
Administrator
System
Service
Users
Others
Login
UID
root wheel admin
0
sys syslog klog man sync bin daemon hal gdm
1 < uid < 499
lp mail news uucp proxy www­data backup list irc gnats 500 < uid < 999
postfix messagebus apche cupsys fetchmail saned 1000 < uid < 10 000
nobody guest anonymous invite
Le masque des fichiers
Le masque de création des fichiers permet d'attribuer les mêmes permissions à tous les fichiers nouvellement créé par un utilisateur. Le masque de création des fichiers peut s'exprimer en octal ou dans une forme symbolique. La commande “umask” est une commande interne du shell Bash. Par exemple, un masque égal à 002 permet de créer des fichiers avec les permissions 775 (777­002=755).
Les services © Patrick Hautrive !;~) 2010
90
Les limites des utilisateurs
Des limites peuvent être imposées aux shells des utilisateurs afin de prévenir une utilisation abusive des ressources du système. La commande “ulimit” est une commande interne au shell Bash (man bash). Trois niveaux de limites peuvent être fixés pour les shells des utilisateurs, les limites douces avec l'option “S”, les limites dures avec l'option “H” ou aucune limite (unlimited). Les limites douces (soft) peuvent être dépassées jusqu'à la limite dure. Les limites douces permettent de prévenir l'utilisateur quand celles­ci sont atteintes, et d'encourager l'utilisateur à revenir en dessous de la limite dépassée. Les limites dures (hard) sont des limites infranchissables et surveillées par le shell qui empêchent et interrompent tous processus qui pourraient les dépasser.
Les quotas imposent des contraintes d'utilisation (inode, blocks) du disque, et constituent une autre forme de limites pour les utilisateurs.
La limitation des ressources ou les options de la commande interne “ulimit” (man bash)
c
La taille maximale des fichiers core (core size)
d
La taille maximale de la mémoire vive réservée pour un processus (data segment)
f
La taille maximale des fichiers qui peuvent être créés par le shell (file size)
l
La taille maximale de la mémoire vive qui peut être verrouillée (locked)
m
La taille maximale de la mémoire vive d'un processus RSS (Resident Set Size)
n
Le nombre maximum de fichiers descripteurs ouverts en même temps (file descriptor)
p
La taille maximale par block de 512 Octets allouée aux tunnels de redirection (pipe)
s
La taille maximale de la pile du shell (stack)
t
Le nombre maximum de temps d'utilisation du processeur exprimé en secondes (cpu time)
u
Le nombre maximum de processus pour un seul utilisateur (user process)
v
La taille maximale de mémoire virtuelle que peut utiliser le shell (virtual memory)
Un exemple de création de compte
La création d'un compte peut être automatique avec les commandes «adduser» ou “useradd” ou manuelle.
Les services © Patrick Hautrive !;~) 2010
91
Un exemple de création de compte
useradd ­u 777 ­s /bin/bash ­m ­d /home/indi ­g INDI ­G PEOPLE ­c “FSF & FFS” ­p “secret” indi
mkdir /home/indi
useradd indi
cp /etc/skel* /home/indi
passwd indi
mkdir /var/spool/mail/indi
chown ­R indi /home/indi/.[A­z]*
find / ­user indi ; find / ­uid 508
su – indi
id ; pwd ; ls ­la
La configuration des utilisateurs
La configuration des utilisateurs
Commands
users
id
w
who
rwho
whois
whoami
finger
wall
talk
write
username
logname
chfn
chage
chsh
su
sudo
Files
mkpasswd
pwgen
passwd
chpasswd
uuidgen
pwck
pwconv
pwunconv
vipw
faillog
unix_chkpw
update­passwd
alias
checkalias
newaliases
listalias
umask
ulimit
smbpasswd
useradd
adduser
userdel
deluser
usermod
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/adduser.conf
/etc/deluser.conf
/etc/securety/*
/etc/shells
/etc/skel
/etc/login.defs
/etc/default/useradd
/var/run/utmp
/etc/profile (login)
/etc/bash.bashrc (shell)
~/.profile
~/.bashrc
~/.bash_profile (login)
~/.bash_history
~/.project
~/.plan
~/.signature
~/.Xauthority
Les exemples des utilisateurs
useradd ­D $USER ; usermod ­G JOIE, JOY $USER ; userdel ­R $USER useradd ­u 777 ­s /bin/bash ­m ­d /home/indi ­g INDI ­G PEOPLE ­c “FSF & FFS” ­p “secret” indi
usermod ­l individual indi ; usermod ­d /home individual ­m indi
usermod ­e 2010­10­10 individual
passwd individual ; cat /etc/passwd | grep indi
chfn individual ; finger individual ; finger chomsky@mit­edu
useradd ­u 0 ­o ­d /root admin
write $USER ttyp0
message
Ctrl+D
useradd ­u 1001 indi
(Création d'un compte avec un numéro UID)
Les services © Patrick Hautrive !;~) 2010
92
useradd ­g 2001 indi
useradd ­G HASH indi
useradd ­C “Optionel et Libre” indi
usermod ­g 2002 indi
usermod ­c “Optionel et Libre” indi
userdel ­r indi
ulimit ­a ; umask ­S
vi ~/.bashrc
if [­n “$PS1”] ; then fortune
fi
(Groupe Principal)
(Groupe Secondaire)
(Champ Gecos)
(Groupe Principal)
(Champ Gecos)
(Suppression du compte et de son répertoire)
Les services © Patrick Hautrive !;~) 2010
93
GROUP
L'organisation des groupes
Par convention, les noms des groupes sont écrits en majuscules. Le groupe principal d'un utilisateur est par défaut celui qui lui a été attribué lors de la création du compte, mais peut­être changé avec l'option “g” des commandes “useradd” et “usermod”. Un groupe (gid) peut avoir plusieurs noms avec l'option “o” de la commande “groupadd”.
Le groupe principal contient les groupes secondaires qui contiennent des membres. La vérification des droits s'effectue séquentiellement jusqu'à ce qu'une permission permettent l'action. Les règles de composition des groupes peuvent suivre la théorie des sous ensembles de Boole. Les groupes regroupent des utilisateurs. Un fichier appartient à un groupe propriétaire, et les utilisateurs qui sont membres de ce groupe, directement ou indirectement, partagent les mêmes droits sur le fichier. Les utilisateurs peuvent être rassemblés selon la fonction, l'utilisation d'une ressource, la position hiérarchique, la participation à un projet, la localisation géographique.
La configuration des groupes
La configuration des groupes
Commands
group
groups
newgrp
chgrp
sg
groupadd (addgroup)
groupdel (delgroup)
gpasswd
groupmod
vigr
Files
useradd ­g
usermod ­g
grpck
grpconv
grpunconv
/etc/group
/etc/gshadow
/etc/adduser.conf
Option SHADOWGRP
Les exemples des groupes
gpasswd ­A admin ­M membre, member GROUPE
(Définit un administrateur et des membres)
gpasswd ­a indi GROUPE
(Intègre un membre)
gpasswd GROUPE
(Active un mot de passe)
gpasswd ­r GROUPE
(Suppression du mot de passe)
gpasswd ­R GROUPE
(Désactive l'accès avec newgrp)
find / ­gid 512 ­exec chgrp NEWGROUP {} \;
find / ­group 512
groupmod ­n KROUPE GROUPE ; groupmod ­g 1234 GROUPE
groupadd ­g 666 DOUBLE ; groupadd ­g 666 ­o DIABOLO
groupdel DOUBLE ; groupdel DIABOLO
Les services © Patrick Hautrive !;~) 2010
94
QUOTA
Les restrictions quantitatives
Les quotas représentent pour les utilisateurs (users) et les groupes (groups) des restrictions quantitatives sur l'usage du disque. Les quotas concernent, soit le nombre maximal de fichiers que peut créer un utilisateur (inodes), soit la taille maximale dans l'espace de stockage que peut occuper les fichiers d'un utilisateur (blocks). Les quotas s'appliquent sur l'ensemble d'une partition (partition) ou d'un système de fichier monté (mounted partition). Les quotas peuvent être aussi utiles pour la gestion d'une partition dédié à un serveur (server).
La fonctionnalité des quotas doit être intégrée au noyau lors de sa compilation (kernel). La gestion des quotas peut être automatisée (crontab) et simplifiée avec les options de montage (usrquota et grpquota) dans le fichier “/etc/fstab”. Des profils standards peuvent être utilisés comme prototypes afin de pouvoir calquer une configuration chez un autre utilisateur.
Les types de limites
Les limites imposées peuvent être des limites douces (soft) ou des limites dures (hard). Les limites peuvent s'appliquer soit au niveau de la taille des fichiers (blocks), soit au niveau du nombre d'inode (inode). Les limites peuvent être appliquées à un ou plusieurs utilisateurs (user) ou à un ou plusieurs groupes d'utilisateurs (group).
Les limites douces (soft) permettent de prévenir l'utilisateur qu'un seuil d'alerte est dépassé (alert), et de l'encourager à restreindre sont occupation du disque. L'utilisateur dispose alors d'un délai (probation) de courtoisie pour remédier à la situation, par exemple en supprimant ses fichiers inutiles. L'utilisateur qui a dépassé sa limite douce, doit dans le délai qui lui est imparti, redescendre en dessous de cette limite douce. Si l'utilisateur ou le groupe ne redescendent pas en dessous de sa limite douce, alors, il ou ils ne pourront plus, ni écrire, ni créer de nouveaux fichiers.
Les limites dures (hard) sont des limites infranchissables, et le système empêchera la création ou l'enregistrement d'un fichier. Dans le cas des groupes, quand la limite dure est franchie, ce sont alors tous les membres du groupe (group members), qui ne peuvent plus, ni écrire, ni créer de fichier. La marge de manœuvre temporaire (interval) se situe toujours entre la limite inférieure (soft) et la limite supérieure (hard).
L'installation de quotas
La mise en place des quotas s'effectue par l'installation du package « quota », par les options de montage des partitions dans le fichier « /etc/fstab », et en initialisant les fichiers de gestion des quotas à Les services © Patrick Hautrive !;~) 2010
95
la racine de la partition concernée. Les fichiers de gestion des quotas sont par exemple les fichiers « /home/quota.user » et « /home/quota.group ». L'initialisation des fichiers de gestion des quotas peut s'effectuer avec la commande « quotacheck –avug ». Enfin, la partition sur laquelle est configurée les quotas, doit être remontée (remount) pour tenir compte de la nouvelle configuration. La commande « quota » permet d'afficher les quotas des utilisateurs et des groupes. La commande « edquota » permet de gérer les limites. Par défaut, les quotas ne sont pas actif, même s'ils ont été configurés. Les commandes « quotaon » et « quotaoff » permettent respectivement des les activer ou de les désactiver. La commande « repquota » permet de générer un rapport sur l'utilisation des quotas d'une partition.
L'installation des quotas (man quota) (man edquota)
su
rpm ­i quota
vim /etc/fstab
/dev/hda3
/home ext3
touch /home/quota.user
touch /home/quota.group
quotacheck –avug
mount –o remount /home
quota ­u user
quota ­g GROUP
edquota ­u user
edquota ­g GROUP
edquota ­t
quotaon ­a
quotaon ­u /dev/hda3
quotaoff ­g /dev/hda3
repquota ­u /dev/hda3
repquota ­g /dev/hda3
repquota ­a
defaults,usrquota,grpquota
0
0
La configuration des quotas
La configuration des quotas
Commands
quota
edquota
quotaon
quotaoff
Files
repquota
smbcquotas
quotacheck man quota
convertquota man quotactl
warmquota
quota.user
quota.group
aquota.user
aquota.group
/etc/fstab
quota
/usr/include/sys/quota.h quotatool
webmin­quota
Les exemple s de quotas
Les services © Patrick Hautrive !;~) 2010
96
Packages
quotaon ­a
quota ­v
quota ­v $USER
quota ­g GROUP
df /home/$USER
edquota ­t
edquota ­p profil $USER
edquota ­g GROUP
quotaon /home
quotaoff /home
edquota – $USER ­f /dev/hdb1
edquota ­g GROUP ­f /dev/hdb1
repquota ­a
repquota ­ug /home
quotacheck ­cguv ­f /dev/hdb1
grep ­i quota /usr/src/linux/.config
CONFIG_QUOTA=y
CONFIG_XFS_QUOTA=y
grep quota /etc/fstab
/home
/de/hda5
xfs
usrquota,grpquota,noauto
Les services © Patrick Hautrive !;~) 2010
97
0
0
CRONTAB
L'automatisation des tâches
Le service crontab a été développé par Paul Vixie. L'automatisation des tâches dans les fichiers crontab permet de programmer l'exécution répétitive et régulière de tâches standardisées. La commande “crontab” et le serveur “crond” permettent de gérer l'ordonnancement de travaux détachés (nohup) du terminal (tty). Le serveur “crond” est un service qui est lancé lors de la procédure d'initialisation du système (init), et les messages systèmes (syslogd) sont enregistrés par le service de journalisation (facility).
Les utilisateurs peuvent gérer et planifier eux même leur propre automatisation des tâches. Les éventuels messages d'erreurs (stderr) sont alors envoyées par mail à l'utilisateur. Les commandes enregistrées dans un fichier crontab sont exécutées depuis le répertoire personnel de l'utilisateur qui les a enregistrées ($HOME). Les fichiers crontab des utilisateurs qui sont générés avec la commande «crontab ­e» sont enregistrés dans le répertoire «/var/spool/cron/tabs/$USER». Lors de la création d'un fichier crontab par un utilisateur, le serveur crond contrôle les éventuelles restrictions qui figurent dans les fichiers «/etc/cron.deny» et «/etc/cron.allow».
Le serveur crond recherche les tâches à effectuer toutes les minutes, et dans l'ordre examine le fichier de configuration «/etc/crontab» et les répertoires «/etc/cron.d/*» et «/var/spool/cron/*».
L'heure du système
Les tâches sont exécutées en fonction de l'heure du système (system time) sur lequel le daemon crontd fonctionne.
Les systèmes qui fonctionnent avec des multiples utilisateurs qui travaillent dans des zones géographiques différentes, ou qui prennent en compte les modifications de l'horloge en fonction des périodes d'ensoleillement de l'année (l'heure d'été) ou DST (Daylight Saving Time) sont susceptibles de rencontrer des problèmes, puisque la linéarité temporelle n'est plus respectée. Toutefois, des horaires spécifiques peuvent être configurés avec la variable TZ (time zone) de chaque utilisateur.
L'enregistrement d'une tâche
Il existe quatre façons différentes d'enregistrer une tâche pour le serveur crond.
L'enregistrement d'une tâche dans le fichier «/etc/crontab» est réservé à l'administrateur (root). L'administrateur qui souhaite spécifier un utilisateur particulier, enregistre les tâches avec la commande «crontab – user ­e».
Les services © Patrick Hautrive !;~) 2010
98
Les utilisateurs enregistrent leurs tâches avec la commande «crontab ­e».
L'enregistrement d'une taĉhe peut également être répertorié dans le répertoitre «/etc/cron.d/*». Les fichiers qui s'y trouvent seront lus et exécutés par le serveur crond. Ces fichiers sont écrits avec la syntaxe d'un fichier crontab.
L'enregistrement d'une tâche périodique peut enfin être placé dans les répertoires spécifiques. Dans ces répertoires, les fichiers sont des scripts shell, et ne sont pas écrits avec la syntaxe crontab:
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*
Des tâches peuvent être également lancées pendant l'initialisation du système (@reboot).
La commande “crontab ­e” permet d'enregistrer (edit) et de vérifier la syntaxe d'une ligne.
Les scripts périodiques
Les scripts périodiques sont des scripts shells exécutables, et sont placés dans les répertoires spéciaux, comme /etc/cron.daily/*, /etc/cron.hourly/*, /etc/cron.monthly/*, /etc/cron.weekly/*.
C'est le script «/usr/bin/run­parts» ou le script «/usr/lib/cron/run­crons» qui lance les scripts qui figurent dans ces répertoires périodiques.
Les crontab des utilisateurs
Les fichiers crontab des utilisateurs, autres que l'administrateur, sont sauvegardés dans le fichier «/var/spool/cron/tabs/$USER», et ne comporte pas le paramètre correspondant à l'utilisateur (user) puisque ce sont des fichiers particuliers, dont les tâches ne concerne que l'utilisateur qui les a créées. Ces tâches particulières seront exécutées avec les permissions de l'utilisateur.
Le format des enregistrements
Dans un fichier crontab, chaque ligne représente une tâche différente. Le dernier paramètre représente toujours la commande a exécutée. Pour les tâches enregistrées par l'administrateur (root) dans le fichier «/etc/crontab», l'avant dernier paramètre représente le compte (account) avec lequel l'administrateur souhaite lancer la commande. Pour les fichiers crontab des utilisateurs (users), générés avec la commande «crontab ­e», le paramètre correspondant au compte de l'utilisateur n'est pas mentionné.
Chaque enregistrement dans le fichier «/etc/crontab» est composé d'au maximum huit paramètres, lesquels sont séparés par un espace (space). Le fichier «/etc/crontab» accepte huit paramètres Les services © Patrick Hautrive !;~) 2010
99
possibles (minute, hour, day, month, weakday, year, user, command).
Les cinq ou six premiers paramètres correspondent à la périodicité (minute, hour, day, month, weakday, year). Le sixième paramètre qui correspond à l'année est un paramètre optionnel (optional). Le septième paramètre correspond à l'utilisateur (user) choisit par l'administrateur et ne figure que dans le fichier «/etc/crontab». Le huitième paramètre correspond à la ligne de commande qui sera exécutée (command line).
L'avant dernier paramètre représente toujours l'utilisateur, et le dernier paramètre représente toujours la commande (command), ou le script exécutable (executable script). Pour décrire la commande à exécuter, il est toujours préférable d'utiliser leurs chemins absolus (absolut path) dans l'arborescence du système de fichier racine (root file system), ou de s'assurer que les autres systèmes de fichiers sont bien montés (mount).
Le fichier /etc/crontab (man 5 crontab)
Les variables d'environnement de crontab pour l'administrateur (root)
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
Les champs du fichier /etc/crontab Periodicity
Account
Command
Minute
Hour
Day
Month
Day of the week
Year
User
cmd
(00­59)
(0­23)
(1­31)
(1­12)
(jan­dec)
(0­7)
(sun­sun)
1970
root
script
Les jokers de crontab
La valeur d'un paramètre peut être remplacée par une expression régulière (regex), une succession de valeurs séparées par une virgule («x,y»), un intervalle de valeur («x­y»), une période de rotation (*/5) ou l'emploi d'un joker (“*”, «?», «#») ou des lettres L (Last day of the weak or of the month), W (nearrest weakday of the month).
Les jokers de périodicité de crontab (man 5 crontab)
Minute Hour
Day
(00­59) (0­23) (1­31)
* / , ­
* / , ­ * / , ­ ? (L W)
Month
Day of the week
Year
(1­12)
(jan­dec)
(0­7)
(sun­sun)
1970
* / , ­
* / , ­ ? to (L #)
2099
Les services © Patrick Hautrive !;~) 2010
100
Des exemples d'enregistrement crontab
Des exemples d'enregistrement d'une tâche dans /etc/crontab (man 5 crontab)
Minute Hour
0
0
0
0
0
*/10
0
*
0
1
1
1
1
1
*
1
*
0
Day
Month
Day of the week User
*
*
1
*
1,15
*
“1­15”
*
*/5
*
*
*
1
1,3,6,9,12
*
*
1
1
*
*
*
*
*
*
0
*
*
root
root
root
root
root
root
root
root
root
Command
Every morning at one o'clock
Every first day of the month
Every first and fithteen of the month
Every day from first to fithteen
Every five days
Every ten minutes
At one, every three months on sunday
Every minute, every hour, every day
Every happy new year
Les raccourcis de crontab
A la place de ces paramètres, il est possible d'employer un raccourci, commençant par le signe arrobase.
Les raccourcis de crontab (/etc/crontab) (man 5 crontab)
Shortcut
@hourly
@daily or @midnight
@weekly
@monthly
@yearly or @annually
@reboot
Equivalence
0 * * * * 0 0 * * * 0 0 * * 0 0 0 1 * * 0 0 1 1 * Init 6
Fonction
Once an hour
Once a day
Once a week
Once a month
Once a year
Once at reboot
Les services © Patrick Hautrive !;~) 2010
101
La configuration de crontab
La configuration de crontab (man crontab)
Commands
cron
crontab
kcron
anacron
batch
at
atq
atrm
runparts
runcon
Files
dh_installcron
man 1 crontab
man 5 crontab
man 1p crontab
man cron
man anacron
man anacrontab
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
/etc/sysconfig/cron
/etc/syslog.conf
/etc/anacrontab
/etc/cron.deny
/etc/cron.allow
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
/etc/at.deny
crond
/etc/at.allow
atd
/var/spool/at
/var/spool/anacron
/var/spool/cron/crontab/$USER
/var/spool/cron/tabs/$USER
/var/log/cron
/root/bin/cron.daily.local
/var/spool/cron/lastrun
/usr/bin/run­parts
/usr/lib/cron/run­crons
Les exemples de crontab
/etc/rc.d/init.d/cron restart
kill ­HUP crond
crontab ­u joe ­e
(editing)
crontab ­u joe ­l
(listing)
crontab ­r $USER
(remove)
crontab
(create)
crontab /etc/crontab
export VISUAL=vi ; setenv EDITOR vi
run­parts /home/scripts
vi todo.txt
1/5 * * * * echo “hello world”
chmod a+x todo.txt
crontab todo.txt
echo noone > /etc/cron.deny
touch /etc/cron.daily.local
anacron ­f
at ­l
at ­d
at 5:15pm dec 25
echo “hello world”
Ctrl+D
at 23:00 +3 hours
Les services © Patrick Hautrive !;~) 2010
102
Servers
at now +5 days
at now +1 day
at ­f
echo “hello world”
Ctrl+D
at ­f script now+2days
at 18:00
rm ­Rf /tmp/*
Ctrl+D
at teatime ; at now ; at noon ; at midnight
Les services © Patrick Hautrive !;~) 2010
103
MAKE
La construction d'exécutables
La compilation consiste en la construction d'exécutable. A partir des sources d'un programme (source code), le compilateur (compiler) transforme les instructions écrites dans un langage de programmation (langage) en des instructions écrites en langage machine (binary). Les programmes exécutables qui résultent de la compilation sont propres à une architecture processeur (architecture), et à un système d'exploitation (operating system).
Les packages sources
Les packages sources (source package) sont téléchargés depuis Internet, selon l'architecture processeur, et selon le système d'exploitation. Les packages sources contiennent le code du programme (source code), des scripts pour automatiser leur compilation (makefile, configure), et éventuellement une documentation (README, INSTALL).
Les packages sources sont téléchargeables sous la forme d'une archive compressée (tarball) avec l'extension « .tar.gz » ou « .tarbz2 ». Les commandes « tar ­xzvf package.tar.gz» et « tar ­xjvf package.tar.gz» permettent de décompresser les archives. Ensuite, les commandes « cd package », « ./configure », « make » et « make install » permettent de configurer, de compiler et d'installer le programme.
Les packages sources représente un format universel (universal format), puisqu'ils peuvent être compilés pour n'importe quelle plateforme architecturale, et pour n'importe quel système d'exploitation, Les packages sources requièrent d'être compilés avant d'être exploitables ou exécutables, au contraire des packages sous la forme de binaires (binaries), qui sont déjà compilés pour une architecture particulière et pour un système d'exploitation en particulier.
Les dépendances
Sur les sytèmes Gnu Linux, les sources d'un programme sont livrées sans les librairies dont il dépend, parce que chaque librairie constitue un package en soi (libraries), mais aussi parce cela limite le téléchargement répétitif de la même librairie (download), et cela réduit l'espace de stockage nécessaire (space disk). Toutefois l'avantage principal de la gestion séparée des librairies, est que cela simplifie les mises à jour (update), et que cela améliore la gestion des différentes versions (version).
Dans un programme binaire, au contraire, toutes les dépendances sont déjà présentes et compilées, et le programme est exploitable tout de suite. Par contre, quand une mise à jour est disponible c'est tout le programme avec ses dépendances qu'il faut télécharger à nouveau. Enfin, l'avantage de la séparation des dépendances, n'est pas si simple, puisque certains programmes exigent pour fonctionner certaines Les services © Patrick Hautrive !;~) 2010
104
librairies adaptées, ou certaines versions de librairies partagées, voire certaines anciennes versions (old version), puisque les packages n'évoluent pas toujours au même rythme (development rhythm).
Quoi qu'il en soit, il est possible de compiler les sources d'un programme avec à l'intérieur du programme les librairies dont il a besoin (static libraries). Alors, il n'y a plus de problèmes de dépendance, mais le binaire est d'une taille plus importante (size). Enfin, les gestionnaires de packages (package manager) gère automatiquement les dépendances, et s'occupent du téléchargement et de l'installation.
Les librairies partagées
La commande « ldd /path/program » permet de connaitre les librairies partagées par le programme. La variable LD_LIBRARY_PATH et le fichier compilé « /etc/ld.so.cache » contiennent les chemins par défaut vers les principales librairies. La commande « ldconfig » génère le fichier cache, et permet de charger dynamiquement les librairies en mémoire. Le fichier de configuration est « /etc/ld.so.conf », et la commande « ldconfig ­p » permet d'obtenir la liste des librairies patrtagées qui sont installées. En général, les librairies se trouvent dans les répertoires « /usr/lib » et « /lib ».
La compilation
La compilation des sources d'un programme (source) est une procédure qui laisse une plus grande marge de liberté, puisque de nombreuses options (options) permettent d'optimiser la compilation, et d'obtenir ainsi, un programme binaire plus adaptés à la machine sur laquelle il est destiné à tourner. Pendant la procédure de compilation, il est possible d'activer ou de désactiver certaines fonctionnalités d'un programme (functionalities), afin de l'adapter à ses besoins, tandis que les programmes qui sont pré compilés (binaries) proposent les fonctionnalités génériques du programme (standard).
Le processus de compilation requière que soit installés sur la machine, les outils de compilation (compiler tools), les entêtes (headers) et les librairies partagées (shared libraries) dont dépend le programme. Par exemple, un programme écrit en langage C a besoin de la librairie « libc.so » pour être compilé, et un programme qui utilise les redirections a besoin des entêtes standards (headers) des Entrées Sorties (« stdio.h »).
Un exemple de source
#include <stdio.h> /* Nécessite libc6­dev */
int main(int argc, char **argv)
{
printf(“Vive GNU/Linux \n”);
return 0;
}
Les services © Patrick Hautrive !;~) 2010
105
La compilation croisée
Il est possible de compiler les sources d'un programme pour une autre architecture et un autre système d'exploitation que ceux sur lequel est effectué la compilation (cross compiling).
Les Makefiles
Les Makefiles sont des scripts qui contiennent les instructions pour construire les exécutables. Les Makefiles peuvent servir à compiler les sources d'un programme ou à l'installation une application (package). Les Makefiles décrivent les étapes de la construction, avec des règles (rules), des cibles (target), la liste et la priorité des dépendances explicites et implicites de l'application (dependancies).
La construction d'un exécutable se produit en général en trois phases: la configuration qui permet de choisir certains paramètres, la compilation qui transforme les sources en code, et l'installation proprement dite qui consiste à copier les fichiers aux bons endroits.
Le script “configure”
L'exécution du script “configure” constitue la première phase de la construction d'un exécutable. Les scripts “configure” suivent en général les mêmes procédures qui sont basées sur le package Gnu Autoconf. Toutefois, les scripts “configure” sont écrits selon les désidérata du programmeur. Le script “configure” doit être exécutable (chmod), et il est exécuté en utilisant le chemin relatif au répertoire parent (“./configure”).
Dans un premier temps, le script “configure” analyse le système pour vérifier si tous les utilitaires nécessaires sont bien présents (makefile.in, configure.in), puis il construit ou adapte le fichier Makefile à partir du package Automake. Par défaut, les programmes s'installent dans le répertoire “/usr/local/bin”.
La configuration des Makefiles
La configuration des Makefiles
Commands
make
automake
autoconf
imake
qmake
Files
README
INSTALL
MAKEFILE
Les services © Patrick Hautrive !;~) 2010
106
Packages
Autoconf
Automake
Un exemple de construction
Un exemple de construction d'un exécutable
1. Download
L'archive peut être téléchargée sur un serveur FTP avec la commande “wget”
L'archive peut être constitués des sources d'un programme (tarball) sur un cdrom
L'archive peut être des dépendances (dependancy) ou des bibliothèques (library)
cd /tmp
ftp ftp://ftp­server.tld:/pub/linux/
wget ftp://ftp­server.tld:/pub/linux/archive.tar.gz
chmod 1777 /usr/src
mkdir /usr/src/archive
cp /tmp/archive.tar.gz /usr/src/archive
2. Decompression cd /usr/src/archive
tar zxvf archive.tar.gz
tar tzvf archive.tar.gz | more
tar tyvf archive.tar.bz2 | more
cat archive.tar.bz2 | bzip2 ­d | tar xvf ­
3. Documentation cd archive ; ls
less README ; less INSTALL ; less MAKEFILE
vi .config.h
less Makefile.in
less config­cache
4. Configuration ./configure –help
./configure –prefix=/usr –with­threads
cp config­cache config­cache­old
./configure
5. Compilation make
make all
6. Installation
su
make install
ldconfig
gcc ­v
ls /usr/local/archive
echo $PATH
7. Utilisation
man archive
info archive
archive –help
whereis archive ; ldd /path/archive
Les services © Patrick Hautrive !;~) 2010
107
GCC
Le compilateur gcc
Le compilateur GCC (Gnu C Compilator) est le compilateur en langage C pour Gnu. C'est­à­dire que c'est le programme qui transforme le code source en langage exécutable, directement utilisable par le système et le processeur.
Les langages de programmation
Les langages de programmation peuvent être classés en plusieurs catégories. L'on distingue habituellement les langages machines (assembler), les langages compilés (“C”), les langages interprétés comme les scripts shells (bash), les langages de description (html) et les langages orientés objets ou de quatrième génération (delphi). Les environnements de programmation intégrée sont des logiciels ou des plateformes qui permettent de programmer et de compiler avec plusieurs langages de programmation.
Les langages de programmation
Langages
Spécifications
Tools
Machine
Assembler
Compilé
Interprété
Descriptifs
Binaires
C, Fortran, Pascal
Bash, les Scripts Shell
HTML (Hyper Text Markup Language)
Emacs, Visual Studio
Orienté Objet
C++, Delphi
C++ Builder, Kdevelopp, Kylix
Les formats binaires
Les formats binaires ont évolués et l'on parle de compatibilité binaire (binary compatibility) quand le même binaire est directement exécutable dans différents environnements systèmes, et de compatibilité au niveau des sources (source compatibility) quand le même programme peut être compilé sans modifications pour plusieurs plateformes. Les programmes Gnu Linux sont compatibles au niveau des sources avec les systèmes BSD. Les bibliothèques (library) utilisent le format Unix™.
Les formats ELF et COFF sont les formats originaux des systèmes Unix™.
Les services © Patrick Hautrive !;~) 2010
108
Les phases de la compilation
Les phases de la compilation en langage C
Phase
Format
1. Le code source
2. Le pré­processeur
3. Le compilateur
4. L'assembleur
5. L'éditeur de lien
Bibliothèques dynamiques (table de saut)
Bibliothèques statiques (insertion de routines)
Texte
Headers
Code assembler
Binary
Executable
Extension
(“.c”)
(“.h”) (“.i”)
(“.o”)
(“.s”)
Name
PLC
CC1
ASS
Linker
(“.so”)
(“.a”)
Le langage C
Le langage C est le langage natif des systèmes Unix™ et de Gnu Linux. Le langage C utilise le format ELF et a été normalisé par l'organisme ANSI.
Les spécifications du langage C
Le format ELF
La norme ANSI C
Les fichiers code source (source) en langage C (“.c”)
Les fichiers entêtes (headers) sont des fonctions qui doivent être installées (“.h”)
Les fichiers objets (object) sont le résultat de la compilation (“.o”)
Un langage de programmation compilé (gcc)
Le prototypage des fonctions
La compilation des informations de débogage (gdb)
Le débogage pas à pas (step by steps)
L'optimisation de l'organisation entre les instructions et les données
Le commutateur Assembler
La représentation du code en ligne (inlining)
Les services © Patrick Hautrive !;~) 2010
109
Le premier programme C
vi hello.c
include <stdio.h>
int /* First program in C to print one single phrase*/
main ()
{
(void) printf (“Hello World \n”);
return 0 ;
}
La configuration de gcc
La configuration de GCC
Commands
gcc
g++
ranlib
ld.so
indent
litool
Files
readelf
Packages
Autoconf
glibc
Les exemples de gcc
gcc ­O ­g ­o prog prog.c
(deboggage)
gcc ­O ­g tutu toto.c titi.c
(optimisation)
gcc ­c toto.c
gcc­O ­o tutu toto.o titi.o
gcc ­c cube.c factor.c
(bibliothèques statiques)
ar 6 libperso.a cube.o factor.o
ranlib libperso.a
(génération de l'index)
vi libperso
(création d'un fichier entête personnalisé)
extern float cube (float);
extern float factor (int,int);
vi programme.c
#include “libperso.h”
cd ~/src
gcc ­I ../include ­L ../lib ­o programme programme.c ­c libperso.h
gcc ­c fpic cube.c factor.c
(bibliothèques statiques)
gcc ­c ­shared ­o libperso.so cube.o factor.o
ldd programme
(name + path + @virtual)
indent ­troff toto.c | groff ­m indent
cc ­static prog.c ­o prog.sta
(édition des liens statiques)
cc prog.c ­o prog.dyn
(édition des liens dynamiques)
Les services © Patrick Hautrive !;~) 2010
110
LIBRARY
Les bibliothèques
Les bibliothèques (library) sont des morceaux de programmes qui sont conçus pour s'utiliser avec d'autres programmes, une même bibliothèque pouvant servir à plusieurs programmes différents. Une bibliothèque peut être appelée par un ou plusieurs programmes en même temps. Les programmes peuvent être compilés en intégrant les bibliothèques, et l'on parle alors de bibliothèques statiques (static), ou bien en faisant seulement référence aux bibliothèques qu'il utilise, et l'on parle à ce moment de bibliothèques dynamiques (dynamic).
Le code des bibliothèques statiques est inséré dans le programme au moment de la compilation, et permet de construire des programmes autonomes (independent). Les bibliothèques dynamiques sont aussi appelées des bibliothèques partagées (shared libraries). La construction des programmes à l'aide de bibliothèques partagées est encouragée bien qu'elle provoque des problèmes de dépendances qu'il faut aussi résoudre (dependancy).
Les librairies dynamiques portent une extension «.so» (shared object), tandis que les librairies statiques portent une extension «.a» (assembly).
ftp://ftp/ibiblio.org/pub/linux/gcc/
Les bibliothèques Gnu Name
libc
libm
libncurses
libX11
cin, cout
Fonction
Library C standard
Library mathematical
Librairie d'émulation d'une fenêtre de console
Library X window
Libraries for C++
Les bibliothèques dynamiques
L'édition des liens (linking) est une étape de la construction d'un exécutable (gcc), et permet d'intégrer dans le programme compilé les références aux bibliothèques dont il a besoin pour fonctionner. Les bibliothèques dynamiques permettent de construire des binaires avec une taille moins importante (space). Les bibliothèques dynamiques permettent de ne télécharger, et de n'installer, qu'une seule fois le même code. Les bibliothèques dynamiques peuvent être partagées en mémoire vive (memory) et ainsi permettent de gagner de l'espace en mémoire de travail. L'éditeur de lien (ld) s'occupe de construire les liens qui font référence aux bibliothèques partagées à l'intérieur du binaire d'un Les services © Patrick Hautrive !;~) 2010
111
programme (library linker), et s'occupe également de charger en mémoire les bibliothèques partagées d'un programme en exécution (library loader).
Les numéros de version
Les versions des programmes et des bibliothèques doivent évoluées de concert afin de rester compatibles. Un même programme peut ne fonctionner qu'avec certaines versions de bibliothèques (version). Les noms des programmes et des bibliothèques portent un numéro majeur (major) et un numéro mineur (minor) qui permettent de savoir, s'ils correspondent, et s'ils sont compatibles. La recompilation des applications dont le numéro de version majeure change est parfois indispensable, alors qu'elle n'est pas toujours nécessaire quand seulement le numéro mineur change.
Par ailleurs, la version des routines de liaison (stubs) doivent correspondre à la version des bibliothèques partagées (shared). La compatibilité ascendante (ascendant compatibility) consiste pour une bibliothèque à rester compatible sur plusieurs générations de programmes. Pour ce faire, il faut naturellement conserver la même structure de données et les mêmes appels de fonction.
Le chargeur de librairies
Le chargeur de librairies (dynamic loader) est une librairie (ld.linux.so.2) dont le rôle est de trouver dans le système, et de charger en mémoire, les librairies partagées qui sont appelées par les programmes en exécution. Les chemins de recherche des bibliothèques partagées sont enregistrés dans les fichiers “/etc/ld.so.conf” et “/etc/ld.so.cache”. A l'intérieur du fichier “/etc/ld.so.conf” peut se trouver une directive «include» faisant référence à un autre fichier de configuration. La commande “ldconfig” permet de mettre à jours les changements et les fichiers de configuration.
L'existence de plusieurs chemins de recherche permet d'installer plusieurs versions différentes des mêmes bibliothèques. Ainsi, il est possible d'installer des programmes qui requièrent des versions différentes de la même bibliothèque. Les répertoires courants pour l'installation des bibliothèques sont “/usr/lib/*” et “/lib/*”. Il est possible de rajouter d'autres chemins de recherche avec la variable LD_LIBRARY_PATH. Un utilisateur peut très bien disposer dans son arborescence personnelle d'un répertoire pour ses bibliothèques (“~/lib/*”).
La commande “ldd” montre les bibliothèques partagées dont dépend le programme passé en paramètre. La librairie «ld.so» avait auparavant la responsabilité de charger les librairies dynamiques dans un ordre spécifique, mais c'est maintenant la commande « ldconfig » qui s'en charge.
La commande «man ld» explique le fonctionnement du chargeur de librairies (gnu linker).
Les services © Patrick Hautrive !;~) 2010
112
L'ordre de recherche des librairies dynamiques (ld.so) (ldconfig) (/etc/ld.so.conf)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
LD_LIBRARY_PATH
/etc/ld.so.cache
/lib
/usr/lib
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/lib/Xaw3d
/usr/i386­suse­linux/lib
/usr/local/lib
/opt/kde3/lib
include /etc/ld.so.conf.d/*.conf
La configuration des bibliothèques
La gestion la configuration des librairies s'effectue automatiquement pour une distribution standardisée, mais peut être un casse tête, lorsqu'un système GNU/Linux contient de nombreuses versions du même programme, et des programmes qui appartiennent à différentes versions d'une même distribution.
La configuration des bibliothèques
Commands
gcc
ldconfig
ldd
lddlibc4
Files
Paths
ld
man ldconfig /etc/ld.so.conf
LD_LIBRARY_PATH
ld.so
man ld
/etc/ld.so.cache
/etc/ld.so.conf
ld.linux
man ldd
/etc/lib.so.conf
include otherlibpath.conf
ld.linux.so.2
/etc/ld.so.conf.d/*.conf /lib/*
/usr/lib/*
/usr/local/lib/*
/usr/X11R6/lib/*
~/lib/*
Les exemples de bibliothèques
export LD_LIBRARY_PATH=”/usr/lib:/opt/lib”
ldd /bin/ln
ldd /sbin/sln
ldd /usr/bin/X11/xterm
ln ­sf /usr/X11R6/lib/libX11.so.6 /usr/X11R6/lib/libX11.so.6.3
ldconfig ­p | less
ldconfig ­n
ls /etc/lib.so.conf
Les services © Patrick Hautrive !;~) 2010
113
MODULE
Le noyau modulable
Le système Gnu Linux est un noyau modulable. La configuration du noyau (kernel) permet de choisir les fonctionnalités qui seront directement intégrées dans le noyau, et celles qui y seront rattachées sous forme de modules. La modularité du noyau permet de concilier la rapidité (fast) d'un noyau de petite taille (light) et la souplesse (smooth) d'un noyau qui s'adapte aux circonstances, et non l'inverse. La modularité propose également l'avantage de l'indépendance (independance). Les programmeurs disposent en effet d'une interface stable (interface) pour écrire les pilotes (driver). Le cœur du noyau monolithique reste relativement inchangé, tandis que les modules peuvent se développer indépendamment les uns des autres, et indépendamment du noyau.
Un serveur (daemon) permet de charger en mémoire les modules dont le noyau a besoin (auto clearing). Les modules sont ensuite déchargés quand ils ne sont plus utilisés. Le service responsable du chargement des modules a évolué, et fut d'abord “kerneld” (noyau 2.0), puis ensuite “Kmod” (noyau 2.4). Les modules apparaissent sous la forme d'un fichier objet (“.o”) ou d'un fichier “kernel object” (“.ko”). Le fichier de configuration des modules “/etc/modules” liste les modules du noyau qui seront chargés au démarrage. Les noms d'alias sont attribués aux modules, afin d'en faciliter la gestion. Par exemple, les pilotes des cartes réseaux sont rassemblés dans le répertoire “/lib/modules/$(uname ­r)/kernel/net/*”. Les modules peuvent être dépendant les uns des autres (dependancies).
La configuration des modules
La configuration des modules
Commands
lsmod
(list)
insmod
(install)
rmmod
(remove)
modprobe
(detection)
depmod
(dependancies)
modinfo
(information)
modload
(thread kernel)
modconf
(Debian)
update­modules
usbmodules
dh_installmodules
pcimodules
Files
lspci
lsusb
isapnp
pnpdump
dmesg
kerneld
kmod
uname
/etc/modules.conf
man modules
/etc/modules
(Debian)
man modprobe
/etc/conf.modules
(Red Hat)
man modprobe.conf
/etc/modprobe.d/aliases
man depmod
/etc/modutils
man modules.dep
/etc/isapnp.conf
/usr/include/linux/kmod.h
/lib/modules/$(uname ­r)/*.o
/lib/modules/$(uname ­r)/modules.dep
/lib/modules/$(uname ­r)/build/net/*
/lib/modules/$(uname ­r)/kernel/net/*
MODPROBE_OPTIONS
Les services © Patrick Hautrive !;~) 2010
114
Un exemple d'installation
Un exemple d'installation de module cd /usr/src
tar xvfz module.tar.gz
cd module
less README
make
make install
ls /lib/modules/$(uname ­r)/module.o
insmod ­f module
depmod ­a
modprobe module
ls mod
modinfo module
rmmod module
/etc/rc.d/init.d/kerneld restart
Le fichier /etc/modules.conf
Un exemple de fichier /etc/modules.conf
alias usb­controler usb­uhci
alias eht0 ne
option eth0 irq=10 io=0xee00
alias sound sb
option sb io=0x220 irq=5 dma=1 dma16=5 npu_io=0x330
Les exemples de modules
lsmod
ls /lib/modules/2.6.18­4­486/kernel/net/iv4/netfilter/*
modprobe
Les services © Patrick Hautrive !;~) 2010
115
RPM
Les packages
Les packages (archive) constituent un format de conditionnement des Logiciels Libres et un mode de gestion des applications. Les packages sont généralement proposés, soit dans leur version source (source) ou dans une version pré compilée (binary). Les packages de binaires sont compilés avec des liens de bibliothèques dynamiques (dynamic libraries). Les gestionnaires de packages (manager) permettent de faciliter la gestion des installations et des désinstallations, et de résoudre les dépendances et les versions des bibliothèques. Les archives sont composées des fichiers (files) et de données de gestion (meta data). Les packages sources (src) ne dépendent d'aucune architecture (noarch), mais requièrent d'être compilés (gcc). Les packages binaires sont parfois proposés pour plusieurs types d'architectures (32 bits ou 64 bits). Pour les architectures Pentium d'Intel, les archives peuvent être pré compilées et spécialement optimisées pour certains types de processeurs (i386, i586 ou i686).
Il existe deux types de packages différent, les packages RPM (avec l'extension “.rpm”), et les packages Debian (avec l'extension “.deb”). Tous les packages d'un même type (RPM ou DEB) sont construits selon les mêmes règles (rules). Lors de l'installation d'une application, le gestionnaire de package effectue une vérification des dépendances (dependancies). La commande “alien” permet de convertir un format de packages dans un autre format. Toutefois, il est toujours préférable d'utiliser les packages prévus pour le type de distribution, ou d'utiliser des archives sources (tarball).
Les packages RPM
Les packages RPM (Red Hat Package Manager) concernent principalement les distributions qui emploient ce format pour la gestion des applications (Red Hat, Fedora, Mandrake, Mandriva et SuSE, Turbo Linux, Trustix, CentOs). Les noms des packages RPM (archive) permettent d'identifier le programme (software), les numéros de version (version) et de sortie (release), le type d'architecture processeur (architecture), et l'extension “.rpm” caractérisant les packages RPM (extension). La base de données (data base) rassemblant tous les packages disponibles sur un système Gnu Linux de type RPM est enregistrée dans le répertoire “/var/lib/rpm/*”.
Des outils graphiques de gestion des packages (yum) se base sur la commande « rpm » pour effectuer les opérations d'installation, de désinstallation, ou de mise à jours des packages.
Des sites miroirs (mirror) mettent à disposition des internautes des packages au format RPM.
Les services © Patrick Hautrive !;~) 2010
116
La commande rpm
La commande “rpm” permet de gérer les packages RPM en ligne de commande.
Les options de la commande rpm Options
rpm –initdb
rpm ­ivh archive.rpm
rpm ­Uvh archive.rpm
rpm ­evh archive.rpm
rpm ­qpl archive.rpm
rpm ­qa archive
rpm ­qf /usr/bin/archive
rpm ­qi archive
Installation
(data base)
(install)
(update)
(erase)
(list)
(query all)
(query file)
(query infos)
rpm ­i –nodeps archive.rpm
rpm ­i –force archive.rpm
rpm ­i –ignorearch archive.rpm
rpm ­i –ignoreos archive.rpm
rpm ­i –test archive.rpm
rpm ­i ­­checksig archive.rpm
rpm ­i –nosignature archive.rpm
gpg –import signature.asc
(no dependancy)
(force install)
(ignore architecture)
(ignore os)
(test only)
(check signature)
(no signature check)
(import signature)
La configuration des packages RPM
La configuration des packages RPM (Red Hat Package Manager)
Commands
rpm
urpmi
rpmdrake
yum
up2date
autorpm
alien
Files
man rpm
/etc/rpmrc
/etc/rpm/macros
/usr/lib/rpm/rpmrc
Les exemples de RPM
rpm ­qal xsnow | sort | less
rpm ­qlc xsnow rpm ­qld xsnow rpm ­qpi xsnow­1.41­1.i386.rpm
rpm ­e –nodeps xsnow
rpm ­ivh xsnow­1.41­1.i386.rpm
rpm ­Uvh xsnow­1.41­1.i386.rpm
ls /usr/X11R6/bin/xsnow
rpm ­qf /usr/X11R6/bin/xsnow
rpm ­qa > list­rpm.txt
mount /dev/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm­ivh package.rpm
(query list configuration files)
(query list documentation files)
(query package information)
Les services © Patrick Hautrive !;~) 2010
117
DEB
La philosophie Debian
Les distributions Debian sont basées sur la distribution Debian, qui est réputé pour son exemplarité et sa conformité à l'esprit des Logiciels Libres (free software). La distribution Debian est conforme à 100% avec la licence Gnu GPL. La philosophie Debian est un engagement (constitution) envers la communauté des Logiciels Libres (social contract) et répond à des règles de fonctionnement qui sont suivies et explicitées (policy manual).
De nombreuses distributions se base sur le développement de la distribution Debian (Ubuntu, Knoppix).
Les distributions Debian
Les distributions Debian sont développés continuellement (unstable), mais elles ne sont distribuées officiellement que quand elles sont suffisamment testées pour être jugées opérationnelles (stable) dans un environnement de production.
La philosophie Debian (http://debian.org
) /usr/share/doc/debian/social­contract.txt
/usr/share/doc/debian/constitution.txt
/usr/share/doc/debian­reference­en
/usr/share/doc/debian/debian­manifesto
Les packages Debian
Les packages Debian sont disponibles en tant que sources ou DSC (Debian Sources), et en tant que binaires ou DEB (Debian Binaries). Le gestionnaire de packages (package manager) est l'ensemble des programmes APT (Advanced Package Tool), qui permet d'installer ou de désinstaller des programmes, avec la gestion des dépendances (dependencies) et les mises à jour de sécurité (security uptdate).
La commande « dselect » est l'ancienne commande de gestion des packages Debian. La gestion des packages s'effectue désormais avec la commande « dpkg » , pour la gestion de bas niveau, et la commande « apt­get » pour la gestion courante. Toutefois, depuis la version officielle de Debian 4, c'est la suite des commandes APT ou la commande « aptitude » qu'il faut préférer pour la gestion des packages. Des outils graphiques (« synaptic ») s'appuyant sur ces commandes, permettent également de gérer l'installation et la désinstallation des programmes, comme la mise à jour de sécurité (security uptdate).
Les distributions Knoppix ou Ubuntu sont des distributions de type Debian qui utilisent les même Les services © Patrick Hautrive !;~) 2010
118
packages et les mêmes outils.
Le fichier « /etc/apt/sources.list » contient des dépôts des packages Debian (repository) sur internet. La liste des dépôts officiels (main, free) peut être modifiée pour accepter des programmes qui sont développés par d'autres équipes que les contributeurs Debian (contrib), ou pour accepter des programmes qui fonctionnent sous Debian, mais dont les sources ne sont pas sous licence GNU GPL (non free).
Le fichier de configuration de la commande « apt­get » est « /etc/apt/apt.conf ».
La commande “alien” permet de convertir les packages du format RPM au format DEB et vice versa.
La documentation Apt Howto décrit l'utilisation du gestionnaire de packages pour les distributions Debian.
La commande dpkg
La commande « dpkg » est une commande de bas niveau pour gérer les packages Debian.
La commande « dpkg­reconfigure » permet de reconfigurer un package Debian.
La commande dpkg (man dpkg) (man dpkg­deb)
dpkg ­c archive.deb
dpkg ­i archive.deb
dpkg ­r archive
dpkg ­P archive
dpkg ­I archive.deb
dpkg –audit
dpkg ­­content archive.deb
dpkg ­S motif
dpkg ­s archive
dpkg ­l motif
dpkg ­L archive
dpkg ­p archive
dpkg­reconfigure package
(content)
(install)
(remove)
(purge the package and its configuration files)
(information)
(audit)
(files into archive)
(search motif in installed packages)
(status)
(list packages with motif)
(list files from package)
(print information available)
(reconfigure hte package)
Les dépendances des packages
Les dépendances “normales” (normal) sont les packages dont dépend une archive pour fonctionner. Les dépendances “importantes” (important) sont indispensables pour le fonctionnement d'une archive, tandis que les dépendances “suggérées” (suggested) sont optionnelles. Les dépendances “inverses” (reverse) sont les packages qui dépendent de l'archive pour fonctionner.
Les services © Patrick Hautrive !;~) 2010
119
Les packages peuvent être marqué par une “priorité” (policy) ou une “préférence” (preferences) qui figure dans le fichier “/etc/apt/preferences”.
La commande apt­get
Les commandes “apt­get”, “apt­show” et “apt­cache” acceptent l'emploi des expressions régulières POSIX (regex), qui s'appliquent à tous les packages recensés (*, ?, ., $, ^). Les commandes de gestion des packages (man apt­get)
apt­get update
apt­get –show­upgraded
apt­get upgrade archive
apt­get dist­upgrade
apt­get ­s install archive
apt­get install archive
apt­get remove archive
apt­get –purge archive
apt­get check
apt­get clean
apt­get –fix­broken
apt­get dselect­upgrade
(synchronisation des sources «/etc/apt/sources.list»)
(liste les mises à jours des packages)
(mise à jours des packages)
(mise à jours des packages et des dépendances de la distribution)
(simulation de l'installation d'une archive)
(installation d'une archive)
(désinstallation d'une archive)
(supprime l'archive et ses fichiers de configuration)
(vérification des dépendances)
(suppression des archives téléchargées)
(réparation des dépendances)
(mise à jours des packages selon leur statut)
La commande apt­cache
La commande “apt­cache” utilise les informations enregistrées dans les fichiers caches.
La commande apt­cache pour la gestion du cache des packages (man apt­cache)
apt­cache stats
apt­cache dumpavail
apt­cache search motif
apt­cache show archive
apt­cache showpkg archive
apt­cache depends archive
apt­cache rdepends archive
(affichage nom, nombre, noms virtuels, missing, distinct distribution)
(affichage des packages disponibles)
(affichage des archives qui correspondent au motif de recherche)
(affichage des informations sur une archive)
(affichage des versions, des dépendances normales, et inverses)
(affichage des dépendances et des packages pour une résolution)
(affichage des dépendances inverses)
La configuration des packages Debian
L'outil de base pour la gestion des packages est la commande “dpkg”. Les outils comme “aptitude” ou “synaptic” sont des interfaces conviviales (frontend) pour les commandes “apt­get” et “apt­
cache”.
Les services © Patrick Hautrive !;~) 2010
120
Le fichier « /etc/apt/sources.list » contient des dépôts ou miroirs des paquets Debian (repository). Quand le fichier des sources est modifié, la commande « apt­get update » doit être lancée pour reconstruire la liste des paquets disponibles dans le cache.
La configuration des packages Debian (Apt Howto)
Commands
taskel
dselect
dpkg
apt­get
apt­show
apt­cache
apt­key
apt­setup
apt­config
apt­cdrom
apt­sortpkgs
apt­ftparchive
apt­extracttemplate
dpkg­buildpackage
dpkg­reconfigure
Files
aptitude
synaptic
kpackage
gnome­apt
alien
/etc/dpkg/dpkg.cfg
/etc/apt/sources.list
/etc/apt/apt.conf
/etc/apt/preferences
/var/lib/apt/lists/*
/var/lib/dpkg/status
/var/lib/dpkg/info/*
/var/lib/dpkg/available
/var/cache/apt/archives/*
/etc/popularity­contest.conf
man dpkg
man dselect
man dpkg­deb
man dpkg­query
man deb­control
man apt
man apt­get
man apt­cache
man sources­list
man apt.conf
man apt_preferences Le fichier sources.list
Le fichier « /etc/apt/sources.list » contient les adresses internet où seront recherché les paquets Debian pour les installations et les mises à jours de sécurité (security update).
http://debgen.simplylinux.ch/
Chaque ligne correspond à un dépôt (repository). Le premier mot sur chaque ligne indique le type d'archive (deb ou deb­src). Le type d'archive correspond soit à des paquets binaires compilés (binaries), soit à des paquets sources (sources). Les archives sources contiennent le code source des programmes plus le fichier de control Debian (.dsc), et le fichier « diff.gz » contenant les changements nécessaires pour « debianiser » le programme.
Ensuite vient l'adresse internet ou se trouve le dépôt, puis, le nom de la distribution (distribution). La distribution peut être indiquée, soit le nom de code (potato, sarge, etch, lenny, squeeze, wheezy, sid), soit par le nom de la classe (oldstable, stable, testing, unstable). L'utilisation du code de la distribution permet de suivre les mises à jours des packages sans upgrader la distribution quand la testing deviendra stable.
Enfin, sont placés les types de paquets (main, contrib, free, nonfree) qui doivent être pris en compte.
Les services © Patrick Hautrive !;~) 2010
121
Le fichier « /etc/apt/sources.list » (man sources.list)
Type
Addresses
Distribution
Binaries deb
http
code
Sources
ftp
classe
deb­src
Packages
potato
Official
sarge
etch
lenny
squeeze
wheezy
sid
oldstable Third Party
stable
testing
unstable
main
non­free free
#OFFICIAL DEBIAN REPOS
#Debian Main Repos
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non­free deb­src http://ftp.fr.debian.org/debian/ squeeze main contrib non­free #Debian Update Repos
deb http://security.debian.org/ squeeze/updates main contrib non­free deb http://ftp.fr.debian.org/debian/ squeeze­proposed­updates main contrib non­free deb­src http://security.debian.org/ squeeze/updates main contrib non­free deb­src http://ftp.fr.debian.org/debian/ squeeze­proposed­updates main contrib non­free #UNOFFICIAL REPOS 3rd Party Binary Repository
# Debian Backports ­ http://backports.debian.org/
deb http://backports.debian.org/debian­backports squeeze­backports main #Debian Multimedia ­ http://www.debian­multimedia.org/
## Run: apt­get update && apt­get install debian­multimedia­keyring && apt­get update
deb http://www.debian­multimedia.org stable main non­free
Les exemples de Debian
dpkg­reconfigure xserver­xorg
dpkg­reconfigure locales
dpkg­reconfigure console­data
apt­cdrom add
apt­get update
apt­get install +archive ­archive­to­remove archive=version archive/stable
apt­get install aptitude
aptitude –simulate dist­upgrade
aptitude dist­upgrade
Les services © Patrick Hautrive !;~) 2010
122
contrib
apt­cache policy cpp
aptitude –simulate –purge cpp
aptitude search
Les services © Patrick Hautrive !;~) 2010
123
TARBALL
Les archives
Une archive est un fichier qui rassemble et contient plusieurs fichiers (box). Une archive compressée est une archive qui a été compressé afin d'en réduire la taille (compress). Les algorithmes de compression (algorithme) des outils de compression sont plus ou moins performants, c'est­à­dire qu'ils permettent un gain d'espace plus ou moins important, selon le type de fichier (file) et en fonction du temps nécessaire pour effectuer la compression (time).
Les fichiers contenus dans une archive peuvent être des programmes sources (source) ou des programmes binaires (binary), des fichiers de configuration (configuration file), ou des bibliothèques (library). Les archives sont également utilisées pour faire des sauvegardes (backup).
Les packages
Les packages propres aux distributions Red Hat et Debian sont également des archives qui contiennent des fichiers. Les fichiers des packages (packages) ont été organisées pour être utilisés avec un gestionnaire de package (manager) et contiennent des méta données (meta data) en plus des fichiers propres au programme.
Les tarballs
Les tarballs sont des archives compressées contenant des programmes. La commande “tar” (Tape Archive) permet de rassembler plusieurs fichiers en un seul, et de constituer ainsi une archive. L'archive est ensuite compressée avec un outil de compression. La création des tarballs poursuit ainsi un double processus, d'abord un archivage, et ensuite une compression. Ces deux opérations sont également appliquées aux tarballs après le téléchargement, mais en sens inverse, d'abord une décompression, puis une extraction.
En général, les tarballs sont utilisées quand il n'existe pas de packages correspondant pour le type de distribution. Les tarballs sont téléchargées depuis internet, puis décompressées, et les fichiers en sont extrait pour être compilés localement. Toutefois, les mélanges de packages et de tarball peuvent être à l'origine d'incompatibilité, parce que la gestion globale des dépendances n'est plus assurée.
La commande tar
La commande “tar” effectue aussi bien l'archivage que l'extraction. L'archivage (archiving) consiste à rassembler plusieurs fichiers à l'intérieur d'une archive, tandis que l'extraction (extracting) consiste à récupérer les fichiers contenus dans une archive. La commande “tar” conserve les chemins relatifs au répertoire courant (path) où elle a été lancée (pwd). La commande “tar” préserve également les Les services © Patrick Hautrive !;~) 2010
124
attributs des fichiers (attributs), quand le système de fichiers d'accueil le permet.
Les options de la commande d'archivage tar (man tar) (info tar)
c
x
f
v
z
j
k
p
Z
create
extract
file
verbose
compress & decompress with “gzip”
compress & decompress with “bzip2”
keep existing files no overwrite
preserve permissions
compress & decompress with “compress”
t
d
r
u
h
m
P
V
list
diff
add
update
files not symlinks
modified time
absolute path
volume or label name
Les algorithmes de compression
Les algorithmes de compression sont classés en deux catégories, par lettre ou par dictionnaire. Les algorithmes de compression par lettre de Huffman date de 1952 (letter), comme la commande “pack”. Les algorithmes de compression par dictionnaire de Lempel et Welch (dictionnary) utilisent un codage par groupe de lettre, comme les commandes “zip” et gzip”. Le processus de compactage requiert du temps et de la puissance de calcul. En général, plus la densité d'une archive est importante (density) et plus les durées de compression et de décompression sont longues (time).
Les formats des archives
Les tarballs portent habituellement l'extension “.tar.gz” quand elles ont été compressées avec l'outil “gzip” et l'extension “tar.bz2” quand elles ont été compressées avec l'outil “bzip2” qui propose un algorithme de compression plus compacte, et permet de gagner 10% en moyenne. Les tarballs désignent particulièrement des archives contenants les sources d'un Logiciel Libre.
Les formats de compression
Format
Red Hat
Debian
Gentoo
Tarball
Tarball
Tarball
Tools
Extension
rpm yum
dpkg apt­get
zip unzip
gzip gunzip
bzip2 bunzip2
compress uncompress
.rpm
.deb
.ZIP
.tar.gz
.tar.bz2
.tar.Z
Spécification
Package
Package
Port Source Gentoo
Archive source with Gnu zip
Archive
Archive
La configuration des tarballs
Les services © Patrick Hautrive !;~) 2010
125
La configuration de l'archivage et de la compression (tarballs)
Commands
gzip gunzip
bzip bunzip
bzip2 bunzip2
compress uncompress
pkzip pkunzip
tkzip tkunzip
zip unzip
pack unpack
dump restore
zmore
zless
zcat
zdiff
zcmp
zgrep
Tools
tar
star
cpio
dd
rsync
gzexe
Files
Pax
/etc/dumpdates
Winzip.exe
Amanda
Arkeia
Tivoli IBM
Omniback HP
HOSTDUMP.SH
Les exemples de tarball
tar cvf archive.tar directory/
(create archive of directory)
tar cvf – files | gzip ­9 > archive.tar.gz
(create & gzip)
files && gzip archive.tar
gunzip ­c archive.tar.gz | tar xvf ­
(extract & gunzip)
tar cvf archive.tar.bz2 ­­use­compress­program bzip2 files (create & bzip2)
tar czvf archive.tar.gz files
(create & gzip)
tar cjvf archive.tar.bz2 files
(create & bzip2)
tar xzvf archive.tar.gz
(extract & gunzip)
tar xjvf archive.tar.bz2
(extract & bunzip2)
tar cf ­ /home/$USER | (cd /save ; tar zvf ­)
(create & gzip)
tar tzvf archive.tar.gz | more
(list & gunzip)
tar tjvf archive.tar.bz2 | more
(list & bunzip2)
cat archive.tar.bz2 | bzip2 ­d | tar tvf ­
(list & bunzip2)
cat archive.tar.bz2 | bzip2 ­d | tar xvf ­
(extract & bunzip2)
compress ­v file ; uncompress file.Z ; zcat file.Z | more
zip file.zip *.txt ; unzip file.zip
uuencode message
gzip ­v file ; gzip ­l file.gz ; zcat file.gz file.gz | more ; gzip ­d file.gz ; gunzip file.gz
ls ­laR $HOME | gzip > liste.gz ; zcat liste.gz
gunzip –fast ; gunzip –best
gzip ­1 archive.tar ; gzip ­6 archive.tar ; gzip ­9 archive.tar
cpio ­ocvB > /dev/fd0
backupfile.txt
CTRL+D
Les services © Patrick Hautrive !;~) 2010
126
XWINDOW
Le serveur graphique
La conception d'un affichage graphique, avec des fenêtres, un pointeur suivant les déplacements d'une souris, des boutons, des barres des tâches, des menus et des icônes est issue de la société Xerox. Le serveur graphique des systèmes Gnu Linux a été développé au sein du projet Athena du MIT. Le serveur graphique est un serveur réseau qui fonctionne en mode client serveur avec le protocole X11R6. Le mode client serveur permettait de servir plusieurs terminaux avec un seul serveur graphique. L'affichage des fenêtres peut être calculé sur une machine, et déporté sur une autre machine (X forwarding). Le serveur graphique fonctionne généralement localement (localhost). Les applications graphiques locales ou distantes (remote) sont les clientes du serveur graphique. Les applications graphiques distantes reçoivent les données via le protocole TCP/IP sur le port 6000. L'exportation de l'affichage (display) peut s'effectuer avec la commande « ssh ». Le serveur graphique utilisent les librairies graphiques libres (OpenGL).
La version libre du serveur graphique ou X Window (version X11 Release 6.3) s'est d'abord appelé Xfree86 puis Xorg, parce que la version de Xfree 4.4 n'était plus sous licence libre. Le serveur graphique est un programme complexe parce qu'il doit prendre en compte, la gestion des entrées (input device) du clavier (keyboard) et de la souris (mouse), le pilote de la carte graphique (graphic card), la gestion de l'affichage (display) sur un ou plusieurs écrans (monitor), la configuration des matériels (device), le nombre de couleurs (depth), le nombre de pixels (resolution), la fréquence de synchronisation (horizontal synchronisation), la fréquence de rafraichissement (vertical refresh), les pilotes graphiques (modules), les chemins pour les polices de caractères (fonts), les pilotes des images tampons (frame buffer) et les adresses des hôtes pour un affichage distant (remote).
Le serveur graphique est lancé lors de la procédure d'initialisation du système (xinit) par le gestionnaire d'affichage (display manager). La configuration du serveur graphique est enregistrée dans le fichier “/etc/X11/xorg.conf”. La documentation Xfree Howto décrit le fonctionnement et la configuration du serveur graphique. La commande “man xserver” décrit le fonctionnement du serveur graphique.
L'interface graphique
Un système Gnu Linux peut très bien fonctionner sans interface graphique. L'interface graphique est principalement indispensable pour les stations de travail. L'interface graphique se compose de plusieurs éléments, dont les protocoles (protocols), les serveurs (servers) et les clients (clients). Les protocoles peuvent être le protocole de communication réseau qui permet de déporter l'affichage sur d'autres machines (tcpip), le protocole d'échange entre le serveur graphique et les clients (icccm), et le protocole XDMCP (X Display Manager Control Protocol). Les serveurs peuvent être le serveur graphique (X Window) et le serveur de polices de caractères ou XFS (X Font Server).
Les services © Patrick Hautrive !;~) 2010
127
Les clients peuvent être le gestionnaire d'affichage (display manager), le gestionnaire de connexion (session manager), le gestionnaire de fenêtres (window manager), et toutes les applications graphiques clientes (xclients).
Les séquences de touches
L'affichage graphique s'effectue sur la septième ou la huitième console (Ctrl+Alt+F7 ou Ctrl+Alt+F8). Les valeurs de zoom de l'affichage peuvent être modifiées avec la séquence de touches Ctrl+Alt+Plus pour le grossissement, et Ctrl+Alt+Minus pour le rapetissement. Le serveur graphique peut être redémarré avec la séquence Ctrl+Alt+Backspace. Dans un terminal la séquence de touche Ctrl+S interrompt l'affichage, mais les commandes saisies sont envoyées après la séquence Ctrl+Q.
La configuration de l'affichage
La configuration du serveur graphique X Window
Commands
Files
Desktop
Init
man xserver
X
man xorg
startx
man xorg.conf
startkde
gnome­
xorgcfg
session
dexconf x­window­
getconfig manager
xorgconfig xf86config
switchdesk xf86cfg
xhost
XF86config
xauth
XF86cfg
rstart
Xfree86
xev
XF86Setup
xrefresh Xfree86Setup
xrdb
Xfree86­
xdpyinfo configure
xwininfo xconfigurator
xlsatoms redhat­
xvinfo
configure­
xkbprint xfree86
/etc/inittab
/etc/init.d/xdm
/etc/init.d/xorg­common
/etc/sysconfig/desktop
/etc/X11/prefdm
/etc/X11/xorg.conf
/etc/X11/Xsession
/etc/X11/Xwrapper.config
/etc/X11/gdm/gdm.conf
/etc/X11/gdm/Init/Default
/etc/X11/gdm/Sessions/Default
/etc/X11/xdm/Xsetup
/etc/X11/xdm/Xsession
/etc/X11/xinit/xinitrc
/etc/X11/xinit/xserverrc
/etc/X11/xinit/xclients
/etc/X11/xserver/SecurityPolicy
/etc/X11/XF86Config
/etc/X11/XF86Config4
/etc/X11/kdm/*
/usr/bin/X11/*
/usr/X11R6/*
/usr/lib/X11/*
CDE
xdm
Gnome gdm
KDE
kdm
Aqua
Virtual
Library
Pagers
Exceed
Xinside
Winaxe
Wine
X­Win32
Vmware
Un exemple /etc/X11/xorg.conf
Les services © Patrick Hautrive !;~) 2010
128
Display
OpenGL
QT
GTK
Kparts
XtoolKit
Widget
JDS
Window
Blackbox
WindowMaker
Enlightenment
AfterStep
Fluxbox
Sawfish
Bowman
AnotherLevel
Fvwm2 twm
kwm icccm
piewm tvtwm
Personal
~/.Xclients
~/.Xressources
~/.xinitrc
~/.Xdefaults
~/.xsession
~/.Xserverrc
~/.Xauthority
~/.Xmodmap
~/.gnome/photo
Un exemple de configuration du serveur graphique (/etc/X11/xorg.conf)
Section "Files"
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
EndSection
"unix/:7100"
"/usr/lib/X11/fonts/misc"
"/usr/lib/X11/fonts/cyrillic"
"/usr/lib/X11/fonts/100dpi/:unscaled"
"/usr/lib/X11/fonts/75dpi/:unscaled"
"/usr/lib/X11/fonts/Type1"
"/usr/lib/X11/fonts/CID"
"/usr/lib/X11/fonts/100dpi"
"/usr/lib/X11/fonts/75dpi"
Section "Module"
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
EndSection
"bitmap"
"dbe"
"ddc"
"dri"
"extmod"
"freetype"
"glx"
"int10"
"record"
"type1"
"vbe"
Section "InputDevice"
Identifier
Driver
Option
Option
Option
Option
EndSection
Section "InputDevice"
Identifier
Driver
Option
Option
"/dev/input/mice"
Option
Option
Option
EndSection
"Generic Keyboard"
"keyboard"
"CoreKeyboard"
"XkbRules"
"xorg"
"XkbModel"
"pc105"
"XkbLayout"
"fr­latin9"
"Configured Mouse"
"mouse"
"CorePointer"
"Device"
"Protocol"
"ImPS/2"
"Emulate3Buttons""true"
"ZAxisMapping" "4 5"
Section "Device"
Identifier
Driver
BusID
EndSection
"ATI 3D Rage LT Pro (AGP)"
"ati"
"PCI:1:0:0"
Section "Monitor"
Identifier
Option
HorizSync
VertRefresh
EndSection
"Écran générique"
"DPMS"
28­49
43­72
Section "Screen"
Identifier
"Default Screen"
Device
"ATI 3D Rage LT Pro (AGP)"
Monitor
"Écran générique"
DefaultDepth
24
SubSection "Display"
Depth
1
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth
4
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth
8
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth
15
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth
16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth
24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "ServerLayout"
Identifier
Screen
InputDevice
InputDevice
EndSection
"Default Layout"
"Default Screen"
"Generic Keyboard"
"Configured Mouse"
Section "DRI"
Mode
EndSection
0666
Les services © Patrick Hautrive !;~) 2010
129
Le serveur X Window
Le serveur graphique calcul l'affichage, les mouvements de la souris et l'entrée de texte, puis expédie la fenêtre graphique au gestionnaire de fenêtre de l'application cliente. Le serveur graphique utilise les librairies Xlib et les communications s'effectuent avec le protocole X11. C'est l'application cliente qui initie la communication avec le serveur graphique.
Au­dessus des librairies graphiques Xlib peuvent être installées différentes composantes (graphical tool kit) pour le calcul de l'affichage. Il existe plusieurs environnements graphiques compatibles avec Gnu Linux et le serveur graphique X Window, comme ceux du bureau Gnome (GTK+, GTK#), du bureau KDE (QT, QT+), des applications écrites en Java (JDS) ou de Motif. Ces environnements graphiques permettent de développer des applications cohérentes, et d'uniformiser l'apparence des différentes fenêtres.
Le serveur X Window est lancé automatiquement pour le niveau d'initialisation « init 5». La commande « startx » permet de lancer le serveur X Window, quand il n'a pas démarré. Par défaut, le serveur X Window redirige l'affichage vers l'adresse IP « 127.0.0.1:0 ». La commande « startx :1 » lance le serveur X Window et redirige l'affichage (display) vers le deuxième moniteur (Ctrl+Alt+8) de la machine locale (localhost).
La commande « xhost » permet de restreindre l'accès au serveur X Window. La commande « xhost ­ » refuse l'accès à tout le monde, tandis que la commande « xhost + » accepte tous les clients. La commande « xhost + 10.0.1.1 » accepte les connexions des clients qui proviennent depuis cette adresse.
Le s clients X Window
Les clients X Window sont tous des programmes graphiques dont l'affichage est assuré par le serveur graphique X Window.
Les clients X Window (ls /usr/bin/X11/) (ls /usr/X11R6/bin)
xclock
xlock
xeyes
xcalc
xlogo
xman
xbiff
xwd
xkill
xmatrix
xclipboard
xmessage
xletters
worm
rain
worms
xmodmap
zenity
glxinfo
glxgears
xload
xlsclients
xlsfonts
xlsfonts
xfontsel
gfontsel
Un exemple de X Forwarding
Le déportage de l'affichage graphique (xforwarding) permet de construire le contenu d'un affichage sur une machine, et de l'exporter sur une autre machine afin d'y être affiché. Le traitement vidéo pour Les services © Patrick Hautrive !;~) 2010
130
calculer les pixels et les paramètres de la fenêtre (video processor) et l'affichage ou la présentation du résultat (video print) sont séparés et réalisés par deux machines différentes.
Un exemple de X Forwarding
X Client
­­>
X Window + X Libraries
xauth nmerge myauth.xa
rm myauth.xa
export DISPLAY=server.tld:0.0
xeyes
Ctrl+C
X Server
X Window + X listen tcp
echo $DISPLAY
xauth list
xauth generate
xauth nextract myauth.xa $DISPLAY
scp myauth.xa client.tld:myauth.xa
rm myauth.xa
xhost + [email protected]
Les exemples de X window
sh Xinstall.sh ­check
Xfree86 ­scanpci
(Bus Id = 1:0:0)
Xfree86 ­probeonly
ls ${KDEDIR}/bin.*.kss
export PATH=$PATH:/usr/X11R6/bin
X :1 ; startx ­­:1
(Display N° 1 avec Ctrl+Alt+F8)
xclock ­geometry 300x250­200x150
xclock ­display localhost:0.0
(Display & Screen N° 0.0 avec Ctrl+Alt+F7)
export $DISPLAY=soleil.reso:0.0
xhost +soleil.reso ; X > /tmp/X.out 2>&1 ; xhost ­
vi $HOME/.Xclients
#exec startkde
exec gnome­session
ln­s /usr/X11/bin/xdm /etc/X11/prefdm
vi /etc/X11/Xwrapper.config
allowed users=anybody
vi /usr/X11R6/bin/startx
ServerArgs = “­nolisten tcp”
vi ~/.Xinitrc
exec xterm ­geometry +1+1 &
exec gnome­session
#exec startkde
#exec twm
#exec sawfish
#exec blackbox
#exec enlightenment
Les services © Patrick Hautrive !;~) 2010
131
xrdb ­query
less /usr/X11R6/lib/X11/rgb.txt
vi ~/.Xressources
*background : snow
xterm *background : white
xterm *background : #0000ff
wish *banderwidth : 1
xterm font : misc ­fixed ­* ­*
xrdb $HOME/.Xressources
cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom
sudo sh ­c 'md5sum /etc/X11/xorg.conf >/var/lib/xfree86/xorg.conf.md5sum'
sudo dpkg­reconfigure xserver­xorg
Les services © Patrick Hautrive !;~) 2010
132
GNOME
Le bureau gnome
Le projet du bureau Gnome a été initié par Miguel de Icaza. Le bureau GNOME (Gnu Network Object Model Environment) est constitué d'un ensemble de programmes intégrés qui ont été programmés avec la plateforme de développement Orbit laquelle est une implémentation libre de Corba. L'environnement Gnome utilise les bibliothèques graphiques GTK+ (Gimp Tool Kit Plus).
Les exemples de gnome
man 1 GDM
man 1 gdm
man 8 gdm
man 8 gdmlogin
man 8 gdmchooser
man 8 gdmflexiserver
export SESSION=gnome­session
gmanedit
Les services © Patrick Hautrive !;~) 2010
133
KDE
Le bureau KDE
Le bureau KDE (K Desktop Environment) utilise les bibliothèques graphiques QT de la société Trolltech. Les bibliothèques QT 2.2 ne sont devenues libres, sous licence Gnu GPL, qu'avec la concurrence de Gnome.
Les services © Patrick Hautrive !;~) 2010
134
BACKUP
La nécessit é des sauvegardes
Les sauvegardes (backup) sont une nécessité. Un fichier numérique peut avoir une durée de vie très longues pourvu qu'il ait été sauvegardé sur un support extérieur. Les modifications apportées à un fichier sur lequel un utilisateur travaille doivent impérativement être sauvegardées régulièrement. Les sauvegardes doivent également être restaurées régulièrement afin de vérifier qu'elles sont conformes à ce que l'on en attend. La loi de Murphy prédit que c'est au moment de la sauvegarde qu'il risque de survenir un problème.
La stratégie de sauvegarde doit tenir compte d'une multitude de facteurs liés aux données, aux supports de stockage et aux procédures. La personne responsable des sauvegardes doit prendre en considération, la sélection des fichiers cibles, la période entre deux sauvegardes, l'automatisation des procédures à suivre pour la sauvegarde et pour la restauration, le type du support et la capacité maximale de stockage, le format d'enregistrement, le taux de compression, les outils, le coût de l'infrastructure et de la maintenance, le choix du lieu extérieur au site pour entreposer les jeux, le risque et l'impact d'un échec de sauvegarde, la sensibilité des données, le contrôle de la qualité et de la pérennité des données, les délais pour la remise en état.
Les types de sauvegarde
La véritable sauvegarde est la sauvegarde totale ou intégrale. Les autres types de sauvegarde ne sont que transitoires, entre deux sauvegardes totales. Les sauvegardes partielles, incrémentielles, différentielles n'existent que pour gagner du temps et de l'espace de stockage. La sauvegarde doit être régulière et fonctionnelle et doit permettre de restaurer rapidement les données ou le système dans un état opérationnel.
Les supports de stockage
Les supports de stockage sont nombreux (disquette, carte flash, clef usb, cdrom, dvd ré inscriptible, disque dur, bande, serveur, site internet, base de données). Les supports servent en général plusieurs fois, et il en faut plusieurs pour effectuer un roulement complet. L'étiquetage des supports de stockages est très important parce qu'il est souvent le seul moyen de savoir ce qui se trouve à l'intérieur, avant la restauration. L'accès à une bande est séquentiel, c'est­à­dire qu'il faut dérouler la bande jusqu'à l'endroit où se trouve la donnée recherchée. Les lieux de stockage des supports doivent être préservés des vols et du feu, et doivent conserver des degrés de température et d'hydrométrie convenables et stables.
La configuration des sauvegardes
Les sauvegardes peuvent être avantageusement automatisées avec les outils de planification comme Les services © Patrick Hautrive !;~) 2010
135
“cron”, et de synchronisation sécurisée comme “rsync” (remote synchronisation).
La configuration des sauvegardes
Commands
mv
rm
cp
scp
cpio
dd
tar
touch
cron
rsync
rdist
wget
dump
restore
Legato
Amanda
ArcServe
Bru
Arkeia
Tivoli
Omniback
Target
mt
ftape
ftformat
afio
cdrecord
/etc/*
/home/*
/usr/src/*
/usr/lib/*
/var/*
Files
/etc/dumpdates
Les exemples de sauvegarde
restore ­if /backup.dmp
mt ­f /dev/nqst0 rewind
rdist ­f configuration­file
tar ­cvMf /dev/fd0 /etc /home | tee index.multivolumes
cpio ­it < /dev/fd0 > index.backup
cpio ­icvdumB /dev/fd0
find . ­print | cpio ­ocvB | compress > /dev/rtf0
find /usr ­mount | cpio ­ocvB > /dev/rft0
ls /home | cpio ­o > /dev/fd0
find / ­mtime ­1 \! ­type d ­print > /tmp/daylist ; tar ­cv ­T /tmp/daylist ­f /dev/fd0
Les services © Patrick Hautrive !;~) 2010
136
VIM
L'éditeur vi
L'éditeur “vi” (visual) est présent par défaut sur tous les systèmes Unices. L'éditeur “vi” ou “vim” (visual improve) est un outil standard et léger qui permet d'éditer et de modifier en ligne de commande les fichiers de configuration et les scripts. L'éditeur “vi” se lance dans un terminal virtuel et n'a pas besoin d'une interface graphique pour fonctionner. L'éditeur “vi” propose plusieurs modes différents. Le mode commande est en général le mode par défaut. Le mode commande (command mode) s'obtient avec la touche “ESCAPE”, et permet de passer des commandes. Le mode insertion (edition mode) s'obtient en appuyant sur la touche “I” et permet d'éditer un texte. Le mode étendu (extended mode) s'obtient en appuyant sur la touche “:” qui forme une ligne de commande en bas de la fenêtre de l'éditeur. Les fichiers s'ouvrent dans des tampons (buffer). 26 registres lettrés peuvent conserver des données (register). Des marques lettrées (mark) peuvent être placées pour délimiter des zones.
L'éditeur “vim” est un outil complexe et très riche en fonctionnalités, comme peut l'être Emacs. L'éditeur “vim” est un programme libre, sous licence Gnu GPL, développé par Bram Moolenaar, et qui encourage les dons pour aider les enfants en Ouganda (charityware).
Les spécifications de “vim”
Les spécifications de l'éditeur “vim”
Le fichier de personnalisation “~/.viminfo”
La création du fichier passé en paramètre quand il n'existe pas
L'ouverture d'une copie du fichier passé en paramètre quand il existe
Les 26 registres de mémoire sont nommés avec une lettre minuscule ([a­z]) (register)
L'utilisation des tables de codes de caractères pour de nombreuses langues (keymap)
La reconnaissance des types de fichiers et des langages de programmation (file type)
L'évaluation des expressions arithmétiques (eval) et des expressions régulières (regex)
La coloration syntaxique des scripts et des programmes sources (color)
L'interface graphique avec des ascenseurs et des menus (gui)
La manipulation des différences entre fichiers (diff)
L'auto indentation (set autoindent)
Le mode commande (cmdline)
(“Escape”)
Le mode édition (editing)
(“i”)
Le mode étendu (extended mode)
(“:”)
L'aide en ligne avec la commande “:!man vi”ou “:help user­manual”
Le fichier de configuration “/etc/vim/vimrc” et le répertoire de documentation “/usr/share/vim/*”
Les services © Patrick Hautrive !;~) 2010
137
Le mode commande
Le mode commande de l'éditeur “vim” ESC (command mode)
d
Ctrl+z (interruption & background)
y
k
(move up)
dd
h
(moveleft)
D
l
(move right)
dG
j
(move down)
x
u
(undo)
X
:
(extended mode)
cc
i
(insertion mode on the cursor)
C
I
(insertion mode at the begining of the line) J
s
(insertion mode)
^
a
(insertion & move one caracter after cursor) $
A
(insertion & move end of line)
gg
o
(insertion & open one line under cursor)
G
O
(insertion & open one line over cursor)
H
R
(insertion & replacement except Backspace) M
v
(visual mode for selection with arrows)
L
V
(visual line for the selection of the line)
/motif
yy
(copy cursor line into current register)
?motif
p
(paste current register in line under cursor) /[A­Z]
P
(paste current register line over cursor)
n
~
(change caracter in uppercase or lowercase) mx
“Ayy (copy line of the cursor in register “A”)
'x
“Ap (paste register “A” in line under cursor)
Ctrl+f
“K5dd (cut 5 lines and keep them in register “K”) Ctrl+b
ZZ
(write modification & exit)
(cut after a selection in visual mode)
(paste after a selection in visual mode)
(delete cursor line)
(delete from cursor to end of line)
(delete from cursor to end of file)
(delete one caracter under cursor)
(delete one caracter before cursor)
(delete line & insertion)
(delete end of line & insertion)
(join line of cursor with line under)
(move cursor start of line)
(move cursor end of line)
(move cursor start of file)
(move cursor end of file)
(move cursor to high screen)
(move cursor to middle screen)
(move cursor to low screen)
(search for “motif” after cursor)
(search for “motif” before cursor)
(search for uppercase caracter)
(next pattern to search, no p for previous)
(mark the cursor position with letter “x”)
(place cursor in line marked with “x”)
(forward one page)
(backward one page)
Un exemple de copier coller
Les services © Patrick Hautrive !;~) 2010
138
Un exemple de copier coller dans l'éditeur “vim”
Esc
gg
mC
G
y'C
“Ry'C
d'C
:e file
“Rp
:w file
(Passe en mode commande, si c'était nécessaire)
(Déplacement du curseur pour indiquer le début de la zone à copier, ici en début de fichier)
(Marque la position du curseur avec la lettre “C” pour indiquer un début de zone)
(Déplacement du curseur pour indiquer la fin de la zone à copier, ici fin de fichier)
(Copie la zone délimitée par la marque “C” et le curseur dans le tampon courant)
(Copie la zone délimitée par la marque “C” et le curseur dans le registre “R”)
(Efface la zone délimitée par la marque “C” et le curseur)
(Charge le fichier “file” depuis le répertoire courant)
(Colle le registre “R” sur la ligne en dessous de l'emplacement du curseur)
(Enregistre les modifications dans le fichier “file” du répertoire courant)
Le mode extended
Lors d'un changement d'édition de fichier, ou lors du relancement de l'éditeur, celui­ci conserve en mémoire, les 26 registres nommés de “a” à “z” (26 registers), la valeur de la dernière commande (cmd), ainsi que le dernier motif de recherche (search).
Le mode extended de l'éditeur “vim” :w file.txt
:wq
:q!
:e!
:r file.txt
:n
:!cmd
:!script
:!!
:e file.txt
:%s/motif/change/
:0,$s/motif/change/
:x,ys/motif/change/
:'M,.s/motif/change/
:'M,.!script
:x,y!cmd
:help
:shell
:ARROW
:exit
:quit
(write into “file.txt”)
(write & quit)
(quit without saving)
(edit reload without saving)
(load “file.txt” at cursor)
(next file)
(execute “cmd” in a shell)
(execute the “script” in a shell)
(execute last command)
(load file)
(replacement “motif” by “change” in the entire file)
(replacement “motif” by “change” in the entire file)
(replacement from line “x” to line “y”)
(replacement from mark “M” to cursor “.”)
(execute “script” from mark “M” to cursor “.”)
(execute “cmd” from line “x” to line “y”)
(open help in a new buffer, :q! to leave and come back)
(escape to a shell, exit to return to the editor)
(scroll historic of commands)
(exit & save)
(quit & ask to save)
Les services © Patrick Hautrive !;~) 2010
139
:set
:set all
:set list
:set showmode
:set noshowmode
:set autoindent
:set autoprint
:set errorbells
:set number
:set redraw
:set showmatch
:set warn
:set wrapmargin
:set wordsearch
:set ignorecase
:set nomagic
:set nowrapscan
:set report
:set tabstop
:set term
:set tarse
:set mesg
La configuration de “vim”
La configuration de l'éditeur “vim”
Commands Variables
vi
vim
view
nvi
:set
Files
TERM
/etc/termcap
TERMCAP /etc/vim/vimrc
EDITOR /usr/share/vim/vimrc
/usr/share/vim/vim63/tutor/tutor.fr
/usr/share/vim/vim63/doc/intro.txt
/usr/share/vim/vim63/doc/help.txt
/usr/share/vim/vim63/doc/index.txt
/usr/share/vim/vim63/doc/starting.txt
/usr/share/vim/vim63/doc/usr_01.txt
/usr/share/vim/vim63/doc/tips.txt
/usr/share/vim/vim63/doc/autocmd.txt
/usr/share/vim/vim63/doc/cmdline.txt
/usr/share/vim/vim63/doc/editing.txt
/usr/share/vim/vim63/doc/options.txt
Les exemples de vi
whereis vi
ls ­l /usr/bin/vi
ls ­l /etc/alternatives/vi
ls ­l /usr/bin/vim
vi
/[Bb]ox
4x
10gg
8dd
rx
dw
3dw
cw
d$
cc
5cc
“k5yy
“k5dd
:1,10!grep motif
:3
:3,6d
:!echo $PATH
:0,$s/pear/peach/
:.+2,$­3s/cat/dog/
:!/bin/bash
:!pwd
:set ts=4
Ctrl+V
(recherche les motifs “Box” et “box”)
(suppression de 4 caractères après le curseur)
(bouge le curseur à la dixième ligne)
(efface 8 lignes)
(remplace le caractère du curseur par la lettre “x”)
(efface un mot à droite du curseur)
(efface trois mots à droite du curseur)
(efface un mot et passe en mode insertion pour changer un mot)
(efface du curseur à la fin de la ligne)
(efface la ligne et passe en mode insertion pour changer une ligne)
(efface 5 ligne et passe en mode insertion)
(enregistre 5 lignes à partir du curseur dans le registre “k”)
(coupe 5 lignes à partir du curseur et les enregistre dans le registre “k”)
(recherche dans les lignes 1 à 10 le motif, et conserve ces lignes)
(déplace le curseur à la troisième ligne)
(supprime les lignes comprises entre 3 et 6)
(exécution dans le shell de la commande “echo”)
(remplacement de la ligne zéro à la fin du motif “pear” par “peach”)
(remplacement de la ligne courante +2 à la fin ­3 de “cat” par “dog”)
(exécution du sous shell bash, puis retour à l'éditeur)
(exécution de la commande “pwd”, puis retour à l'éditeur)
(fixer la tabulation à 4 caractères)
(Visual Block mode for column selection & Escape)
Les services © Patrick Hautrive !;~) 2010
140
vi file.txt
mC
j
y'C
G
collage)
p
u
:e!
:w f.txt
(Marque la position du curseur avec la lettre “C” pour indiquer un début de zone)
(Déplacement du curseur pour indiquer la fin de la zone à copier)
(Copie la zone délimitée par la marque “C” et le curseur dans le tampon courant)
(Déplacement du curseur en fin de fichier pour indiquer la ligne dessus le (Collage du tampon sur la ligne en dessous du curseur)
(Revenir avant le collage du tampon)
(Recharger le fichier original)
(Enregistrement des modifications dans le fichier 'f.txt”)
Les services © Patrick Hautrive !;~) 2010
141
EMACS
L'éditeur Emacs
L'éditeur Emacs (Editor Macro) est écrit en langage LISP par RMS (Richard M. Stallman). Richard M Stallman est le fondateur de la FSF (Free Software Foundation), le concepteur de l'acronyme récursif GNU (Gnu is Not Unix), et le défenseur de la licence Gnu GPL (General Public Licence).
L'éditeur Emacs (emacs21) est un outil puissant et souple qui pourrait servir d'unique interface pour un utilisateur avertit. “Emacs est un système d'exploitation déguisé en éditeur”. Les séquences de touches (control sequences) permettent de faire toutes les opérations avec le seul clavier. La notation C­X correspond à Ctrl+X, et la notation M­X correspond à Alt+X (meta sequences) qui s'appelait anciennement la touche Meta. De nombreux modules peuvent être ajoutés à l'éditeur Emacs pour en faire une interface multi usage. L'éditeur contient un menu qui donne accès au manuel d'utilisation, à un tutoriel, et à une FAQ (Frequently Asked Questions).
Les spécifications de Emacs
Les spécifications de Emacs
Indentation
Numérotation
Colorisation
Complétion
Tampon circulaire
Fonction
Evaluation
Expressions régulières
Macro instruction
Extension
Programmation
Débogage
Compilation
Les services © Patrick Hautrive !;~) 2010
142
Navigation
Édition
Didacticiel
Tutoriel
Psychiatre
TEXTE
Le format texte
Le format texte ou le format ASCII (American Standard Code for Information Interchange) est le format standard pour les fichiers de configuration des systèmes Unices depuis 1968. Le format texte (raw) est un format qui emploi les caractères non accentués de la table de codage anglophone codé sur 7 bits. C'est le format le plus simple, le plus léger et le plus rapide qui soit, parce qu'il n'a besoin, ni d'être traduit, ni d'être converti, ni d'être structuré, ni d'être transformé en d'autres codes. Sur internet, c'est aussi le format privilégié pour échanger des mails sans fioritures, et pour communiquer sur des chats ou des newsgroups le plus succinctement possible. Les émoticons (smileys), les desseins (ascii art), et même des jeux permettent de s'exprimer graphiquement avec seulement les caractères du clavier (matrix).
Les fichiers au format texte ne requièrent pas d'extension dans un système Gnu Linux. Les fichiers textes ne contiennent que les caractères de contrôle qui font partie de la table de codage, comme la tabulation (tab), la fin de ligne (line feed) ou le retour à la ligne (carriage return). Les fichiers textes peuvent être visualisés en mode ligne de commande dans des afficheurs (pagers), modifiés dans des éditeurs (editors), transformés à l'aide de formateurs (formators) ou de convertisseurs (encoders), structurés dans des logiciels de traitements de texte (office suites) ou de mise en pages (paging). Les fichiers textes peuvent être automatiquement traduit dans une autre langue (ispell).
Les fichiers ascii (man ascii) Pagers
more
less
pg
xpdf acroread
Editors
ed ex jed
vi vim
pine pico
emacs zile
gedit
Formators
Office Suites
Converters
tr
Open Office Org dvips
troff nroff groff Star Office
db2pdf
awk cut
Kword
recode
Abiword
dos2unix
Anyware Office unix2dos
Applixware
flip
Scribus
Latex
Les services © Patrick Hautrive !;~) 2010
143
Formats
ASCII
HTML SGML
XML XHTML
PDF DVI PS
DOCBOOK
IMAGE
Les images
Les fichiers des images contiennent des codes qui sont interprétés par les programmes qui permettent de les visionner. Une image peut être enregistrée dans plusieurs types de formats, et les formats peuvent être libres de droits, ou propriétaires. En général, les programmes spécialisés dans l'affichage des images sont compatibles avec plusieurs formats.
L'enregistrement d'une image peut s'effectuer en variant certains paramètres qui vont modifier l'aspect de l'image, comme le nombre de couleurs, l'entrelacement ou le degré de compression.
Les formats portables
Les formats PAM (Portable Arbitrary Map) et PNM (Portable Anymap) sont des formats simples d'image. Les commandes “man 5 pam” et “man pnm” décrivent ces deux formats pour lesquels il existe de nombreuses commandes de conversion et de transformation vers d'autres formats. Les commandes “apropos pam” et “apropos pnm” listent les commandes qui se réfèrent à ces formats.
Les fichiers images Tools
ImageMagic
PerlMagic
GimpPlugins
ScriptFu
Povray
Giftools
Viewer
Format Converter Commands
ee eog xv xwud
bmp
gthumb
gif
file identify
jpeg
gamma4scanimage
jpg
scanimage
png
gnome­panel­screenshot tiff
flipscreen3d jigsaw
pcx
mirrorblob
dib
pdfimages thumbpdf
tga convert
leaftoppm
411toppm
anytopnm
gimp
gimpr­remote
inkscape
blender
flag
import
montage
combine
identify
display
Screen
matrixview
webcollage
vidwhacker
xscreensaver­getimage
xcursorgen
xwd
glslideshow
Les exemples d'images
import ­window root screen.tiff ; import window.xpm ; montage +frame */jpg mosaic.jpg
for in *.bmp
do convert $i xpm: `basename $i .bmp ` .xpm
done
convert A.jpg B.jpg +append AB.jpg
Les services © Patrick Hautrive !;~) 2010
144
SOUND
Les sons
Les sons sont des ondes, des vibrations, des changements de pression atmosphérique, des perturbations à l'intérieur d'un fluide. Les sons comportent des bruits, des distorsions, des pertes et des interférences. Le système d'acquisition sonore de l'oreille humaine est construite pour entendre les fréquences comprises, en moyenne, entre 20 hertz et 20 Khz (20 Kilo Hertz = 20 000 hertz). Les sons graves sont constitués de fréquences lentes, tandis que les sons aigus sont constitués de fréquences rapides.
La parole est généralement inférieure à 4 000 hertz. Les conversations au téléphone sont échantillonnées 8 000 fois par seconde. C'est­à­dire que 8 000 signaux analogiques sont transmis en une seconde. La musique sur un cdrom est constitué de 44 100 échantillons par seconde.
Les enregistrements sonores
Les enregistrements sonores analogiques sont constitués de valeurs continues (courbe), tandis que les enregistrements numériques sont constitués de valeurs discrètes (seuil).
L'échantillonnage
L'échantillonnage est un ensemble de valeurs prisent à intervalle régulier. La précision indique la hauteur ou la différence entre le point le plus bas et le point le plus haut. La fréquence indique la largeur, plus la fréquence est grande et plus il y a, dans un intervalle donné, d'aller et retour entre le point le plus bas et le point le plus haut. Par exemple, 8 bits permettent de former 2^8=256 graduations différentes, et 16 bits permettent une échelle de précision égale à 2^16=65 535 niveaux différents.
Les technologies
Les technologies multimédias
Les sons synthétiques (wavetable)
Les évènements Midi
Les bibliothèques OpenAL3D
Les bibliothèques SDL
Le serveur OSS (Open Sound System)
Le serveur ALSA (Advanced Linux Sound Architecture)
Les Plugins sont des modules d'extension
Les lecteurs multimédias (players) pour les sons (music readers) et les vidéos (videos players)
Les Codecs sont des bibliothèques pour lire les encodages de certains formats (win32codecs)
Les services © Patrick Hautrive !;~) 2010
145
La configuration du son
Les fichiers sons Commands
play
cplay
rec
vrec
playmidi
randomplay
timidity
kmid
aumix
xmix
kmix
music123
mpeg123
ogg123
soundgrab
vlc
gtick
gem
beast
nyquist
solfege
brahms
csound
bookcase
sndconfig
musiclibrarian
audiolink
tagtool
gqmpeg
gjay
sweep
streamripper
juke
rhythmbox
ripperx
rezound
mp3blaster
mp3burn
mp32ogg
mp3c
juk
jack
Encoders
abcde
abcmidi
abc2ps
mp3splt
mc­foo
fapg
ffmpeg
sfront
puredata
cheesetracker
grip
gramofile
s3mod
zinf
mikmod
madman
creox
ifp­line
tapiir
soundtracker
rosegarden
noteedit
flac
Formats
Readers
Wave (.wav) (.wmv)
Midi (.mid)
Mpeg 2 (.mpg)
Mpeg layer 3 (.mp3)
Mpeg 4
Quictime
Gsm
Divx
Mov
Ogg­vorbis (.ogg)
Oggz­tools
Ogmtools
Vorbis­tools
xmms
xmms­kde
xmms­
goodnight
xine
totem
totem­xine
totem­
gstreamer helix­player
mplayer
amarok
kaffein
alsaplayer
audacity
somaplayer
playmp3list
gdancer
moc
synaesthesia
cecilia
Les services © Patrick Hautrive !;~) 2010
146
Server
quark
mserv
mserv­client
mpd
mpc
ncmpc
gnump3d
vlc
artsd
esd
moosic
mp3roaster
digitaldj
darkice
klog
ncmpc
sox
icecast­server
icecast2
ices2
wmix
quodlibet
gnomoradio
gmpc
glurp
VIDEO
Les images vidéo
Les images vidéo sont souvent constituées d'images et de sons, et de nombreux formats cohabitent ensembles plus ou moins heureusement. Les lecteurs vidéos sont des lecteurs multi média et multi formats. Les lecteurs vidéos sont souvent employés pour lire les fichiers sons (music player). Le lecteur et le serveur VLC (Video Lan Communication) constituent un ensemble de programme complet, pour la lecture de vidéo sur un poste et la distribution sur plusieurs postes d'un même LAN (Local Area Network).
Les services © Patrick Hautrive !;~) 2010
147
SAMBA
Le protocole SMB
Le protocole SMB (Server Message Block) est aussi appelé protocole CIFS (Common Internet File System). Le protocole SMB est un protocole qui a été développé en 1987 par les sociétés Intel et Microsoft. Le protocole SMB est un protocole de partage de fichiers et d'imprimantes pour les systèmes Windows™. Le protocole SMB s'appuie sur le protocole réseau TCP/IP et les RPC (Remote Procedure Calls).
Le serveur Samba
Le serveur Samba a été développé par l'australien Andrew Tridgell afin de pouvoir intégrer des systèmes Unices dans un environnement hétérogène et permettre le partage de fichiers. Le serveur Samba se compose du daemon “smbd” pour le partage de fichier et des imprimantes, du daemon “nmbd” pour la résolution des noms avec le protocole NetBIOS, et de l'exploration des partages WINS (browser). Le support SMBFS doit être inclu dans la compilation du noyau (kernel). Le serveur Samba 2.2 est compatible avec la gestion des ACL (Access control List) et la gestion des Quotas pour les serveurs Windows™ NT qui utilisent le système de fichiers NTFS (New Technology File System) de la société Microsoft. Un serveur Samba peut faire office de PDC (Principal Domain Controler), de BDC (Backup Domain Controler) ou de SAS (Stand Alone Server).
Le fichier de configuration de Samba “/etc/smb.conf” peut s'administrer via une interface web, comme le propose les logiciels SWAT (Samba Web Administration Tool) et Webmin (Web Administration). Le serveur Samba est compatible avec la gestion des impressions sous CUPS (Common Unix Printing System).
Les commandes Samba
la commande «smbclient» sur une station Linux permet l'exploration des partages.
La commande “man 7 smb” décrit la suite des programmes inclus dans Samba.
La commande “man smb.conf” décrit le fichier de configuration de Samba.
La commande “testparm” teste les paramètres du fichier de configuration de Samba smb.conf.
La commande “testprns” permet de tester les imprimantes partagées sur le réseau.
La commande “nmblookup” permet de connaitre le Master Browser.
La commande “smbstatus” permet de connaitre les connexions en cours.
La commande “smbpasswd” permet d'administrer les mots de passe des utilisateurs de Samba.
Les services © Patrick Hautrive !;~) 2010
148
Les types de partage
Deux types de partage peuvent être implémentés, soit au niveau des utilisateurs avec les permissions des utilisateurs (user level), soit au niveau des ressources avec les permissions sur les fichiers (share level). C'est­à­dire que le contrôle de l'accès à une ressource peut s'effectuer en vérifiant les permissions de l'utilisateur qui accède à la ressource, ou en vérifiant si l'utilisateur connait le mot de passe attribué à la ressource. Les mots de passe sont crypté sur le réseau quand le patch du Service PACK3 de Microsoft est installé.
L'installation de Samba
L'installation de Samba
tar xzvf samba­latest.tar.gz
cd samba­version
su
./configure –prefix=/usr/local/samba
make ; make install
export PATH=/usr/local/samba/bin:$PATH
vi /etc/man.config
MANPATH
/usr/local/samba/man
MANPATH_MAP /usr/local/samba/bin
/usr/local/samba/man
mkdir /mnt/samba
vi /etc/samba/pw
username = mister
password = secret
smbmount //server/share /mnt/samba ­o credential=/etc/samba/pw,uid=mister
vi /etc/samba/smb.conf ; vi /etc/smb.conf
tesparm
/etc/rc.d/init.d/samba restart ; /etc/rc.d/init.d/smb restart ; /usr/sbin/samba restart
smbpasswd ­a mister
smbd ­D
nmbd ­D
ps ­ax | grep smbd nmbd
killall ­TERM smbd nmbd
smbmount //server/share /mnt/samba
smbclient //localhost/data /mnt/samba
smb:> ls
smb:> quit
Les services © Patrick Hautrive !;~) 2010
149
Les clients Windows™
Les clients Windows™ peuvent partager des dossiers sur le réseau. Pour partager des fichiers, les clients Windows™ doivent disposer du protocole réseau TCP/IP, d'un serveur de noms DNS (Domain Name Service), d'une adresse IP valide et du bon masque de sous réseau, ou d'un serveur DHCP (Dynamic Host Configuration Protocol).
L'installation d 'un PDC dans un Domaine WINNT
™
L'installation d'un PDC dans un Domaine WINNT™
vi /etc/samba/smb.conf
[Global]
workgroup = DOMAIN
security = user
encrypted password = yes
smbpasswd file = /etc/smbpasswd
domain logons = yes
os level = 34
local master = yes
prefered master = yes
domain master = yes
[Netlogon]
path = /export/samba/logon
public = no
writeable = no
browsable = no
mkdir /export/samba/logon
chmod 770 /export/samba/logon
vi /etc/passwd
windows95$:*:680:100::/dev/null:/dev/null
smbpasswd ­a ­m windwos95
E:\> net view \\server­samba
E:\> net use H:\\serveur­samba
testparm
nmblookup DOMAIN
smbclient ­L serveur­samba
smbclient //serveur­samba/file mypassword ­U pierre
smbclient //printserveur/imprimante ­P
smb> print file.txt
smb> quit
La journalisation de Samba
La journalisation Samba (smb.conf)
vi /etc/samba/smb.conf
[Global]
log file = /var/log/samba/log/%.m
max log file = 5000
debug level = 3
syslog = 1
syslog only = no
/etc/init.d/syslog restart
Les services © Patrick Hautrive !;~) 2010
150
Le fichier /etc/samba/smb.conf
Les lignes commençants par un point virgule (semi­colon) ou un dièse (hash) sont des commentaires. Les lignes entre crochet désignent des groupes de paramètres. Le groupe de paramètres [global] s'applique par défaut à tous les partages et à tous les autres groupes, sauf si un groupe ne précise spécifiquement ses paramètres.
Les services © Patrick Hautrive !;~) 2010
151
Le fichier de configuration de Samba /etc/samba/smb.conf (man smb.conf)
[global]
[homes]
workgroup = FreeSoftwareGroup
comment = Home Directories
server string = %h server L.A.M.P
browseable = no ;writable = no
comment = This is an Open Source Domain
create mask = 0700 ;directory mask = 0700
;wins support = no ;wins server = w.x.y.z
;[netlogon]
;local master = yes ;preferred master = yes
;comment = Network Logon Service
os level = 77 ; public = yes ;domain master = auto ;path = /home/samba/netlogon
;domain master = yes ;domain logons = no
;guest ok = yes ;public = no
;allow hosts = 192.168.1.
127.
;browseable = no ;writable = no
dns proxy = no
;share modes = no
;name resolve order = lmhosts host wins bcast
[printers]
log file = /var/log/samba/log.%m
comment = All Printers
max log size = 1000 ; debug level = 3
browseable = yes ;writable = no ;path = /tmp
;syslog only = no ;syslog = 0
printable = yes ;public = yes
panic action = /usr/share/samba/panic­action %d create mode = 0700
;security = user ;security = share
[print$]
;smb passwd file = /etc/samba/smbpasswd
comment = Printer Drivers
encrypt passwords = true ; null passwords = no
path = /var/lib/samba/printers
passdb backend = tdbsam guest
browseable = yes ;read only = yes
obey pam restrictions = yes
guest ok = no ;write list = root, @ntadmin
;guest account = nobody
;[cdrom]
invalid users = root
;comment = Samba server's CD­ROM
;unix password sync = no
;writable = no ;locking = no ;path = /cdrom
passwd program = /usr/bin/passwd %u
;public = yes
passwd chat = *password:* %n\n *Retype:* %n\n # auto­mount a shared CD­ROM in /etc/fstab :
;pam password change = no
#/dev/scd0
/cdrom
iso9660 ;load printers = yes
defaults,noauto,ro,user 0 0
;printing = bsd ;printcap name = /etc/printcap
;preexec = /bin/mount /cdrom
;printing = cups ;printcap name = cups
;postexec = /bin/umount /cdrom
;printer admin = @ntadmin
[data]
;preserve case = yes
path = /export/data ;read only = no
;short preserve case = yes
map archive = no
;include = /home/samba/etc/smb.conf.%m
[pub]
#SO_RCVBUF=8192 SO_SNDBUF=8192
comment = Public Space
socket options = TCP_NODELAY
path = /home/pub ; read only = no ; public = yes
#message command = /bin/sh ­c writable = yes ; write list = root, admin, @staff
'/usr/bin/linpopup "%f" "%m" %s; rm %s' &
[mister]
;idmap uid = 10000­20000
comment = Joe's Secrets Files
;idmap gid = 10000­20000
path = /usr/joe ;valid user = joe ;public = no
;template shell = /bin/bash
writeable = yes ;create mask = 0700
null passwords = no ; map to guest = never
Les services © Patrick Hautrive !;~) 2010
152
L es imprimantes avec Samba
Les imprimantes avec Samba (smb.conf)
vi /etc/samba/smb.conf
[Global]
printing = cups
load printers = yes
printcap name = lpstat
directory = /tmp
[Printers]
comment = Imprimante laser
browsable = yes
printable = yes
public = yes
L'administration de Samba avec Swat
L'administration de Samba avec Swat
cp /etc/smb.conf /etc/smb.backup
vi /etc/services
swat 901 /tcp
vi /etc/inetd.conf
swat stream tcp nowait.500
swat stream tcp nowait.500
killall ­HUP inetd
firefox http://localhost:901
root /usr/local/samba/bin/swat
root /usr/sbin/tcpd
Les services © Patrick Hautrive !;~) 2010
153
swat
/usr/sbin/swat
L'administration de Samba avec Apache, Swat et CGI
L'administration de Samba avec Apache, Swat et CGI
apt­get install swat httpd
mkdir /home/httpd/html/swat
cp ­R /usr/local/samba/swat /home/httpd/samba/swat
cp /usr/local/samba/bin/swat /etc/httpd/cgi­bin
vi /home/httpd/html/swat/.htaccess
AuthName
“Surveillance Swat”
AuthType
Basic
AuthUserFile /etc/swat.users
require
valid­user
htpasswd ­c /etc/swat­users root
vi /etc/httpd/conf/access.conf
AllowOverride AuthConfig
apachectl restart
/etc/rc.d/init.d/httpd restart
firefox http://localhost/swat/cgi­bin/swat
Un exemple de partage Samba
Un exemple de partage Samba
mkdir /usr/pierre /home/pub /home/staff
useradd paul pierre
chmod 777 /home/pub
passwd paul
chown paul /home/staff
chgrp STAFF /home/staff
chmod 775 /home/staff
smbpasswd ­a pierre
chown pierre /usr/pierre
chmod 700 /usr/pierre
Les services © Patrick Hautrive !;~) 2010
154
La configuration de Samba
La configuration de Samba (www.samba.org)
Commands
smbd
nmbd
smbclient
testparm
net
testprns
smbstatus
nmblookup
smbpasswd
smbmount
smbumount
smbmnt
smbcquotas
smbcacls
smbsh
smbtree
smbtar
smbspool
smbcontrol
rpcclient
cupsaddsmb
Files
pdbedit
findsmb
net
swat
winbindd
wbinfo
editreg
profile
log2pcap
vfstest
ntlm_auth
SWAT
/etc/smb.conf
/etc/samba/smb.conf
/usr/local/samba/lib/smb.conf
/etc/printcap
/etc/pam.d/samba
/etc/samba/pw
/etc/dhcp3/dhclient­enter­hooks.d/samba
/usr/local/samba/docs/htmldocs/*
/usr/local/samba/man
/usr/local/samba/bin
/usr/share/samba/panic­action
/var/log/samba/*
/var/log/samba/log.{smbd,nmbd}
Les exemples de Samba
C:\> NET USE W:\\host\sharename\
testparm /etc/smb.conf
smbclient ­L ­I machine.domain.tld ­U $USER
smbpasswd ­a alice
smb ­a alice
grep joe /etc/passwd | mksmbpasswd.sh >> /etc/smbpasswd
Les services © Patrick Hautrive !;~) 2010
155
man 7 samba
man 5 smb.conf
man 8 net
kernel (SMBFS)
MANPATH
MANPATH_MAP
mksmbpasswd.sh
JAVA
La machine virtuelle
Le langage Java est un langage orienté objet qui a été développé par la société Sun Micro System. Le langage Java est un langage compilé et interprété pour une machine virtuelle. Les systèmes qui ont installés le kit de développement ou JDK (Java Development Kit) et la machine virtuelle Java ou JVM (Java Virtual Machine) sont en mesure d'écrire et de compiler des programmes en Java. Les systèmes qui ont installés l'environnement d'exécution ou JRE (Java Runtime Environment) peuvent exécuter les programmes compilés en Java. Ainsi, les programmes exécutables ne dépendent plus de l'architecture processeur, et les mêmes outils permettent de développer pour plusieurs environnements matériels différents.
La devise de Java est “write once, run anyware” (écrit une seule fois pour tourner partout). Les environnements de développement ANT (Abstract Window Toolkit) et SWING sont des boîtes à outils pour développer en Java. Les programmes Java sont très utilisés sur internet parce qu'ils sont faciles d'utilisation et qu'ils permettent d'ajouter des graphismes attrayants et ludiques sur les sites. Les pages HTML contiennent des morceaux de codes (byte code) qui sont téléchargés et interprétés par les navigateurs des internautes (applets). Une applet peut être testé dans un bac à sable (sandbox). Les exemples de Java
javac
jikes
appletviewer
java ­jar write2latex.jar ­config clean.xml file.sxw file.tex
Les services © Patrick Hautrive !;~) 2010
156
CVS
La gestion des versions
Les programmes RCS (Revision Control System) ou CVS (Concurrent Versions System) sont des services qui permettent de gérer les différentes versions d'un même fichier. Ainsi, les internautes peuvent télécharger sur un site de téléchargement (sourceforge.org) les dernières versions des Logiciels Libres. Le programme CVS permet de suivre les dépôts effectués par les développeurs, et d établir une source officielle unique. Le programme CVS permet également de fusionner deux fichiers différents et modifiés pour n'en former qu'un seul.
Les commandes CVS
La configuration de CVS
Commands
cvs import
cvs commit
cvs init
cvs release
cvs update
cvs checkout
man cvs
Files
CVSROOT
CVSEDITOR
CVS_RSH
Les services © Patrick Hautrive !;~) 2010
157
NFS
Le service NFS
Le service NFS (Network File System) propose le partage de fichiers et d'imprimante sur les réseaux TCP/IP dans un environnement Unix™. Le service NFS est le successeur du protocole UUCP (Unix to Unix Copy Program). Le service NFS peut fonctionner avec le service NIS (Network Information Services). Le service NFS est compatible avec le service d'authentification LDAP (Lightweight Directory Access Protocol).
Le service NFS a été développé par la société Sun Micro System en 1980. La RFC 1094 décrit le fonctionnement du service NFS, et la RFC 1777 décrit l'implémentation du service LDAP dans NFS. Le package NFS 3.0 est compatible avec les noyaux Gnu Linux 2.2.18 qui sont compilés avec les fonctionnalités “NFS File System” et “NFS Server”. Le service NFS fonctionne avec les RPC (Remote Procedure Call) et Portmapper. Le service NFS est lancé lors de la procédure d'initialisation du système (init).
Le service NFS propose le montage à distance de fichiers stockés sur une autre machine. Lors d'une erreur ou d'un dysfonctionnement, le service NFS essaye indéfiniment de monter le système de fichier, ce qui peut accroitre les échanges réseaux et rallonger les temps de réponse.
Un exemple de fichier /etc/exports
Un exemple de fichier de configuration des partages NFS “/etc/exports”
Directory
/home
/home
/pub
/projet
/projet/secret
/
/mnt/cdrom
Network
Options
192.168.1.2
machine.domain.tld
(rw,root_squash)
(rw)
(ro,insecure,root_squash)
*.domain.tld (rw) machine.domain.tld (ro)
(no access)
(rw,no_root_squash)
192.168.1.1/24
192?168.1.9
La configuration de NFS
Les services © Patrick Hautrive !;~) 2010
158
La configuration de NFS
Commands
mount
umount
exports
nfslock
nfsmount
portmap
nfsstat
showmount
rpc
rpcinfo
rpcclient
rpcgen
exportfs
mountd
nfsd
Files
rpc.nfsd
rpc.portmapper
rpc.statd
rpc.rquotad
rpc.mountd
insmod modprobe
/etc/fstab (NFS client)
/etc/exports (NFS server)
/etc/rpc
/var/lock/subsys/nfs
/usr/sbin/pmap_dump
/etc/init.d/mountnfs.sh
/proc/filesystems
/etc/hosts.allow
/etc/host.deny
/etc/sysconfig/nfs
Un exemple de partage NFS
Un exemple de partage NFS
NFS Server apt­get install portmap nfs­common nfs­kernel­server
mkdir /nfs/shared
vi /etc/exports
/nfs/shared
station(ro,root_squash)
/usr/sbin/exportfs ­a
/etc/init.d/nfsserver restart
nfsstat
NFS Client apt­get install portmap nfs­common nfs­user­server
/etc/init.d/portmap start
mkdir /home/shared
vi /etc/fstab
nfsserver:/nfs/shared /home/shared nfs
rw
/etc/init.d/nfs restart
mount ­t nfs nfsserver:/nfs/shared /home/shared
ls /home/shared
Les services © Patrick Hautrive !;~) 2010
159
0 2
man nfs
man exports
man portmap
Les exemple de NFS
vi /etc/exports
/partage
10.0.2.0/24(ro,root_squash)
#/
master(rw)
trusty(rw,no_root_squash)
/projects
proj*.local.domain(rw)
/usr
*.local.domain(ro) @trusted(rw)
/home/joe
pc001(rw,all_squash,anonuid=150,anongid=100)
/pub
(ro,insecure,all_squash)
/tmp
*(ro)
df ­t nfs ; exportfs ;rpcinfo ­p ; /etc/init.d/portmap start
insmod nfs ; modprobe nfs
Les services © Patrick Hautrive !;~) 2010
160
NIS
Le service NIS
Le service NIS permet la centralisation et l'automatisation de l'administration d'un réseaux Unix™. Le service NIS propose d'administrer les informations d'adressage des stations, d'harmoniser les fichiers de configuration, et de distribuer les informations de compte des utilisateurs sur tous le réseau. Avec le service NIS, les noms des comptes et leur numéro d'identifiant (uid), et les noms des groupes et leur identifiant (gid) sont toujours les même, ce qui permet le contrôle des permissions sur toutes les ressources partagées du réseau. Le service NIS est le successeur du service YP (Yellow Page) qui fait allusion aux bottins des pages jaunes des services postaux.
La base de données NIS
Le service NIS représente une base de données distribuées à partir d'un serveur central. Le serveur NIS contient une carte des fichiers qui sont distribués sur le réseau (map). Le serveur NIS constitue un domaine (nis domain) où toutes les stations partagent les mêmes informations de comptes (password) et de réseau (network). Le serveur NIS principal est appelé le serveur maitre (nis master) et stocke la base de données de tous les domaines NIS. Un réseau peut être structuré en plusieurs domaines NIS. Les serveurs NIS secondaires recopient régulièrement les informations originales du serveur principal afin de pouvoir les distribuer aux clients plus rapidement. Les clients NIS peuvent être configurés en mode initiative (pull mode), c'est­à­dire que c'est le client qui alimente le serveur NIS avec ses informations.
De nombreux fichiers (maps) peuvent être intégrés à la base de données NIS. Le service NIS est un service de répertoire hiérarchisés et global, compatibles avec les protocoles X500, DAP et LDAP (Lightweight Directory Access Protocole). Le service NIS n'est pas très sécurisé, c'est pourquoi, il est parfois appelé NIS (Network Intruder Services).
La configuration de NIS
La configuration du service NIS
Commands
Files
Maps
/var/yp/ypbuild /var/yp/domainname
/etc/passwd
makedbm
/usr/local/etc/openldap/slapd.conf /etc/group
/etc/hosts
/etc/aliases
/etc/ethers
Les services © Patrick Hautrive !;~) 2010
161
/etc/bootparam
/etc/netmasks
/etc/protocols
/etc/netgroup
/etc/rpc
/etc/services
/etc/ypservers
/etc/publickey
APACHE
Le serveur web Apache
Le serveur Apache (httpd) est le serveur de page web pour plus de 70% des serveurs de sites sur internet. Le code du serveur Apache est issu du code du serveur web NCSA. Les pages web sont écrites en langage HTML (Hyper Text Markup Language) et sont véhiculées sur le réseau internet avec le protocole HTTP (Hyper Text Transfer Protocol) qui fait parti de la pile de protocoles TCP/IP. Le serveur Apache est compatible avec SSL (Secure Socket Layer) qui permet de distribuer des pages internet sécurisées (https). Le serveur Apache est lancé par la procédure d'initialisation du système (init). Les connexions au serveur Apache sont par défaut gérées par le serveur Apache (stand alone), mais elles peuvent également l'être par le super démon internet (inetd).
Le serveur Apache peut être configuré comme serveur Proxy. Le serveur apache peut gérer plusieurs noms de domaine (virtual homing) sur la même adresse IP (internic). Le serveur Apache peut être administré à distance avec le logiciel Webmin. Le serveur Apache permet de réguler les demandes de connexion (threads) et propose également l'équilibrage des charges entre plusieurs machines (load balancing).
Les serveurs LAMP
Les serveurs LAMP (Linux Apache Mysql Php) constituent des solutions intégrées qui sont proposées par des hébergeurs (web hosting), et qui peuvent s'administrer à distance (remote). Les serveurs LAMP sont composées uniquement de Logiciels Libres (Free Software). Les serveurs LAMP sont des machines équipées d'un système d'exploitation libre (linux) sur lequel sont installés, un serveur internet (apache), et une base de données (mysql) qui est interrogées à l'aide de scripts Php (php).
Les modules PHP 4 s'intègrent parfaitement avec le serveur Apache 2 et permettent d'ajouter selon les besoins des fonctionnalités.
Les bibliothèques pour Apache
Le serveur Apache propose de nombreuses bibliothèques (libapache*) qui assurent la compatibilité avec les scripts CGI, Perl, Python, PHP, ASP et JAVASCRIPT, ainsi que l'authentification Kerberos, Radius ou Pam. Le moteur de servlet Tomcat pour Java permet la diffusion de pages XSLT, CSS, RSS ou de MP3, et avec les langages Java, Ruby, et Lisp.
Les services © Patrick Hautrive !;~) 2010
162
Le site internet
Les sites internet peuvent être construits à l'aide de logiciels de composition de page HTML, comme la suite Mozilla qui s'est scindée en plusieurs projets libres, et a évoluée vers le logiciel Nvu, puis vers le logiciel Kompozer. Les fichiers du site internet sont généralement placés dans le répertoire “/var/www/*”, ou “/usr/local/httpd/htdocs/*”, ou le répertoire affecté à la directive DocumentRoot du fichier de configuration “/etc/apache/httpd.conf”.
Par défaut, c'est la page nommée “index.html” qui est chargée, quand aucune autre indication n'est inscrite dans la barre d'adresse URL (Uniform Resource Locator) d'un navigateur. Si aucun fichier “index.html” n'existe à la racine du site (ServerRoot), alors c'est la liste des fichiers contenus dans le répertoire qui est affichée dans le navigateur. Les permissions pour accéder à une ressource peuvent être précisées pour chaque répertoire dans un fichier “.htaccess”.
La configuration pour Apache
La configuration du serveur Apache (httpd) (http://www.apache.org/)
Commands
httpd
apache
apachectl
apache­dbg
apachetop
apache­modconf
apacheconfig
modules­config
htpasswd
htpasswd2
check_forensic
ab
webdruide
slash
axkit
scannerlog
cronolog
vlogger
visitors
logresolve
rotatelogs
Files
/etc/httpd.conf
/etc/httpd/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/apache/httpd.conf
/etc/apache/srm.conf (cgi)
/etc/apache/php3.ini (acl)
/etc/apache/access.conf
/etc/apache/mime.types
/etc/apache/magic
/etc/apache/passwd
/etc/sysconfig/apache2
/etc/logrotate.d/apache
/usr/local/httpd/htdocs/*
/usr/local/httpd/cgi­bin/*
Packages /etc/init.d/apache
apache
/etc/rc5.d/S91apache
apache­common
http_core.c
apache2­utils
mod_so.c
libapr0
.htaccess
Editors
README.DSO
MozillaComposer
man apache
Open Office Org
man uri
Nvu
/var/www/index.html
Kompozer
/var/cache/apache
Peacock
/var/log/message
August
/var/log/httpd/*
Amaya
/var/log/apache
Bluefish
/var/log/apache/error.log
Screem
/var/log/apache/access.log
/var/run/apache.pid
/var/www/html/*
Le chargement de modules
Le fichier de configuration «httpd..conf» peut contenir les directives pour charger les modules nécéssaires (LoadModules AddModules ClearModuleList).
Les services © Patrick Hautrive !;~) 2010
163
Un exemple de script CGI
Un exemple de script CGI (Perl)
vi /etc/http/conf/httpd.conf
vi /home/httpd/cgi­bin.try.pl
#!/usr/bin/perl
print «La date et l'heure \n»;
chmod +x /home/httpd/cgi­bin/try.pl
lynx http://localhost/cgi­bin/try.pl
Le contrôle des accès
Le contrôle des accès au serveur Apache (.htpaccess)
vi /etc/httpd/conf/httpd.conf
<Directory />
Options
AllowOveride
</Directory>
<Directory /home/httpd/html>
OptionsIndexesIncludes
AllowOveride
Order
Allow
AccessFileName
</Directory>
vi /home/httpd/html/private/.htpaccess
password,motdepasse
htpasswd ­e /etc/httpd/conf/users joe
FollowSymlinks
none
FollowSymlinks
none
allow, deny
from all
.htpaccess
#(all but with .htpaccess)
Le fichier /etc/apache/httpd.conf
Le fichier “/etc/apache/httpd.conf” est très documenté. Le site internet http://www.apache.org/ dispose d'exhaustives documentations officielles. L'installation du serveur Apache propose une introduction “/usr/share/doc/apache/apache.intro.html” et des fichiers de configuration à titre d'exemples dans le répertoire “/usr/share/apache/default­configs/*”.
Désormais, le fichier de configuration «httpd..conf» est très bien documenté avec des commentaires pour chaque ligne. Les fichiers de configuration «httpd..conf» pour Apache version 2, contiennent des directives Include qui réfèrent à d'autres fichiers de configuration, chacun spécialisé dans une fonctionnalité particulière, et contenant les directives habituelles. Ainsi, le fichier de configuration original a été scindé en plusieurs fichiers de configuration, permettant une gestion automatisée de chacun d'entre eux par des routines.
Les services © Patrick Hautrive !;~) 2010
164
Le fichier de configuration /etc/apache/httpd.conf
ServerType standalone
ServerRoot /etc/apache
LockFile /var/lock/apache.lock
PidFile /var/run/apache.pid
ScoreBoardFile /var/run/apache.scoreboard
#ResourceConfig /etc/apache/srm.conf
#AccessConfig /etc/apache/access.conf
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 100
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Include /etc/apache/modules.conf
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
AddLanguage en .en
AddLanguage fr .fr
<IfModule mod_negotiation.c>
LanguagePriority en da nl et fr de el it ja pl pt pt­br lb ca es sv
</IfModule>
#CacheNegotiatedDocs
UseCanonicalName Off
TypesConfig /etc/mime.types
DefaultType text/plain
#DefaultType "application/octet­stream" #AddType application/x­httpd­php .php
#AddType application/x­httpd­php­
source .phps
AddType application/x­tar .tgz
AddType image/bmp .bmp
#AddHandler cgi­script .cgi .sh .pl
<IfModule mod_mime_magic.c>
MIMEMagicFile /usr/share/misc/file/magic.mime #AddHandler imap­file map
</IfModule>
#Default charset to iso­8859­1 (http://www.apache.org/info/css­security/).
AddDefaultCharset on
HostnameLookups Off
#MetaDir .web
ErrorLog /var/log/apache/error.log
#MetaSuffix .meta
LogLevel warn
#ErrorDocument 500 "The server down”
LogFormat "%{Referer}i ­> %U" referer
#ErrorDocument 404 /missing.html
LogFormat "%{User­agent}i" agent
#ErrorDocument 404
/cgi­
#CustomLog /var/log/apache/referer.log referer
<IfModule mod_status.c>
bin/missing_handler.pl
#CustomLog /var/log/apache/agent.log agent
ExtendedStatus On
#ErrorDocument 402 </IfModule>
http://server.tld/subscription_info.html
<IfModule mod_backtrace.c>
BrowserMatch "Mozilla/2" nokeepalive
EnableExceptionHook On
Port 80
BrowserMatch "MSIE 4\.0b2;" #BacktraceLog /var/log/apache/backtrace.log
User www­data
nokeepalive downgrade­1.0 force­response­
</IfModule>
Group www­data
1.0
ServerAdmin webmaster@localhost
<IfModule mod_whatkilledus.c>
#ServerName http://123.45.67.89/
<IfModule mod_proxy.c>
EnableExceptionHook On
#ServerName new.host.name
#<Directory proxy:*>
#WhatKilledUsLog ServerName localhost
#Order deny,allow
/var/log/apache/whatkilledus.log
DocumentRoot /var/www
#Deny from all
</IfModule>
#Allow from .your_domain.com
<Directory />
#</Directory>
ServerSignature On
Options SymLinksIfOwnerMatch
#ProxyVia On
#ServerTokens Full
AllowOverride None
#CacheRoot "/var/cache/apache"
#Alias fakename realname
</Directory>
#CacheSize 5
Alias /icons/ /usr/share/apache/icons/
#CacheGcInterval 4
Alias /images/ /usr/share/images/
<Directory /var/www/>
#CacheMaxExpire 24
ScriptAlias /cgi­bin/ /usr/lib/cgi­bin/
Options Indexes Includes #CacheLastModifiedFactor 0.1
IndexOptions FancyIndexing NameWidth=*
FollowSymLinks MultiViews
#CacheDefaultExpire 1
DefaultIcon /icons/unknown.gif
AllowOverride None
#NoCache one.tld two.tld three.tld
#AddDescription "GZIP compressed" .gz
Order allow,deny
</IfModule>
#AddDescription "tar archive" .tar
Allow from all
#ReadmeName README.txt
</Directory>
#NameVirtualHost 12.34.56.78:80
#HeaderName HEADER.txt
#NameVirtualHost 12.34.56.78
IndexIgnore
.??*
*~
*#
HEADER.html <IfModule mod_dir.c>
#<VirtualHost _default_:*>
DirectoryIndex index.html index.htm HEADER.txt RCS CVS *,v *,t
#</VirtualHost>
#IndexIgnore README.*
index.shtml index.cgi index.php
Include /etc/apache/conf.d
AddEncoding x­compress Z
</IfModule>
AddEncoding x­gzip gz tgz
Les services © Patrick Hautrive !;~) 2010
165
Les directives Apache
Les directives Apache (httpd.conf)
Directives
Description and options
ServerType
Mode de lancement du serveur (standalone inetd)
ServerName
Nom réseau du serveur Apache (server network name )
ServerAdmin
@mail de l'administrateur du serveur Apache (mail admin)
ServerRoot
Répertoire des fichiers de configuration du serveur Apache (/etc/httpd)
User
Utilisateur propriétaire du serveur httpd (user daemon owner)
Group
Groupe propriétaire du serveur httpd (group daemon owner)
Port
Numéro du port de connexion (port 80 by default)
Listen
Activation de plusieurs adresses IP pour le même serveur (host:port @IP)
ServerAlias
Alias de nom pour différents serveurs (Virtual host)
AccessConfig
Chemin du fichier de contrôle des connexions (/etc/httpd/conf/access.conf)
RessourceConfig
Répertoire pour les scripts CGI (cgi scripts)
ScriptAlias
Répertoire pour les scripts CGI (cgi scripts)
UserDir
DocumentRoot
Pages personnelles publiques
(Public_html → /home/joe/public_html → http://localhost/~joe )
Répertoire pour les pages HTML (/var/www/html or /home/httpd)
TypesConfig
Fichier contenant les types MIMES (/etc/mime.types)
DefaultTypes
Type MIME utilisé par défaut (text/plain)
DirectoryIndex
Affichage automatique de la page index (index.htm or index.html)
ErrorLog
Fichier journal d'enregistrement des erreurs (/var/log/apache/error.log)
LogLevel
Niveau d'alerte pour l'enregistrement des erreurs (warm)
HostNameLookups
Résolution des adresses IP en nom de domain par le serveur Apache (DNS)
VirtualHostDirectory Gestion de plusieurs sites par le même serveur (virtual hosting)
Les services © Patrick Hautrive !;~) 2010
166
Installation d'un site local
Installation d'un site Apache en local
Vi /home/httpd/html/index.html
<HTML>
<HEAD>
<TITLE> Site Apache </TITLE>
<BODY> Try Apache and have fun !;­) </BODY>
</HEAD>
</HTML>
ls /usr/local/apache
httpd
httpd ­h
cd /home/httpd
mkdir conf htdocs logs
vi httpd.conf
httpd ­d /home/httpd/html
httpd ­f /home/httpd/httpd.conf
lynx http://localhos
t:8000/index.html
Installation d e Virtual Host
Installation de Virtual Host (httpd.conf)
Port 80
Listen 172.16.0.1:80
Listen 172.16.0.1:8000
<VirtualHost 172.16.0.1:8000>
DocumentRoot
/www/site1
ServerName
www.site1.org
</VirtualHost>
NameVirtualHost 172.16.0.2
<VirtualHost 172.16.0.2>
DocumentRoot
/www/site2
ServerName
www.site 2
.org
</VirtualHost>
<VirtualHost 172.16.0.2>
DocumentRoot
ServerName
</VirtualHost>
/www/site3
www.site 3
.org
Les services © Patrick Hautrive !;~) 2010
167
Les exemples pour Apache
rpm ­qa | grep apache
rpm ­e apache­1.3.6­7
ls /mntcdrom/RedHat/RPMS
rpm ­ivh apache­*.rpm
apt­get install apache
apt­get install libapache­mod­php4
apt­get remove apache
apachectl configtest
vi /etc/apache/httpd.conf
AddType application/x­httpd­php
.php
AddType application/x­httpd­php­source
.phps
vi /etc/apache/modules.conf
LoadModule php4_module
/usr/lib/apache/1.3/libphp4.so
httpd ­f /etc/httpd.conf
httpd ­l
ls /etc/rc.d/rc3.d/S85httpd
/etc/rc.d/init.d/httpd restart
cp /etc/httpd/access.conf­dist /etc/httpd/access.conf
cp index.html /usr/local/httpd/htdocs/index.html
lynx http://localhost:2112
/usr/local/apache/src/httpd ­f /usr/local/apache/conf/httpd.conf
vi /etc/httpd/httpd.conf
Port 80
User nobody
Group nogroup
ServerAdmin [email protected]
ServerRoot /usr/local/apache
ErrorLog /var/log/apache/error.log
ServerName www.domain.tld
less /etc/httpd/modules.conf
vi /etc/httpd/access.conf
UserDir public­html
vi /etc/httpd/srm.conf
DocumentRoot /urs/local/apache/htdocs
ScriptAlias
/cgi­bin/
/usr/local/apache/cgi­bin/
/usr/sbin/apache­modconf apache
ls /home/httpd/html/index.html
ls /home/httpd/cgi­bin/; ls /home/httpd/icons/
Les services © Patrick Hautrive !;~) 2010
168
MESSAGE
La messagerie électronique
La messagerie électronique (electronical mail) est le service le plus plébiscité sur internet. La messagerie électronique a introduit la communication numérique asynchrone, c'est­à­dire que les abonnées relèvent et répondent à leur courrier quand ils le décident. Le contenu du fichier “~/.signature”, quand il existe, est concaténé à tous les messages sortants.
Les messages électroniques peuvent être écrit en texte (plain) ou en HTML, et contenir des pièces jointes (attached file) au format MIME ou UUENCODE. Le protocole SMTP (Simple Mail Transfer Protocol) est le protocole qui permet à un client d'envoyer un message (sending). Les protocoles POP3 (Post Office Protocol version 3) et IMAP4 (Internet Message Advertising Protocol version 4) permettent de récupérer son courrier électronique (receiving).
Les messages non sollicités
Les logiciels de filtrage des messages, comme Spamassassin, permettent de réduire la réception des messages non sollicités (spam). Certaines sociétés de markéting direct sont spécialisées dans le commerce illicite de liste ou de base de données d'adresse mail (data base), plus ou moins ciblées.
Toutefois, il s'avère plus efficace et peut être plus judicieux de se servir de plusieurs adresses de messagerie, ou d'empêcher les programmes de recherche d'adresse (mail bot) de trouver la sienne, soit en la divisant (me AT provider FR), soit en y ajoutant un mot qu'il faudra enlever à la main (me no­
spam AT provider FR).
Les serveurs de messagerie
Les serveurs de messagerie sont des programmes qui restent à l'écoute (daemon) des connexions SMTP entrantes (socket) sur le port 25 pour réceptionner le courrier du domaine. Les serveurs de messagerie les plus connus sont Sendmail écrit par Eric Allman et Eric Raymond en 1970, et Postfix écrit par Wietse Venema.
Le serveur Sendmail a la réputation d'être complexe, tandis que le serveur Postfix a la réputation d'être plus simple. Le serveur sendmail utilise un pré processeur de macro M4 pour générer son fichier de configuration “/etc/sendmail.cf”.
Les listes de diffusion
Les serveurs de liste de diffusion (mailing list) permettent d'envoyer la même copie d'une conversation Les services © Patrick Hautrive !;~) 2010
169
à tous les abonnés (subscribe). Les messages peuvent être modérés (moderated), c'est­à­dire qu'ils sont filtrés par une personne qui fait office de modérateur dans les conversations. Les messages peuvent être envoyés sous la forme de résumés hebdomadaires (digest). Une liste de diffusion peut être ouverte (open) ou fermée, c'est­à­dire réservée à des personnes choisies (private).
Les serveurs de liste de diffusion les plus connus sont Majordomo, Listserv et Listpro.
Les serveurs de forum
Les serveurs de forum (news group) permettent également la participation à des conversations avec de nombreux interlocuteurs, et l'échange de messages qui sont distribués à toutes les personnes connectées au serveur. Les messages ne sont pas adressés à des abonnés, les messages sont adressés aux personnes connectées à un moment donné. C'est l'utilisateur qui se connecte à un réseau de serveurs de forum (usenet) avec le protocole NNTP (Network News Transport Protocol) et qui rapatrie chez lui d'abord les entêtes des messages (headers) et ensuite chacun des messages qu'il consulte (body content).
Les serveurs de forum les plus connus sont Inn, Collabra, Diablo et Leafnode.
Le modèle de messagerie
Le modèle de messagerie client serveur est un modèle d'architecture à fichiers partagés ou les messages sont adressés jusqu'au destinataire (push). En théorie, le modèle de messagerie est constitué de quatre composantes différentes : MX (Mail Exchanger), MUA (Mail User Agent), MTA (Mail Transfer Agent) et MDA (Mail Delivery Agent).
Le MUA est le logiciel de messagerie chez le client expéditeur (mailer) qui envoie les messages au MTA correspondant au fournisseur de son adresse électronique (send provider). Le MTA expédie le message sur le réseau à un MX qui le relais à un autre MX (exchanger) jusqu'au MDA correspondant au fournisseur de l'adresse électronique du destinataire (receive provider). Le MDA du client destinataire stocke le message dans sa boite mail (mail box), et lui envoie une copie du message quand celui­ci relève son courrier avec son logiciel de messagerie (mailer).
Les services © Patrick Hautrive !;~) 2010
170
La configuration de la messagerie
La configuration de la messagerie électronique
Protocols
POP 3
IMAP 4
SMTP
NNTP
UUCP
TCP/IP
Commands
bogolexer
countmail
compose
edit
error
formail
from
kmailservice
ksendbugmail
local
mailaddr
mailmail
mailq
mailstat
mbox
mcmfmt
Servers
mutt_dotlock
newaliases
pickup
popclient
postdrop
postlock
print
procmailex
procmailrc
procmailsc
rmail
run­mailcap
see
showq
virtual
xbiff
smtp
pop imap2 imap3 procmail
fetchmail
sendmail
postfix
cc:mail
majordomo
listserv
listpro
innd nnrpd
collabra
diablo
leafnode
Spamassassin
(port 25)
(port 110)
(port 143)
(port 220)
(port 110)
Les entêtes de messages
Les entêtes de messages
TO:
FROM:
CC:
BCC:
SUBJECT:
MESSAGE:
JOIN:
Destinataire
Expéditeur
Carbon Copy
Blind Carbon Copy
Sujet du message
Corps du message
Pièces jointes au message
Les exemples pour la messagerie
mail [email protected] < todo.txt
/usr/lib/sendmail ­bd ­q 30m
Les services © Patrick Hautrive !;~) 2010
171
Files
Clients
/etc/services
/etc/aliases
/etc/aliases.db
/etc/mailcapopos /etc/mailcap.order
/etc/mailname
/etc/mail.rc
~/.muttrc
~/.signature
/etc/sendmail.cf
/etc/sendmail.hf
/var/log/sendmail.st
/var/spool/mqueue/*
/var/run/sendmail.pid
/etc/sysconfig/mail
nn
trn
tin
elm
mail
mailx
kmail
mutt
emacs
biff
evolution
mozilla
POSTFIX
Le serveur de Postfix
Le serveur Postfix utilise les bibliothèques DB3­Devel. Un serveur Postfix permet de gérer l'adressage des messages (mail), les listes de diffusion (mailing list), le filtrage des messages (anti spam), la vérification de la présence de code malveillant (anti virus), l'authentification SASL (authentication) et les domaines virtuels (virtual domain). Le service de messagerie Postfix est lancé lors de la procédure d'initialisation du système (init).
La commande “locate postfix” liste tous les fichiers comprenant la clef “postfix”.
La commande “apropos postfix” liste toutes les commandes qui se réfèrent à “postfix”.
La commande “man postfix” décrit le fonctionnement du serveur de messagerie “postfix”.
La commande “apt­cache search postfix” recherche dans les packages Debian le motif “postfix”.
La commande “apt­cache show postfix” montre la description du package Debian nommé “postfix”.
La configuration de Postfix
La configuration du serveur de messagerie Postfix
Commands
locate postfix
apropos postfix
man postfix
access
aliases
body_checks
bounce
canonical
cidr_table
cleanup
defer
error
flush
header_checks
ldap_table
lmtp
local
mailq
master
mysql_table
newaliases
oqmgr
pcre_table
pgsql_table
pickup
pipe
postalias
postcat
postconf
postdrop
postfix
postkick
postlock
postlog
postmap
postqueue
postsuper
proxymap
qmgr
qmqpd
qshape
regexp_table
relocated
Files
sendmail
showq
smtp
smtpd
spawn
tlsmgr
trace
transport
trivial­rewrite
verify
virtual
smtp­sink
smtp­source
/etc/aliases
/etc/postfix/main.cf
/etc/postfix/master.cf
/etc/postfix/postfix­script
/etc/postfix/postfix­files /etc/postfix/post­install
/etc/postfix/dynamicmaps.cf
/etc/postfix/sasl/*
/etc/sysconfig/postfix
/var/spool/mail/$USER
/var/spool/postfix/*
/var/spool/maillog
/var/spool/mailq
/usr/lib/postfix/*
Les services © Patrick Hautrive !;~) 2010
172
Les exemple s pour Postfix
rpm ­qa | grep bd3
rpm ­i db3­devel
dpkg ­l libdb3
man qmgr
mv postfix.1.1.11.tar.gz /usr/local/src
adduser postfix
groupadd postdrop
cd /usr/local/src
tar xzvf postfix.1.1.11.tar.gz
cd postfix.1.1.11
less INSTALL
make && make install
/usr/sbin/postfix
/usr/libexec/postfix
postfix flush
ln ­s /etc/rc.d/init.d/postfix /etc/rc.d/rc3.d/S97postfix
ln ­s /etc/rc.d/init.d/postfix /etc/rc.d/rc0.d/K37postfix
Les services © Patrick Hautrive !;~) 2010
173
IPTABLES
Le pare feu
Un pare feu (firewall) est un dispositif de sécurité, qui filtre les paquets réseaux et qui repose sur l'analyse des entêtes (headers) du protocole TCP/IP. Un pare feu peut être un matériel spécifique (router), un système dédié (server) ou une application intégrée à une station (monitor). Un pare feu est généralement placé à l'entrée d'un sous réseau (subnet) afin d'en surveiller les connexions et les données entrantes, avec pour objectif d'éviter les intrusions (intruder). Un pare feu peut­être également configurer pour filtrer les connexions sortantes d'un réseau local (LAN) vers Internet (WAN).
Un pare feu configuré pour faire de la translation d'adresse (NAT) transformera tous les paquets sortants (outgoing) de telle sorte que seule l'adresse IP Internet du pare feu apparaissent depuis l'extérieur (mascarade). Les réponses provenant de l'extérieur (incoming) seront aussi transformées par le pare feu, et transmises aux différentes stations locales qui les ont émises.
Un pare feu qui s'intercale entre un réseau extérieur et un réseau intérieur doit disposer d'au moins deux cartes réseaux (netcard interface), l'une connectée à internet et l'autre connectée au réseau local.
Le pare feu i ptables Les pare feux pour les systèmes GNU/Linux sont ipchains pour les noyaux Linux 2.4 et iptables pour les noyaux Linux 2.4 et supérieurs. Le pare feu iptables est le successeur de ipchains et appartient au package Netfilter. Le pare feu iptables inspecte les paquets TCP/IP version IPV4 (ipv4).
Le pare feu iptables est intégré au noyau Linux (kernel) avec plus ou moins de modules (modules). La commande « iptable » est une application qui permet à l'administrateur (user space) de modifier les tables de routage du pare feu Netfilter qui sont compilées dans le noyau du système ou comme modules (kernel space).
Certaines extensions (extensions) au pare feu iptables permettent d'obtenir d'autres fonctionnalités. Le fichier iptables qui contient les instructions pour le pare feu (ipatbles, commands, tables, chains, rules, targets) peut être généré à la main avec un éditeur (text editor), à l'aide de scripts (scripts) ou grâce à un outil (front­end).
Le fonctionnement d'iptables
Le pare feu iptables est constitué de quatre tables (filter, nat, mangle, raw) dans lesquelles sont enregistrées les configurations. Chaque table est constituée de plusieurs chaines (chains) prédéfinies ou Les services © Patrick Hautrive !;~) 2010
174
personnalisées. Les chaines d'une table contiennent des règles (rules) qui sont examinées par le pare feu pour chaque paquet émis ou reçus. Pour chaque paquet, les règles sont examinées une à une dans l'ordre dans lequel celles­ci sont écrites. Quand une règle ne s'applique pas au paquet, alors la règle suivante est comparée au paquet, et ainsi de suite jusqu'à ce qu'une règle s'applique, ou jusqu'à la dernière règle du pare feu. Si le pare feu n'a trouvé aucune règle qui s'applique au paquet, ou si l'une de celles­ci indique de le retourner (return), alors la politique générale (policy) de la chaine s'applique au paquet.
Quand une règle est ajoutée à une chaine, la nouvelle règle est enregistrée à la suite des autres (apend), à moins que ne soit spécifié l'emplacement précis où celle­ci doit se trouver dans la chaine.
Chaque règle est constituée de la commande du pare feu (iptables), du nom éventuel de la table (table), de la commande à appliquer (command) pour cette règle, du nom de la chaine (chain) dans laquelle cette règle s'insère, des caractéristiques TCP du paquet (matches) et de l'action à appliquer en cas de concordance (target). L'action peut­être une action prédéfinie (jump) ou le renvoi à une autre chaine personnalisée pour la même table (user defined chain).
Les actions prédéfinies consiste à accepter le paquet (accept), à le laisser tomber (drop), à le placer dans une liste d'attente (queue) où il sera confié à un espace utilisateur (user space), ou à le retourner (return), c'est­à­dire à lui appliquer la politique générale de la chaine (policy).
Les tables
Le pare feu iptables est constitué de quatre tables indépendantes (filter, nat, mangle, raw). Chaque table contient des chaines prédéfinies (builtin).
1. La table « filter » est la table par défaut (default) du pare feu.
2. La table « nat » est la table s'occupe de la translation d'adresse ou NAT (Network Address Translation). La table « nat » modifie les paquets émis depuis le réseau local (established) et gère les paquets qui tentent d'établir de nouvelles connexions (new connexion).
3. La table « mangle » est la table qui modifie les caractéristiques TCP des paquets.
4. La table « raw » est la table qui définie les exceptions (exemption) aux autres tables et qui met en œuvre les priorités particulières pour certains paquets, lorsque celles­ci sont définies. La table « raw » utilise une action prédéfinie particulière (notrack) et une extension particulière au pare feu iptables (ip_conntrack).
Les chaines
Le pare feu iptables contient des chaines prédéfinies (builtin) pour chacune des quatre tables, mais des chaines personnalisées peuvent également être définies (user define chain).
Les services © Patrick Hautrive !;~) 2010
175
La table « filter » contient les chaines prédéfinies INPUT, FORWARD et OUTPUT. La table « nat » contient les chaines prédéfinies PREROUTING, OUTPUT et POSTROUTING. La table « mangle » contient les chaines prédéfinies PREROUTING, INPUT, FORWARD, OUTPUT et POSTROUTING. La table « raw » contient les chaines prédéfinies PREROUTING et OUTPUT.
L'ordre des chaines
Chaque table contient des chaines (chains) qui sont lus par le pare feu dans l'ordre. Chaque chaine contient des règles qui sont lus dans l'ordre, dans lequel celles­ci ont été écrites, les unes après les autres, de la plus générale et de la plus libérale, à la plus spécifique et à la plus contraignante. L'ordre des chaines est très important parce que le pare feu appliquera au paquet qu'il examine l'action (rule) de la première chaine qui correspond exactement au paquet.
Lorsqu'une règle est ajoutée au pare feu, et qu'aucune table n'est spécifiée avec l'option « ­t », cette ligne est ajouté à la fin de la chaine correspondante de la table de filtrage (filter), qui est la table par défaut (default).
Les chaines prédéfinies
1. La chaine PREROUTING concerne les paquets entrants (incoming) qu'ils viennent de l'extérieur depuis l'une des cartes réseaux (network interface) ou qu'ils soient générés par la machine qui héberge le pare feu. Ces paquets seront modifiés (altered) dès leur arrivée dans le pare feu, qu'ils soient destinés à la machine locale hébergeant le pare feu (server) ou qu'ils soient destinés à être routés vers une autre des interfaces réseaux (network interfaces).
2. La chaine INPUT concerne les paquets entrants (incoming) qui sont destinés à la machine locale (local delivery routing table). Selon la man page d'iptables, il est mentionné que la chaine INPUT concernerait des paquets destinés aux connexions de la machine sur laquelle est installé le pare feu (local socket). Ce serait peut­être le cas par exemple des connexions établies avec l'un des services (server) qui pourraient être installés sur la même machine que le pare feu. La chaine INPUT s'appliquerait dans ce cas à la carte réseau qui est connectée à l'extérieur (WAN). Toutefois, sur le site d'iptables.org, il est stipulé que la chaine INPUT n'a rien à voir avec les connexions provenant de l'extérieur (socket)...
3. La chaine FORWARD concerne des paquets qui transitent par le pare feu. Ces paquets sont générés à l'extérieur de la machine hébergeant le pare feu et sont destinés à une autre machine. La chaine FORWARD traite les paquets entrants (incoming) qui traversent le pare feu, et qui seront transmis vers un autre réseau (outgoing). La chaine FORWARD s'applique aux paquets reçus sur l'une des cartes réseaux et émis sur l'une des autres cartes réseaux. En générale, la chaine FORWARD s'occupe des paquets modifiés (mascarade) par le mécanisme de translation d'adresse (NAT) et routés (routed) entre le réseau local (LAN) et le réseau Internet (WAN).
4. La chaine OUTPUT concerne les paquets sortants (outgoing) qui sont émis par la machine hébergeant le pare feu. Ces paquets peuvent être destinés à la machine hébergeant le pare feu ou Les services © Patrick Hautrive !;~) 2010
176
être destinés à être routés vers l'extérieur. Ces paquets sortants peuvent être émis, soit par l'un des services installés sur le pare feu (server), soit par une autre station depuis l'intérieur du réseau local (LAN) dans le cas d'une translation d'adresses (NAT).
5. La chaine POSTROUTING concerne les paquets sortants (outgoing) qui ont été routés (routed) et qui peuvent être modifiés (altered) avant leur émission sur l'une des interfaces réseaux. Ces paquets peuvent être destinés à la machine hébergeant le pare feu (server) ou être destinés à une autre machine, que ce soit une machine appartenant au réseau local (LAN) ou au réseau extérieur (WAN).
Les spécifications pour iptables
Les spécifications du pare feu iptables (Netfilter)
Le pare feu iptables est disponible pour les noyaux 2.4 (kernel 2.4)
Le filtrage des paquets (packets filtering)
La translation des adresses IP (masquerade)
Le suivi des connexions (connexion tracking)
La lecture séquentielle des règles des chaînes (order)
Les chaines pour le filtrage des paquets: INPUT, FORWARD et OUTPUT
Les chaines pour la translation d'adresse: PREROUTING, OUTPUT et POSTROUTING
Les chaines personnalisées (user­define)
L'incrémentation de compteurs de paquets (counter) et des compteurs d'octets (byte)
Les critères de sélection portent sur les entêtes (headers) et les drapeaux (flags) des paquets
Les modules d'extension pour les critères (parameters), les politiques (targets) et les protocoles
Les services © Patrick Hautrive !;~) 2010
177
Le shéma d'iptables ( http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing) Incoming trafic (Network A) (network interface Eth0)
|
V
+----------+
|PREROUTING|
+----------+
|
raw
| <--------------+
| mangle |
|
|
nat
|
|
+----------+
|
|
|
Routing
|
+- Decision-+
|
|
|
|
V
V
|
Local
Remote
|
Destination
Destination
|
|
|
|
V
V
|
+--------+ +---------+
|
| INPUT | | FORWARD |
|
+--------+ +---------+
|
| mangle | | mangle |
|
| filter | | filter |
|
+--------+ +---------+
|
|
|
|
V
|
|
LocalMachine
|
|
|
|
|
V
|
|
Routing Decision |
|
|
|
|
V
|
|
+--------+
|
|
| OUTPUT |
|
|
+--------+
|
|
| raw
|
|
|
| mangle |
|
|
| nat
|
|
|
| filter |
|
|
+--------+
|
|
|
+-------------+
|
|
| POSTROUTING |
Local
+----> +-------------+ --> Traffic
|
mangle
|
|
nat
|
+-------------+
|
V
Outgoing trafic (Network B) (network interface Eth0)
Les services © Patrick Hautrive !;~) 2010
178
Les tables pour iptables
Le pare feu iptables est constitué principalement de trois tables (tables) dans lesquelles sont enregistrées les configurations. La première table (filter) concerne le filtrage des paquets. La deuxième table (nat) s'occupe de la translation des adresses ou NAT (Network Address Translation). La troisième table (mangle) est utilisée pour effectuer les modifications dans les champs des entêtes. Une quatrième table dite brute (raw) peut être mise en place pour effectuer des opérations particulières sur les paquets TCP.
Les chaines
pour iptables
Le pare feu iptables distingue les fonctions de filtrage et des fonctions de translation d'adresse. Le pare feu iptables est organisé en parties distinctes, appelées des chaines (builtin chains). Les chaines OUTPUT, INPUT et FORWARD sont utilisées pour le filtrage (filtering), tandis que les chaines OUTPUT, PREROUTING et POSTROUTING sont utilisées pour la translation des adresses (masquerade). L'administrateur peut également construire des chaines qu'il définit lui même (user define). Les chaines FORWARD, PREROUTING et POSTROUTING requièrent de disposer de deux cartes réseaux, chacune étant configurée avec un masque de sous réseau différent.
Chacune des chaines peut être constituée d'une ou de plusieurs règles (rules) qui sont ordonnées (ordered) et numérotées (numbered). Une règle peut être formée d'un ou de plusieurs critères (parameters) de sélection ou de comparaison. Tous les paquets concernés par une chaine traversent successivement toutes les règles de la chaine, jusqu'à ce qu'une de ces règles s'applique au paquet. Si aucune règle ne s'appliquent au paquet, alors c'est la politique générale de la chaine (policy) qui s'applique au paquet.
Quand tous les critères (parameters) d'une règle s'appliquent à un paquet, alors l'une des actions prédéfinies (verdict) ou l'une des actions définies par l'une des extensions du pare feu (target) associée à cette règle est administrée au paquet, et un autre paquet peut être analysé par le pare feu. Quand les critères d'une règle ne s'appliquent pas à un paquet, alors le paquet est examiné par la règle suivante dans l'ordre de la chaine, et ainsi de suite. Certaine action, comme ULOG, peuvent être administrée, mais le paquet continu a être analysé par la règle suivante (non terminating target).
Les chaines
de filtrage
La chaine INPUT filtre les paquets entrants, tandis que la chaine OUTPUT analyse les paquets sortants. La chaine FORWARD permet de rediriger les paquets d'un segment de réseau vers un autre.
Les services © Patrick Hautrive !;~) 2010
179
Les chaines
de translation
Les chaines pour la translation d'adresse sont consultées uniquement lors de la création d'une nouvelle connexion. La chaine PREROUTING modifie les paquets dès qu'ils arrivent, tandis que la chaine POSTROUTING les modifie quand ils sont routés.
Le traitement séquentiel
Les règles s'enchainent séquentiellement selon l'ordre d'apparition dans la chaine. L'action (target) de la première règle qui correspond à un paquet s'applique, et les règles suivantes ne sont pas examinées. Ainsi, l'ordre des règles est déterminant pour le bon fonctionnement d'un pare feu. Les règles doivent être ordonnées, du cas le plus général, vers le cas le plus particulier, et se terminer par une règle par défaut qui s'applique à tous les paquets ayant traversés entièrement la chaine. Plus le nombre de règles à l'intérieur d'une chaine est important, et plus le travail du pare feu pour chaque paquet peut être conséquent. C'est pourquoi, les paquets les plus courants devrait trouver rapidement une règle qui leur correspondent.
Le filtrage doit être composé, en premier des filtres les plus larges, et s'affiner petit à petit. Autrement dit, les fils des grilles ou les mailles des filets successifs doivent être organisés pour se resserrer de plus en plus. La dernière règle doit pouvoir s'appliquer à tous les paquets ayant traversés la chaine. La dernière règle est la règle qui doit s'appliquer à tous les paquets qui ne correspondent à aucune des règles précédentes.
Le principe de filtrage
Le meilleur principe de filtrage est d'interdire tout (deny all), sauf ce qui est explicitement autorisé (explicit), plutôt que d'autoriser tout (allow all) implicitement (implicit), et de n'interdire que ce qui est reconnu comme inacceptable.
Dans les deux cas, il y a des aménagements à effectuer régulièrement, mais dans le premier cas, les aménagements sont positifs, l'administrateur autorise quelque chose de nouveau considéré comme souhaitable, tandis que dans le second cas, les aménagements sont négatifs, l'administrateur interdit ce qu'il vient de reconnaitre comme inacceptable.
Les critères d'une règle
Les règles sont construites à partir des champs des entêtes TCP/IP des paquets (headers) et peuvent concerner toute les couches du modèle OSI des protocoles réseaux. Les règles peuvent être formées d'un ou de plusieurs critères (parameters) qui s'accumulent. Tous les critères d'une règle doivent correspondre exactement au paquet pour que la politique de la règle s'applique au paquet. Les critères sont reliés entre eux par l'opérateur logique implicite ET (and). L'opérateur logique de négation NON Les services © Patrick Hautrive !;~) 2010
180
(not) peut être également utilisé pour désigner la complémentarité d'un critère (inverse). L'opérateur de négation est le point d'exclamation (“!”) qui permet de formuler le contraire d'un critère.
Les critères (parameters) peuvent être basés sur le protocole (protocol), la carte réseau (interface), l'adresse source (@source) ou l'adresse de destination (@destination), le port source (sport) ou le port de destination (dport), type de connexion (sync) ou le type de paquet (fragment). Les protocoles qui sont reconnus par le pare feu iptables sont les protocoles TCP (tcp), UDP (udp), ICMP (icmp), BGP (bgp) et IPSEC (ipsec).
Les modules d'extension
D'autres critères (extension match) et d'autres politiques (targets extension) peuvent être indiqués avec des modules d'extension (modules) qui doivent être intégrés ou chargés par le noyau (kernel). Les modules d'extensions permettent d'affiner les critères, comme l'état (state) des connexions (INVALID, ESTABLISHED, NEW, RELATED, SNAT, DNAT), l'heure de connexion (time), la vitesse de connexion (rate), les adresses physiques des interfaces (mac), les types d'adresses réseaux (address type), les plages d'adresse (address range), les types de protocoles (protocol), les drapeaux (flag) des entêtes (SYN, ACK, FIN, RST, URG, PSH, ALL, NONE), les identifiants des propriétaires (owner) des paquets, ou les structures de paquets inhabituels (unclean).
En théorie, quand le module existe et qu'il fonctionne, les critères peuvent porter sur n'importe quel autre champ des entêtes (headers) de la pile de protocole TCP/IP (TOS, DSCP, ECN, CWR, ECE, ECT, ESP, FLC, MSS, TTL).
Les compteurs des règles
Quand un paquet correspond aux critères d'une règle (match), alors la politique de la règle (target) s'applique au paquet (packet), et le compteur de la règle (packet counter) est incrémenté. Les règles disposent également d'un compteur d'octets (byte counter) qui permet de surveiller quantitativement le trafic.
Les politiques des règles
Chaque règle est associé à une politique (target). La politique représente l'action qui est appliquée au paquet qui correspond aux critères de la règle. Les quatre politiques ou actions principales sont de laisser passer le paquet (accept), de l'abandonner (drop), de le transmettre à une zone utilisateur (queue) ou de le retourner à la chaine précédente (return). Les autres politiques sont spécifiques à des modules d'extension. Chaque chaine est définie pour appliquer une politique par défaut (policy).
Les opérations sur les chaines
Les services © Patrick Hautrive !;~) 2010
181
La construction et l'administration des chaines et de leurs règles s'effectuent à l'aide d'opérations ou de commandes. Les opérations permettent de lister (list), d'ajouter (append) en fin de chaine, de supprimer (delete), d'insérer (insert), de déplacer (replace), de vérifier (check) les règles et leur politique (target) à l'intérieur d'une chaine. Les opérations permettent de gérer les compteurs des règles (counter), les délais (timeout), d'indiquer la translation (masquerade). Les opérations permettent également d'insérer (new) et de supprimer (delete) des sous chaines définies par l'administrateur (user­
define).
Les règles d'une chaine sont numérotées à partir de un.
La commande « man iptables » présente le pare feu et la configuration de ces options.
La documentation iptables
La documentation Packet Filtering Howto décrit les mécanismes de filtrage des paquets TCP/IP. La documentation Nat Howto présente la translation d'adresses. Les documentations Netfilter Extensions Howto et Netfilter Hacking Howto présentent les caractéristiques qui ne sont pas incluses dans les paquetages standards et qui requièrent des configurations particulières.
http://www.netfilter.org/documentation/
http://www.linuxreport.org/content/view/26/23/
https://help.ubuntu.com/community/IptablesHowTo
http://jengelh.medozas.de/documents/Chaostables.pdf
http://linux.about.com/od/commands/l/blcmdl8_iptable.htm
http://www.netfilter.org/ http://en.wikipedia.org/wiki/Iptables
http://www.frozentux.net/iptables­tutorial/iptables­tutorial.html
http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing
http://web.mit.edu/rhel­doc/4/RH­DOCS/rhel­rg­en­4/ch­iptables.html
http://artoflinux.blogspot.com/2008/07/iptables­tutorial­for­beginners.html
http://www.yolinux.com/TUTORIALS/LinuxTutorialIptablesNetworkGateway.html
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_U
sing_iptables
Les services © Patrick Hautrive !;~) 2010
182
Tables
Rules & Parameters
Matches Ext. Rules
­­table
filter (default)
nat (address translation)
mangle (QOS, tuning)
raw (optimize patch)
Operations
!
(negation operator) ­m
(­­match)
­p
(tcp,udp,icmp,mac) ­m tcp (port range#:#)
­h
(hide)
­­source­port
­i
(input:eth0, eth+)
­­destination­port
­o
(output:eth0,eth+)
­­tcp­flags
­s
(@ip source)
­m limit (with ­­limit)
­s
(@ip/255.255.255.0) ­m limit ­­limit (rate log)
­A
(append to end)
­s
(@ip/24) (maskbits) ­m limit ­­limit­burst
­C
(check)
­d
(@ip destination)
­m state (­­state)
­D
(delete)
­j
(jump)
NEW
­I
(insert)
To target
ESTABLISHED
­F
(flush all rules)
To user chain
RELATED
­R
(replace)
­b
(bidirectionnal)
INVALID
­L
(list)
­c
(set packet counter) ­m conntrack
­P
(default policy)
­n
(@ip in numérical) ­­ctstate (conntrack mod)
­Z
(counter at zero)
­f
(fragmented packets)
SNAT & DNAT
­N
(new uchain)
­v
(verbose)
­­ctproto
­E
(rename uchain)
­x
(exact value counters) ­­ctorigsrc
­X
(delete uchain)
­­line­numbers
­­ctorigdst
­M ­S (masquerade)
­­modprobe=command
­­ctreplsrc
­M ­L (list nat)
­­tcp­option
­­ctrepldst
­h
(help)
­­source­port (tcp udp)
­­ctstatus
­­delete­chain
­­destination­port (tcp udp) ­­ctexpire
­­tcp­flags
­­dscp (dscp mod)
Chains
SYN ACK FIN RST ­­dscp­class
POSTROUTING (­o)
URG PSH ALL ­­pkt­type (pkttype mod)
INPUT (­i)
NONE
­­tos (typeofservice mod)
FORWARD (­i ­o)
­­syn (SYN packets)
­­ahspi (IPsec mod)
OUTPUT (­o)
­­mss
­­espspi (Ipsec mod)
PREROUTING (­i)
­­icmp­type
­­length (length mod)
user­define
­­mac­source
­­ttl (time to live mod)
­­source­ports
unclean
­­destination­ports
­sport (source port num)
­­ports
­dport (dest. port num)
­­mark
­­ports
­­uid­owner
Targets Builtin
­­gid­owner
ACCEPT
­­pid­owner
DROP (ipchains DENY)
­­sid­owner
REJECT (error message)
­­cmd­owner
QUEUE (user space)
RETURN (default policy)
Les services © Patrick Hautrive !;~) 2010
183
Target Extensions
BALANCE
CLASSIFY
CLUSTERIP
CONNMARK
DNAT (postrouting)
­­to­destination
DSCP
ECN
­­ecn­tcp­remove
LOG
­­log­prefix ­­log­level
­­log­tcp­sequence
­­log­tcp­options
­­log­ip­options
MARK (Iproute2)
­­set­mark
MASQUERADE
­­to­ports
MIRROR
NETMAP
NOTRACK
REDIRECT
­­to­ports
REJECT
­­reject­with
ROUTE
SNAT (prerouting)
­­to­source
TCPMSS
­­set­mss
­­clamp­mss­to­pmtu
TOS
­­set­tos
TRACE
TTL
ULOG (user space)
­­ulog­nlgroup
­­ulog­prefix
­­ulog­cprange
­­ulog­qthreshold
La configuration pour iptables
La configuration du pare feu iptables (Netfilter) (man iptables)
Commands
/sbin/iptables
/sbin/iptables
iptables­restore
iptables­save
ip6tables
ip6tables­save
ip6tables­restore
chkconfig
Tools
acidlab
arptables
netstat­nat
specter
psad
reaim
openvpn
firehol
fwanalog
fwlogwatch
fiaif
shorewall
ebtables
ulogd
NARC
EasyFW
Webmin
GUFW
Scripts
netscript­2.4
uif
guarddog
guidedog
kmyfirewall
knetfilter
lokkit
gnome­lokkit
ferm
filtergen
fireflier­server
fireflier­client­gtk
fireflier­client­kde
fireflier­client­qt
webmin­firewall
Files
Modules
/etc/protocols
/etc/services
/etc/default/iptables
/etc/sysconfig/iptables
/usr/share/doc/iptables/*
/lib/iptables/*
/proc/net/ip_tables_matches
/proc/net/ip_tables_names
/proc/net/ip_tables_targets
iptables_nat
ip_conntrack
ip­conntrack_ftp
iptables­dev
iptstate
ipac­ng
Un script
iptables
Dans cet exemple, le script iptables est un script RC (Run Command), qui est placé dans le répertoire des services lancés lors de la procédure d'initialisation du système « /et/init.d/* ». Le script est activé (start) pour les niveaux d'initialisation 3 et 5 (liens S567 et liens K567).
#!/bin/sh # ­­­ where programs are ­­­­ IPT=/sbin/iptables MOD=/sbin/modprobe # ­­­ interfaces ­­­ LNET=eth1 INET=eth0 # ­­­ incoming connections and services­­­ TCP_INCOMING=ftp,ssh,smtp,domain,http,pop3,https UDP_INCOMING=domain Les services © Patrick Hautrive !;~) 2010
184
# ­­­ loading additional modules ­­­ $MOD ip_conntrack_ftp $MOD ip_conntrack_irc $MOD ip_nat_ftp case "$1" in start) echo "Loading IPTABLES rules" # Flush all tables $IPT ­F
$IPT ­F ­t nat #General Policy
$IPT ­P INPUT DROP
$IPT ­P FORWARD ACCEPT $IPT ­P OUTPUT ACCEPT
# accept everything on loopback device (incoming) $IPT ­A INPUT ­i lo ­j ACCEPT # accept everything on localnet device (incoming) for out localnet $IPT ­A INPUT ­i $LNET ­s 10.0.1.0/24 ­j ACCEPT $IPT ­A INPUT ­i $LNET ­s 10.0.2.0/24 ­j ACCEPT $IPT ­A INPUT ­i $LNET ­s 10.0.3.0/24 ­j ACCEPT # check and catch unclean packages, of course log it !!! $IPT ­A INPUT ­j LOG ­m limit ­­limit 10/hour ­m unclean $IPT ­A INPUT ­j DROP ­m unclean $IPT ­A OUTPUT ­j LOG ­m limit ­­limit 10/hour ­m unclean $IPT ­A OUTPUT ­j DROP ­m unclean $IPT ­A FORWARD ­j LOG ­m limit ­­limit 10/hour ­m unclean $IPT ­A FORWARD ­j DROP ­m unclean # tell the outside world, that we don't have IDENT and SOCKS servers $IPT ­A INPUT ­p tcp ­­dport 113 ­j REJECT ­­reject­with icmp­port­unreachable $IPT ­A INPUT ­p tcp ­­dport 1080 ­j REJECT ­­reject­with icmp­port­unreachable # responding to ping echo request !!! $IPT ­A INPUT ­p icmp ­­icmp­type echo­request ­j ACCEPT # outside world :­) allow everything if our server or net established connection Les services © Patrick Hautrive !;~) 2010
185
$IPT ­A INPUT ­p tcp ­j ACCEPT ­m state ­­state ESTABLISHED,RELATED $IPT ­A INPUT ­p udp ­j ACCEPT ­m state ­­state ESTABLISHED $IPT ­A INPUT ­p icmp ­j ACCEPT ­m state ­­state RELATED,ESTABLISHED # this is what we allow to go out from out network, and this machine $IPT ­A INPUT ­p tcp ­i $INET ­s 0/0 ­j ACCEPT ­m state ­­state NEW ­m multiport ­­destination­port $TCP_INCOMING
$IPT ­A INPUT ­p udp ­i $INET ­s 0/0 ­j ACCEPT ­m state ­­state NEW ­m multiport ­­destination­port $UDP_INCOMING # dynamic NAT (masq) $IPT ­t nat ­A POSTROUTING ­p all ­s 10.0.1.0/24 ­j MASQUERADE $IPT ­t nat ­A POSTROUTING ­p all ­s 10.0.2.0/24 ­j MASQUERADE $IPT ­t nat ­A POSTROUTING ­p all ­s 10.0.3.0/24 ­j MASQUERADE # forwarding $IPT ­t nat ­A PREROUTING ­s 0/0 ­p tcp ­­dport 80 ­m state ­­state NEW,ESTABLISHED,RELATED ­j DNAT ­­to 10.0.3.2:80 # redirection
$IPT ­t nat ­A PREROUTING ­i eth1 ­s 10.0.3.0/28 ­p tcp ­­dport 80 ­j REDIRECT ­­to­port 3128 # log $IPT ­A INPUT ­j LOG ­m limit ­­limit 10/hour $IPT ­A OUTPUT ­j LOG ­m limit ­­limit 10/hour $IPT ­A FORWARD ­j LOG ­m limit ­­limit 10/hour ;; stop) echo "Flushing IPTABLES rules !" $IPT ­P INPUT ACCEPT $IPT ­P OUTPUT ACCEPT $IPT ­P FORWARD ACCEPT $IPT ­F $IPT ­F ­t nat ;; *) echo "Usage: iptables {start|stop}" ;; esac exit 0
Les services © Patrick Hautrive !;~) 2010
186
La configuration /proc
echo 1 >/proc/sys/net/ipv4/tcp_syncookies
echo 1 >/proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
Le forwarding
vi /etc/sysctl.conf net.ipv4.ip_forward = 1
vi /etc/sysconfig/network FORWARD_IPV4=true
La sauvegarde
/sbin/iptables­save > /etc/sysconfig/iptables.rules /sbin/iptables­restore < /etc/sysconfig/iptables.rules Les exemples pour iptables
# iptables ­t [TABLE] ­A [CHAIN] [RULES] ­j [TARGET]
chkconfid ­­del ipchains
chkconfig ­­add iptables
ipchains ­F
service ipchains stop
rmmod ipchains
service iptables start
iptables ­t nat ­n ­L ; iptables ­L ­v
modprobe iptables_nat ; modprobe ip_conntrack ; modprobe ip­conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/services iptables save (Red Hat)
/etc/sysconfig/Susefirewall
(Suse)
/etc/sysconfig/scripts/Suse/firewall2­custom
(Suse)
/sbin/suse/firewall restart
(Suse)
vi /etc/default/iptables
(Debian)
enable_iptables_initrd = true
/etc/init.d/iptables save_active
iptables ­L INPUT
iptables ­F OUTPUT ; iptables ­Z FORWARD ; iptables ­P INPUT DROP
iptables ­A INPUT ­i lo ­j ACCEPT
Les services © Patrick Hautrive !;~) 2010
187
iptables ­N PUTFOR
iptables ­A PUTFOR ­m limit –limit 2/sec ­j LOG
iptables ­A PUTFOR ­m state –state ESTABLISHED,RELATED ­j ACCEPT
iptables ­A PUTFOR ­m state –state NEW ­m tcp ­p tcp –dport 22 ­j ACCEPT
iptables ­A PUTFOR ­j DROP
iptables ­A INPUT ­j PUTFOR
iptables ­A FORWARD ­j PUTFOR
iptables ­t nat ­A POSTROUTING ­p ppp0 ­j MASQUERADE
Les services © Patrick Hautrive !;~) 2010
188
MYSQL
Les bases de données
Les bases de données (data base) sont des ensembles de tables où sont classés et indexés les données ou les enregistrements. Les bases de données relationnelles ou SGBDR (Système de Gestion de Base de Données Relationnelles) relient les tables entre elles par des clefs communes (primary key). Le langage de programmation ou d'interrogation le plus connu pour les bases de données est le SQL (Structured Query Language). Les bases de données les plus connues sont Oracle, Ingres, Adabas, PostgreSQL, Mysql et Open Office.
Les solutions LAMP (Linux Apache Mysql Php) ou LAPP (Linux Apache Postgresql Perl) sont des systèmes intégrés et autonomes composés uniquement de Logiciels Libres. Les bases de données sont interrogeables et administrables en même temps, c'est­à­dire, qu'une base de données fonctionne toujours, alors que des modifications sont effectuées. Afin d'éviter les erreurs ou les doublons dans les enregistrements des données, toutes les modifications doivent être verrouillée (lock file) et validées (commit). Des scripts (“.sql”) peuvent être employés pour automatiser la gestion des bases de données.
La base de données Mysql
La base de données Mysql est employée dans de nombreuses applications comme la messagerie (postfix), les transferts de fichiers (pureftp), la sauvegarde réseau (bacula), l'analyse réseau (snort, nagios) ou les sites de partage de contenus ou CMS (Content management Site). La base de comptes Mysql est indifférente à la casse. La gestion d'une base de données Mysql peut s'effectuer à distance via le module de l'interface de Webmin.
L'installation de Mysql
L'installation de la base de données Mysql
apt­get install mysql­server mysql­client php4­mysql phpmyadmin
./configure –prefix=/usr/local/mysql
make ; make install ; adduser mysql
../script/mysql_install_db
su mysql
vi /etc/passwd
mysql:*:
/usr/local/bin/safe_mysql –log &
/usr/local/bin/mysqladmin version
/etc/rc.d/init.d/mysql restart
mysql ­u root
Les services © Patrick Hautrive !;~) 2010
189
La configuration de Mysql
La configuration de Mysql (man mysql)
Commands
mysql
mysqld
mysqladmin
mysqltcl
msql2mysql
myisamchk
myisamlog
myisampack
mysqlaccess
mysqlbinlog
mysqlbug
mysqlcheck
mysqldump
mysqldumpslow
mysqlerr
mysqlhotcopy
mysqlimport
mysqlmanager
mysqlmanagerc
mysqlshow
mysqltest
dbf2mysql
perror
replace
resolveip
Tools
acidlab­mysql
sqlrelay
mysql_install_db
sql­editor
safe_mysql
pike7
mysql­admin
mtop
mysql­navigator
mytop
mysql­query­browser
dbengine
my_print_defaults
eskuel
mysql_convert_table_format tora
mysql_explain_log
webmin
mysql_find_rows mysql_fix_extensions
mysql_fix_privilege_tables
mysql_install_db
mysql_secure_installation
mysql_setpermission
mysql_table
mysql_tableinfo
mysql_waitpid
mysql_zap
mysqld_multi
mysqld_safe
mysqlmanager­pwgen
pack_isam
resolve_stack_dump
Files
/etc/init.d/mysql
/etc/rc5.d/S20mysql
/etc/rc6.d/K20mysql
/etc/mysql/my.cnf
/etc/my.cnf
/etc/mysql/debian­start
/etc/mysql/debian.cnf
/etc/logrotate.d/*
/etc/logcheck/*
/etc/mysql/debian­log­
rotate.conf
/var/lib/mysql/mysql
/var/lib/mysql/test
/var/cache/mysql
/var/run/mysqld
/usr/share/doc/*
/usr/share/mysql/*
/usr/share/mysql/french/*
/usr/share/mysql/charsets/*
Les commandes SQL
Les commandes SQL (Structured Query Language)
SELECT
INSERT
UPDATE
DELETE
DROP
SET
FLUSH
GRANT
SHOW
DATABASES
TABLES
STATUS
COLUMNS
INDEX
USE
Les exemples pour Mysql
Les services © Patrick Hautrive !;~) 2010
190
Packages
mysql­server
mysql­client
php4­mysql
phpmyadmin
mysql ­u root ­p < create_db.sql
vi /etc/php4/apache/php.ini
extension = mysql.so
mysql ­u root
mysql> show databases;
mysql> SET PASSWORD FOR root=PASSWORD('secret');
mysql> FLUSH PRIVILEGES;
mysql> GRANT ALL PRIVILEGES ON *.* TO mister@localhost IDENTIFY BY 'secret';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP on test.*
TO loop@localhost IDENTIFY BY 'other secret';
mysql> DROP DATABASE IF EXIST bd_test; mysql> SELECT * FROM table_test;
mysql> CREATE DATABASE bd_test;
mysql> SHOW DATABASE;
mysql> USE bd_test;
mysql> CREATE TABLE table_test (id INT NOT NULL auto_increment,
commentaires TEXT, PRIMARY KEY (id));
mysql> INSERT INTO table_test VALUES ('0', 'commentaires');
Les services © Patrick Hautrive !;~) 2010
191
PHP
L'interpréteur PHP
L'interpréteur PHP (Hypertext Pre Processor) se compose d'un noyau Zend et de modules de fonctions. L'interpréteur PHP propose par défaut de multiples fonctions, la gestion des tableaux, des chaines de caractères, des dates et des bases de données. L'interpréteur PHP est multiprocessus, et les modules chargés peuvent être partagés.
Les morceaux de code en PHP sont inclus dans une page HTML, et ils sont interprétés chez le client par le module PHP. Le serveur web Apache doit être compilé avec le module PHP.
L'installation de PHP
L'installation de PHP
tar xzvf php­4.1.1.tar.gz
cd php­4
.configure –with­mysql=/usr/lib/mysql
make ; make install
vi /etc/httpd/httpd.conf
LoadModule
php4­module libexec /libphp4.so
AddModule
mod_php4.c
AddType
application/x­httpd­php
apachectl restart
vi info.php
<?php phpinfo(); ?>
cp info.php /usr/local/httpd/htdocs/
chmod 777 /usr/local/httpd/htdocs/info.php
firefox http://localhost/info.php
Les exemples pour PHP
vi exemple.php
<?php echo “Hello Wordl”; ?>
apt­get install php5
Les exemples de variables pour PHP
$num = 5;
$alpha = “Yes or No”;
$string = “Message”;
Les services © Patrick Hautrive !;~) 2010
192
.php
echo strlen($string);
echo (date(“1 ds of F Y h:i:s A”));
Les exemples de tableaux pour PHP
$tab = array(“tree”,”leaves”);
$tab = array(“tree” ==>1, “leaves” ==> 22);
Les exemples de fonctions pour PHP
function todo($a,$b)
{
return ($a+$b);
}
echo todo(2,3);
Les exemples de boucles pour PHP
$i = 0;
while ($i < 5)
{
echo $i;
$i++;
}
Les exemples de tests pour PHP
$i = 5;
if ($i == 6)
{
echo “The variable equals 6”;
}
else
{
echo “The variable differs from 6”;
}
Les services © Patrick Hautrive !;~) 2010
193
CMS
Le partage de contenu
Les applications CMS (Content Management System) sont des programmes qui permettent de mettre en place très rapidement des sites web complexes et de partager du contenu (files, chat). Les applications CMS sont utilisées pour construire des sites généralistes (portal), des sites de diffusion (blog), des sites d'échange (news), des sites de discussion (forum), des sites de documentation (wiki), des sites commerciaux (e­commerce), des sites de réseaux sociaux (social), de sites de collaboratifs (groupware), des sites d'apprentissage (e­learning), des sites d'annuaire (phonebook), des sites d'entraide (faq), des sites internes (intranet), des sites de publication visuelle (gallery), sonore (music) ou vidéo (motion), etc.
L'application CMS gère de manière automatisée tout le contenu du site, que ce soit, les pages (html), les cadres dans la page (framework), les connexions (account), les partages de documents (upload), les liens (link), etc.
Les avantages des CMS
Les applications CMS permettent de donner une unité visuelle et fonctionnelle à un site. Ainsi, toutes les pages d'un site, qui a été généré par une application CMS, présentent la même organisation (structure), généralement en plusieurs colonnes (colum) avec une bannière (banner) et un menu (bar).
Par ailleurs, la charte graphique (style) du site est toujours respectée, parce qu'un même modèle (skin) sert de base pour toutes les pages. La gestion des boutons (button), des espaces (space), des couleurs (color), des polices (caracter), des versions des documents (date), et des utilisateurs (user) est centralisée et géré par l'application CMS.
Enfin, les applications CMS permettent d'interconnecter les réseaux sociaux (facebook, twitter, youtube).
L'environnement technique d'un CMS
Les applications CMS sont installées sur un ordinateur (system) avec un accès au réseau (internet), adossées à un serveur web (web server), et à un serveur de base de données (database). Les meilleures applications CMS sont des logiciels libres (free software) parce qu'elles ont été programmées par une communauté (community) qui élabore des projets basés sur un code source ouvert (open source). Les programmes sont protégés par une licence libre (gnu gpl license), et les membres de la communauté en assure l'amélioration des fonctionnalités (development), et la correction des erreurs (maintenance).
Les services © Patrick Hautrive !;~) 2010
194
Souvent des architectures LAMP (Linux Apache Mysql Php) sont proposées. Ainsi, la chaine entière de production et de diffusion sur le net est géré par des Logiciels Libres, depuis le système d'exploitation (linux), le serveur web (apache), la base de données (mysql), les scripts de gestion de la base de données (php), et l'application CMS (joomla).
Les types de CMS
Il existe plusieurs types d'applications CMS, selon les technologies qu'elles utilisent, comme les modèles de page (template), des sous programmes (modules), des scripts d'interrogation de la base de données (php, perl, python, tcl) ou des langages de programmes (java, ruby, cocoon, tomcat, c#), des outils d'administration (mysqladmin, phpmyadmin), etc. Les CMS les plus connus sont des logiciels libres comme Wordpress, Joomla, Spip, Drupal, PHP­Nuke, MediaWiki, Zope etc.
Les types de modules
Selon la spécialisation d'un CMS, les modules qui peuvent être intégrés au site web varient, mais en général, ils proposent tous de nombreux modules. Les modules qui sont intégrés au site permettent d'ajouter une fonctionnalité et de rendre le site plus convivial et plus dynamique.
Les modules que l'on retrouve souvent sont les suivants: un calendrier (calendar), une barre de recherche (search), l'ouverture d'un compte (register), la connexion au site (login), une barre de menu déroulant (menu) ou par onglet (tab), un champ pour rechercher une occurrence dans le site ou sur un moteur de recherche (research), des liens légaux (legacy), de renseignements (contact) et de licence (copyright) en bas de page, des bulles d'information quand le pointeur de la souri reste un instant sur une option (info), le comptage (counter) et l'indexation des pages visitées (index), un système de popularisation des articles mis en ligne (votes) et d'expression pour les visiteurs (commentary), l'insertion automatique d'une image à coté d'un texte publié par un même auteur (logo), la présentation d'images (galery), des fichiers à télécharger (download), la visualisation de la structure du site pour retrouver facilement une page (site map), des modèles de présentation graphique (themes), le classement des pages par rubriques (category) ou la présentation de mots clefs les plus demandés (tags), l'abonnement à une lettre de diffusion (mailinglist) ou à une alerte sur un thème (rss), la gestion de la traduction en plusieurs langues (languages), etc.
Un exemple d'installation CMS
Voici un exemple d'installation d'un site web généré par une application CMS. Dans cet exemple, tous les logiciels utilisés sont des logiciels libres, le système Gnu Linux (debian4 Etch), le serveur web (apache2), la base de données (mysql4), la gestion des scripts (php5), les outils de management de la base de données (php5­mysql) et de management des scripts (phpmyadmin), et l'application CMS (phpwebsite1.7), le navigateur (firefox11.3).
Les services © Patrick Hautrive !;~) 2010
195
L'installation d'un CMS doit prendre en compte la gestion des utilisateurs (user), la provision de l'espace de stockage (disk), la mise en place du réseau (network), l'installation des programmes (packages), la préparation de la base de données (data base), et la configuration du site (cms).
1. Dans un premier temps, l'administrateur des comptes se charge de la gestion des utilisateurs (adduser, usermod) et des groupes (addgroup, groupmod) qui administreront l'installation et la maintenance du site.
2. Dans un deuxième temps, l'administrateur de l'espace de stockage se charge de choisir le répertoire dans lequel sera installé le site (disk, df, mkdir, mount, DocumentRoot) afin de pouvoir accueillir les fichiers du site et les journaux (logs, ServerRoot), ainsi qu'une stratégie de sauvegarde (dd, tar, crontab, rsync).
3. Dans un troisième temps, l'administrateur réseau doit s'assurer bien­sûr que le réseau fonctionne (ifconfig, route, ping, netstat, nmap, /etc/init.d/network, /etc/network/interfaces). Quand le site sera terminé, la configuration du pare feu (iptables) et l'ouverture des ports (ports, /etc/services) permettra aux internaute d'accéder au site.
4. Dans un quatrième temps, l'administrateur du système procède à l'octroi des permissions (chmod, ls ­l, su, sudo) pour sécuriser les accès, et à l'installation des serveurs nécessaires (apt­
get, tar, ServerRoot). Les fichiers de configuration des serveurs (/etc/*) sont souvent bien commentés et permettent la compréhension de leurs mécanismes, autan que l'optimisation de leurs configurations. Pour Apache le fichier se trouve dans «/etc/apache2/apache2.conf».
5. Dans un cinquième temps, l'administrateur de la base de données crée une nouvelle base de données pour accueillir le site CMS, ainsi qu'un utilisateur, lequel possède les droits pour la gérer (CREATE, GRANT, SHOW, USE). Cette base de données peut­être générée à partir du prompt «mysql>» (mysql), ou à l'aide de l'outil de management (phpmyadmin). Le fichier de configuration de MySql se trouve dans «/etc/mysql/my.cnf».
6. Dans un sixième temps, l'administrateur du site crée le site avec l'interface qui lui est proposée par le CMS et avec les informations que lui ont données les autres administrateurs (databasename, databaseuser, databasepassword, sitedirectory). Il est très important de rechercher quels sont les programmes nécéssaires (packages) et leurs dépendances (dependencies) sur le site du CMS (phpwebsite) et de suivre les directives qui sont placées dans les fichiers d'aide qui figurent dans l'arborescence du CMS (README, INSTALL, DOCUMENTATION). En général, le premier compte utilisateur que l'on crée est l'administrateur du site CMS (webadmin). En se connectant au serveur CMS avec un navigateur (lynx, w3m, firefox), des directives sont données sur la configuration.
7. Dans un septième temps, l'administrateur du site CMS construit le site et choisit les modules qui seront incorporés au site. La sélection des modules et l'organisation des espaces s'effectuent directement avec un navigateur internet (firefox) pointant sur le serveur CMS. Quand, le site est enfin prêt, il ne reste plus qu'à le mettre en ligne. Le site CMS propose également une interface web d'administration, et l'administration peut donc se faire à distance. Avec Debian, la configuration par défaut de Php5 se trouve dans le fichier «/etc/php5/apache2/php.ini».
Les services © Patrick Hautrive !;~) 2010
196
L'installation d'un CMS (phpwebsite)
Phases
Users
Commands
adduser ­­uid 1010 web ; usermod ­u 1010 web ; cat /etc/passwd | grep web
groupadd staff ; groupmod ­g 110 staff ; chown ­R web:staff /home/web
Disk
fdisk ­l ; df ­h ; du ­h
Directory mkdir /home/website ; chown root:staff /home/website
chmod 664 /home/website/index.html
Network route add default gw 10.0.2.254 ; vim /etc/network/interfaces
/etc/init.d/networking restart ; ifconfig ; route; ping, netstat ; nmap
Packages vim /etc/apt/sources.list ; apt­get update
CMS
apt­cache show apache | less ; apt­cache search mysql
apt­get install openssh­server apache2 mysql­server­5.0 mysql­client
apt­get install php5­mysql phpmysql php5 php­gd
cd /home/website ; wget phpwebsite_1_7_1.tar.gz ; tar ­xvzf phpwebsite_1_7_1.tar.gz
mv phpwebsite_1_7_1 phpwebsite ; chown ­R web:staff phpwebsite
Apache
cd phpwebsite ; less /home/website/phpwebsite/README
less /home/website/phpwebsite/docs/INSTALL
vim /etc/apache2/apache2.conf ; groupmod ­A www­data web staff /home/website
vim /etc/apache2/sites­enabled/000­default
mv /var/www/apache2­default/* /home/website/ ; chmod 775 /home/website
/etc/init.d/apache2 restart ; w3m 10.0.2.155
Mysql
mysql ; mysql>CREATE DATABASE db_webphpsite; mysql>SHOW DATABASES;
mysql>CREATE USER dbwww IDENTIFIED BY 'webpassword';
mysql>USE db_webphpsite; mysql>SHOW TABLES;
Web Site http://10.0.2.155/phpwebsite/dbtest.php ; vim /home/website/phpwebsite/dbtest.php
http://10.0.2.155/phpwebsite/setup/ (#login: webadmin ; password: 'webadminpassword'#)
http://10.0.2.155/phpwebsite/setup/help/sessions.en_US.txt
less /usr/share/phpmyadmin/README ; less /usr/share/phpmyadmin/INSTALL
less /home/website/phpwebsite/docs/README
less /home/website/phpwebsite/docs/INSTALL http://10.0.2.155/phpmyadmin/ #(login: dbwww password: 'webpassword')#
http://10.0.2.155/phpwebsite/index.php
(#login: webadmin ; password: 'webadminpassword'#)
Les services © Patrick Hautrive !;~) 2010
197
FTP
Le transfert de fichiers
Le transfert de fichier peut s'effectuer avec FTP (File Transfer Protocol) à partir d'un serveur FTP et à l'aide de la commande “ftp”. Pour les sites FTP qui acceptent les connexions anonymes (anonymous), les utilisateurs (ftp) peuvent donner leur adresse de messagerie comme mot de passe, ou ne rien saisir. Il existe des serveurs FTP qui envoient les fichiers demandés par mail en pièces jointes.
La commande “ftp” lance le client FTP en mode interactif avec un prompt (“ftp>”). Le protocole FTP répond aux spécifications des RFC 959 et RFC 1759. La commande “man ftp” décrit l'ensemble des options et des commandes FTP. L'administration du serveur FTP (wu­ftpd) peut s'effectuer à distance via les modules de l'interface de Webmin. Le serveur wu­ftpd de l'université de Washington peut faire également office de serveur Proxy pour les données FTP (frox).
Les modes de transfert
Les transferts en mode texte (ascii) conviennent pour les fichiers textes (unix, msdos, ou apple), tandis que les transferts en mode binaire (binary) conviennent pour les fichiers compressés, les images et les programmes compilés. Le mode texte endommage les fichiers binaires susceptibles de contenir des caractères de contrôle. L'option Retour Charriot (Carriage Return, “cr”), en mode texte, permet de convertir les séquences de caractères “CR+LF” (Carriage Return + Line Feed) des textes Windows™, en “LF” pour la lecture sous Unix™.
L'option interactive (“­i”) permet de désactiver le prompt interactif lors des transferts multiples de plusieurs fichiers. L'option d'expansion des noms de fichiers (glob) permet d'utiliser les jokers avec les commandes “mput”, “mget” et “mdelete”.
Le mode passif (passif mode) permet, depuis l'extérieur, de franchir un pare feu (firewall), si le serveur FTP accepte ce mode.
Les services © Patrick Hautrive !;~) 2010
198
La configuration pour FTP
La configuration pour FTP (File Transfert Protocol) (man ftp)
Commands (ftp> help)
Servers
?
debug
mdir
put
!
dir
mget
pwd
$
disconnect mkdir qc
account exit
mls
quit
append form
mode
quote
ascii
get
modtime recv
bell
glob
mput
reget
binary hash
newer rhelp
bye
help
nlist
rstatus
case
idle
nmap
rename
cd
image
ntrans reset
cdup lcd
open
restart
chmod ls
passive rmdir
close macdef
prompt runique
cr
mdelete proxy send
delete
sendport ftpd
Pure­ftpd
site
ftpd­ssl ftp­proxy
size
vsftpd muddleftpd
status wu­ftpd ftp­upload
struct
ws­ftp ftpwatch
sunique wzdftpd frox
system proftpd config­manager
tenex
pyftpd krb5­ftpd
tick
jftpgw inetutils­ftpd
trace
ftpgrab twoftpd
type
atftpd ftpmirror
umask oftpd fmirror
user
tftpd
mirror
verbose
Files
$HOME/.netrc
/etc/alternatives/ftp
/etc/lftp.conf
/usr/include/arpa/ftp.h
/lib/security/pam_ftp.so
/usr/lib/apt/methods/ftp
/usr/share/doc/ftp/*
/usr/share/vim/vim63/ftplugin/*
man netrc
/etc/inetd.conf
/etc/services
Clients
ftp
sftp
gftp
ftp­ssl
wget
wput
lftpget
kbear
cftp
ncftp
ncftp2
curl
lftp
pftp
tftp
yafc
zftp
atftp
gopher filerunner
rssh
dpkg­ftp
debmirror
putty­tools
sitecopy
xsitecopy
scponly
Les services © Patrick Hautrive !;~) 2010
199
lukemftp
netkit­ftp
weex
pavuk
lurkftp
aria
Les exemples pour FTP
vi /etc/inetd.conf
ftp
stream tcp nowait root /usr/sbin/ftpd
vi /etc/services
wuftp
3010/tcp
wu­ftpd
wuftp­data
3009/tcp
wu­ftpd
/bin/chconfig
ftp ftp://[email protected]
ftp://ftp.lip6.fr
ftp://ftp.univ­lille1.fr
ftp
ftp> open ftp.uu.net
ftp> ls
mail [email protected]
mail [email protected]
info.cern.ch
ipswitch.com
twi.tudelft.nl
w3.org
ftpd ­lio
Les services © Patrick Hautrive !;~) 2010
200
IRC
La conversation en direct
Les serveurs de conversation proposent des salons de conversation en direct (live). Le salon (room) ou le canal (chanel) peut être un lieu d'âpres discussions sérieuses (talks), d'échanges et d'entre aide (help), de bavardages anodins (chats) ou de badinage sans conséquences (flirts). Les internautes se connectent à un serveur (server) sous l'identité d'un pseudonyme (nickname) et choisissent à leur convenance, un salon généraliste ou spécialisé dans un thème particulier. La fenêtre du client (client) ou IMC (Instant Messaging Client) affiche les dialogues instantanément avec le pseudonyme comme préfixe. Toutes les personnes qui sont connectées au même moment peuvent participer et échanger en direct. Une personne peut participer à plusieurs canaux en même temps. Les noms des canaux sont en général matérialisés par un dièse (hash) devant l'intitulé, et les commandes commencent par une barre oblique (slash).
Les salons peuvent être ouverts au tout venant (open), protégés par un mot de passe (private), surveillés par un chaperon (moderated) et administrés par une véritable personne (operator). Des logiciels peuvent également participer aux discussions et intervenir machinalement comme des robots (bots). En général, n'importe qui peut créer un salon, choisir le thème de discussion, et les règles de conduite que sont sensées suivre les invités ou les participants. La personne qui crée un salon en devient automatiquement l'opérateur, et peut de fait administrer le salon comme bon lui semble, par exemple en expulsant (kick) une personne du salon, et nommer éventuellement d'autres opérateurs pour la suppléer ou la remplacer.
Plusieurs protocoles (protocols) permettent de transmettre les conversations en direct, et ils existent plusieurs réseaux (networks) regroupant des serveurs distribués dans le monde entier. Certains serveurs de conversation en direct exigent d'avoir un compte (account), tandis que d'autres autorisent les connexions anonymes (anonymous). Certains clients sont multi protocoles et permettent de se connecter à plusieurs réseaux différents, tandis que d'autres sont enfermés dans leur propre technologie.
Les serveurs de conversation
Les serveurs IRC (Inter Relay Chat) sont historiquement les premiers serveurs de conversation qui aient existé sur internet. Les serveurs Jabber utilisent le protocole libre Jabber, et fonctionnent avec des Logiciels Libres.
Le réseau MSN (Microsoft Network) est très répandu parce que c'est un produit qui est mis en avant par les distributeurs et la publicité, et parce que l'éditeur de logiciels impose la pratique illégale de la vente forcée et les discours biaisés par les transactions occultes des lobbies. Les protocoles AIM (AOL Instant Messanger), Yahoo!Messanger, Gadu Gadu, ICQ, OpenRide, et Google Talk sont inégalement Les services © Patrick Hautrive !;~) 2010
201
présents sur la toile. Les serveurs Fserv permettent d'échanger des fichiers volumineux. Les serveurs de forums (newsgroup), et en particulier la hiérarchie alternative (alt) permettent également les échanges de conversation et de fichiers, mais ils ne sont pas aussi instantanés. Certains réseaux comme ICQ proposent une identification unique des personnes ou UIN (Universal Internet Number).
Les serveurs de conversation se sont développés en proposant d'animer les conversations textuelles avec des images (smileys) et d'échanger des fichiers (binary). Aujourd'hui, les technologies et les hauts débits permettent les communications audio ou VOIP (Voice Over Internet Protocol) et les communications vidéo en directe (webcam) à deux ou à plusieurs (visio conference).
La configuration pour IRC
La configuration des conversations IRC (Inter Relay Chat) (port 6667) (man irc)
Protocols
Networks
Irc
undernet.org
Jabber
freenode.net
Msn
irchelp.org
Aim
jabber.org
Yahoo
linuxpower.org
GaduGadu icq.com
ICQ
mirc.co.uk
efnet.org
dal.net
htdig.org
siegfried.org
hummingbird.com
Bots
Clients
supybot
ntalk
plum
irc2
rbot
bitchx
gruftistats epic4
muh
jabber
madoka
gaim
fisg
naim
dircproxy psi
dancer­ircd kopete
ctrlproxy ksirc
ircd
kvirc
ircd­irc2 konversation
ircd­ircu chatzilla
ircd­hybrid xchat
hybserv
Licq
iroffer
tkirc
iacd
zenirc
bobot++ zircon
pisg
eggdrop
bitlbee
scrollz
pork
riece
liece
lostirc
centericq
cwirc
cgiirc
tinyirc
tirc
sirc
ayttm
erc
ircii
irssi
Files
/etc/alternatives/irc
/usr/share/irssi/help/ircnet
/usr/lib/gaim/libirc.so
/etc/irssi.conf
~/.irssi/config
Les commandes IRC
/help intro
/help newuser
/help server
/msg nicname Message
Les services © Patrick Hautrive !;~) 2010
202
/motd Message Of The day
/query nicname
/list help
/list ­min 5
/names #linux
/load
/dcc get
/join #linux
/topic Free Software
/whois nickname
/kick nickname
/leave
/quit
Les exemples pour IRC
xchat.linuxpower.org
irc linux caen.fr.eu.undernet.org
/join [#linux] [­min 5] [­max 200]
licq ­p icq­name
Les services © Patrick Hautrive !;~) 2010
203
SSH
Les communications cryptées
Le cryptage ou la sécurisation des communications permet de garantir la confidentialité des messages, l'intégrité des données, et l'authenticité des intervenants. Le cryptage des communications s'effectue au niveau des couches hautes du modèle OSI. Le cryptage avec SSL (Secure Socket Layer) est issue des développements du système libre Open BSD. De nombreux protocoles, des systèmes de fichiers et de nombreux programmes utilisent cette bibliothèque de cryptage pour leur communication.
La suite des programmes Open SSH (Secure Shell) et la commande “ssh” permettent de se connecter à distance à un serveur “sshd” et de disposer d'un interpréteur de commandes (shell) sur un autre poste relié par le protocol réseau TCP/IP. La commande “scp” permet de crypter des données avant de les copier sur un autre poste. La commande “rsync” permet de synchroniser des répertoires à distance. Les noms des commandes sécurisées par un cryptage des échanges contiennent souvent la lettre “s”, comme par exemple “sftp”. Le protocole HTTPS (Hyper Text Transfer Protocol Secure) repose sur SSL, et permet de distribuer des pages web sécurisées.
Le programme SSH est un programme très complet qui utilise la cryptographie asymétrique avec l'échange de clés publiques (public key) et de clés privées (private key). Le programme SSH remplace les anciens programmes obsolètes, comme le programme “telnet” qui laissait circuler en clair sur le réseau les informations de compte, et la suite des programmes de connexion à distance (remote), que furent “rcp” et “rshell”. L'administration d'un serveur SSH peut s'effectuer à distance via le module de l'interface Webmin. Pour les ordinateurs Windows™, il existe des programmes, comme le client «putty» qui permettent de se connecter à un serveur SSH sous Linux.
La cryptographie asymétrique
La cryptographie asymétrique utilise deux clefs différentes. La clef publique et la clef privée sont créées au même moment par et pour un seul utilisateur. La clef publique (public key) est associée à un utilisateur, et est ouvertement distribuée. La clef publique permet le cryptage d'un message en clair à destination d'une personne en particulier. La clef privée (private key) est liée à la clef publique, et reste confidentielle. La clef privée permet le décryptage, par le destinataire, du message brouillé par sa clef publique. Seul le destinataire peut décrypter le message qui a été crypté avec sa clef publique, ce qui permet indirectement d'authentifier la personne qui a pu décrypter le message.
Des serveurs distribuent les clefs publiques des utilisateurs, des réseaux de confiance (trusted network), et des intermédiaires spécialisés ou tiers de confiance (verisign), permettent d'attester de l'identité des dépositaires. Le programme PGP (Pretty Good Privacy) de Philipp Zimmermann utilisent la cryptographie asymétrique.
Les services © Patrick Hautrive !;~) 2010
204
Le serveur SSH
Le serveur SSH crée et diffuse sa clef publique qui permet de crypter les échanges avec d'autres stations. Notamment lors de l'échange d'une clef privée avec une autre machine pour l'ouverture d'une session de communication sécurisée.
La génération d'un couple de clef
La commande «ssh­keygen» permet de générer un couple de clefs asymétriques, une clef privée et une clef publique qui sont associées, et qui permettent respectivement de crypter un message et de le décrypter.
La configuration de SSH
La configuration des communications cryptées avec ssh (man sshd) (man ssh_config) (port 22)
Commands
telnet
rlogin
rcp
rsh
putty
ssh
scp
sshd
rsync
rdist
slogin
sdm
putty
fsh
zssh
autossh
gnome­keyring
dsniff
dirvish
secpanel
scponly
ssh­krb5
kdessh
keychain
hsftp
SSH
Tools
scanssh
ssh­add
ssh­agent
ssh­argv0
ssh­askpass
ssh­copy­id
ssh­keygen
ssh­keyscan
ssh­keysign
openssh­client
openssh­server
secvpn
sshfs
rssh
dpsyco­ssh
dropbear
clusterssh
Files
/etc/ssh/sshd_config
/etc/ssh/ssh_config
/etc/ssh/moduli
/etc/alternatives/ssh­askpass
/usr/share/doc/openssh­client/*
/usr/share/services/ssh.protocol
~/.rhost
$HOME/.ssh/known_hosts
$HOME/.ssh/identity
$HOME/.ssh/identity.pub
/usr/doc/*
Les exemples pour SSH
telnet ­l user server 23
logout
quit
exit
^]
/etc/rc.d/init.d/sshd restart
ssh 10.0.2.111
ssh [email protected]
ssh [email protected]:/directory
ssh [email protected]:/directory
ssh ­l user server
Les services © Patrick Hautrive !;~) 2010
205
scp file­here [email protected]:/home/user/file­there
scp [email protected]:/home/user/file­there file­here
mkdir $HOME/.ssh
ssh­keygen ­p
scp $HOME/.ssh/identity user@server:/$HOME/.ssh/authorized_keys
less /etc/ssh/sshd_config
ClientAliveInterval 15
X11Forwarding yes
ClientAliveCountMax 3
PermitRootLogin yes
Les services © Patrick Hautrive !;~) 2010
206
BOOKS
La bibliographie
Le système Unix™ est une invention américaine, les lignes de code des systèmes Unices et les langages de programmation sont conçus en langue anglaise, et le système libre Gnu Linux est une collaboration internationale dont la langue d'échange est l'anglais, aussi, n'est­il pas étonnant que la plupart des ouvrages soient rédigés et traduits de l'anglais. Certains textes sont librement téléchargeables sur internet.
La bibliographie philosophique
La bibliographie philosophique
Title
Author
L'éthique des hackers et l'esprit de l'ère de l'information
Just for fun
La tribune libre : Les ténors de l'informatique libre
Le livret du libre
Free as freedom
La cathédrale et le bazar
Le chaudron magique
Cyber Lexis (le jargon)
Une brève histoire des hackers
Comment devenir un hacker
Noosphere
Unix & internet Howto
Le grand livre des robots
History of unix, linux and open source
History of Linux
The heoric hacker
The haloween document
Ghost in the shell
The hitchhicker's guide to the galaxy
Pekka Himanen
Linus Torvalds
Recueil de texte
Recueil de texte
Richard M. Stallman
Eric S. Raymond
Eric S. Raymond
Eric S. Raymond
Eric S. Raymond
Eric S. Raymond
Eric S. Raymond
Eric S. Raymond
Isaac Asimov
David A. Wheeler
Ragib Hasan
Eric Brunvand
Mamoun Oshii
Douglas Adams
Les services © Patrick Hautrive !;~) 2010
207
Editor
Oreilly.fr
La bibliographie technique
La bibliographie technique
Title
Author
Formation Debian Gnu Linux
Linux Administration
Unix pas de panique
Le système Linux
Linux in a nutshell
Les bases de l'administration système
Advanced linux programming
Maximun linux security
Alexy Delattre
Bouchaudy
Cyrille Dunant, Emmanuel Eckard
Welsh
Aeleen Frish
Mark Mitchell
Les services © Patrick Hautrive !;~) 2010
208
Editor
Eyrolles
Oreilly
Oreilly
Oreilly
Patrick Hautrive
http://hautrive.free.fr
Les services © Patrick Hautrive !;~) 2010
209

Documents pareils

Les services

Les services Mémoire sur la pratique du shell Bash sous Gnu Linux 1. La console 2. Les services 3. Le networking Par Patrick Hautrive http://hautrive.free.fr

Plus en détail