You are on page 1of 321

Administration

Systme
GNU/Linux

Administration Systme
GNU/Linux

Historique

Composants

Organisation

Shell

Commandes de base

Utilisateurs & Droits

Disques & Filesystems

Administration Systme
GNU/Linux

Editeurs

Shell & commandes avancs

Packages

Boot & Runlevels

Rseau

Interfaces graphiques

Fichiers spciaux

Etudes de cas

Historique

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.
Linus
Torvalds

Historique
Unix

Unix
Philosophie
1) Ce qui est petit est beau
2) Chaque programme fait une chose et la fait bien
3) Construire un prototype ds que possible
4) Choisir la portabilit plutt que l'efficacit
5) Enregistrer les donnes dans des fichiers plats
6) Utiliser le logiciel comme une force
7) Utiliser les scripts shells pour accrotre cette force
8) Eviter les interfaces utilisateur captives
9) Faire de chaque programme un filtre

Unix
Philosophie
1) Small is beautiful.
2) Make each program do one thing well.
3) Build a prototype as soon as possible.
4) Choose portability over efficiency.
5) Store data in flat text files.
6) Use software leverage to your advantage.
7) Use shell scripts to increase leverage and portability.
8) Avoid captive user interfaces.
9) Make every program a filter.

Unix
Philosophie

timtowtdi
There is more than one way to do it

leitmotiv perl, qui s'applique trs bien Unix

Unix
Philosophie
Sous unix, tout est fichier

fichiers (!)

rpertoires

devices

liens

pipes

sockets

Unix
Philosophie
Sous unix, les fichiers doivent tre

lisibles par l'homme

exploitables simplement par la machine

...donc sous Unix :

tous les fichiers de configuration sont texte...


...ou gnrs partir de fichiers texte

pas de binaire : les fichiers de configuration


doivent tre ditables simplement (registry)

pas de formats exotiques (xml)

pas de formats ferms (doc,byo,...)

Unix
Philosophie

Multitche

plusieurs processus s'excutent en mme


temps

l'OS le contrle des processus

Multiutilisateur

plusieurs utilisateurs peuvent se connecter


simultanment

plusieurs utilisateurs peuvent excuter des


processus simultanment

Historique
GNU

GNU : Gnu's Not Unix

Promu par la Free Software Foundation

Objet : dveloppement d'outils et de


licences libres

1984 : emacs

1987 : gcc

1989 : GPLv1

1991 : GPLv2

1997 : lesstif

Historique
Linux

Aot 1991

1re version

code source : 63 Ko

1994 :

2 branches

code source : 1 Mo

Juin 1996 : v2.0

code source : 5 Mb

port Alpha

SMP

Mars 2006 : v2.6.11, >200 Mb


20+ architectures supportes
(x86, ppc, sparc, arm, , avr32, ...)

Historique
Linux
360x1012FLOPS

1x109FLOPS

20x103MIPS

1MIPS

GNU/Linux
Le kernel et l'OS

Kernel : Linux

mise disposition des ressources machines

entres /dev, /proc, /sys

allocation mmoire

gestion de l'accs aux ressources machines

droits

ordonnancement

gestion des accs

modulaire

chargement dchargement de modules (drivers)

automatique ou manuel

GNU/Linux
Le kernel et l'OS

OS : GNU

gestion du systme via l'interface propose


par le lernel

systmes de fichiers

rseau

droits

priphriques

...

sous forme d'utilitaires, ou de librairies

shell, ls, rm, ...

libusb, libpam, ...

GNU/Linux
Le kernel et l'OS

GNU/Linux
Userland et kernel space

Kernel Space

espace sensible

espace protg

contient le kernel et ses modules

Userland

espace utilisateur

espace libre

espace cloisonn

GNU/Linux
Les distributions
Versions diffrentes de GNU/Linux
Payantes (RHEL), semi-payantes (Mandriva) ou
gratuites (presque toutes)

Pour l'expert (Debian), le dbutant (Kubuntu), le


maniaque (LFS), le patient (Gentoo), le
nostalgique (Yggdrasil, Slackware)

Oriente bureautique (Ubuntu), appliance (Damn


Small), serveur (Trustix) ou gnraliste (SuSE,
Fedora)

Religieuses (Crux, Ubuntu CE, Ubuntu SE),


paennes (les autres)

Plus de 350 distributions sur le march

GNU/Linux
Les distributions

Points communs ?

kernel
outils GNU

Diffrences ?

kernel
outils GNU
systme de packages
fichiers de configuration
fichiers de dmarrage
organisation et type du
filesystem
philosophie
canaux de distribution
mthode d'installation, de
configuration
outils

....

Administration Systme
Dfinition

Faire un maximum de scripts pour en faire le moins possible


E. Arzur

Le Shell

Less sucks less more than more.


That's why I use more less, and less more..
Inconnu

Shell
Intert ?

Interface utilisateur non graphique

terminaux texte

accs distant

Interprteur de scripts

traitement "par lots"

automatisation

Lancement de tches multiples

tche combines (pipes)

job control

Shell
Oui mais...

C'est un programme "normal"

Le choix est vaste

sh, sash, ksh, csh, tcsh, ash, bash, psh, fish,


...

On peut excuter plusieurs shells en


parallle (unix est multitche)
Plusieurs utilisateurs peuvent excuter un
shell en mme temps (unix est multiutilisateurs)

Shell
Terminaux

vt100
xterm

consolevga

Shell
Autopsie d'un login

Shell
Environnement

Un shell donn s'excute dans un


environnement propre et clos contenant
des variables
Cet environnement est :

est modifiable

est transitoire

L'environnement initial

est dfini au niveau systme

peut tre modifi par l'utilisateur

Shell
Environnement

Filesystem
Le systme de fichiers (filesystem)

Organis hirarchiquement dans sa totalit


depuis la racine (/)
Sensible la casse (des caractres)
Utilise '/' pour sparer les rpertoires dans
un chemin

Peut contenir n'importe quel caractre

Taille pratique d'un nom de fichier illimite

Pas de notion d'extensions

Distro-dpendant malgr le standard

Filesystem
Le systme de fichiers (filesystem)

Filesystem
L'organisation du filesystem (fs)
Une seule arborescence

Filesystem
Balade dans le fs

Se dplacer dans le filesystem


cdchemin(chemin relatif)
cd/chemin(chemin absolu)

Voir le contenu du rpertoire


ls(contenu du rpertoire courant)
lschemin(contenu de chemin)

Connatre le rpertoire courant


pwd (print working directory)

Filesystem
Balade dans le fs
Rpertoires part :
/: racine du filesystem
.: rpertoire courant
..: rpertoire parent
~: rpertoire maison (home dir,
correspond $HOME)

Filesystem
Lieux touristiques du fs
Rpertoire essentiels au fonctionnement
/ : racine
/bin, /sbin : binaires systmes
/etc : configuration systme
/boot : kernel et 2eme tage du bootloader

Filesystem
Lieux touristiques du fs
/usr : binaires d'usage courant
/home : rpertoires utilisateurs
/var : donnes variables (sgbd, logs)
/proc : information systme temps rl
/mnt, /media : point montage temporaire
/sys : bus systmes
/tmp : rpertoire temporaire
lost+found : objets trouvs

Shell
$PATH

Variable d'environnement
Contient une suite de chemins spars
par ':'
Les excutables seront recherchs dans
ces chemins

Shell
$PATH
Rpertoire '.'

risque d'excuter un trojan

danger !

n'importe qui peut crire dans /tmp (entre


autres) !

le shell perd du temps chaque 'cd'

Shell
Entre/Sorties

Par dfaut tout processus possde :

1 entre

2 sorties

Ces I/O sont distinctes pour chaque processus


Pour les programmes interactifs (comme les
shells) :

les entres proviennent du clavier

les sorties s'affichent sur l'cran

Shell
Entre/Sorties
STDIN (entre standard) : ce qui est envoy
vers le processus
STDOUT (sortie standard) : ce qui est
envoy par le processus
STDERR (sortie erreur standard) : les
erreurs renvoys par le processus

Shell
Entre/Sorties
Ces entrs/sorties standard sont en fait des
noms symboliques, correspondant des
descripteurs de fichiers :

STDIN (INput)

: descripteur de fichier 0

STDOUT (OUTput) : descripteur de fichier 1

STDERR (ERRor)

: descripteur de fichier 2

Shell
Entre/Sorties : cat
cat : copie STDIN (ou un fichier) sur STDOUT
(critleserreurs,s'ilya,surSTDERR)
user@host:~$cat
azerty
azerty
qsdfg
qsdfg
user@host:~$cat/etc/hosts
127.0.0.1localhost
127.0.1.1michel
#ThefollowinglinesaredesirableforIPv6capablehosts
::1ip6localhostip6loopback
fe00::0ip6localnet
user@host:~$cat/etc/bidon
cat:/etc/bidon:Aucunfichierourpertoiredecetype
user@host:~$

Shell
Redirections d'E/S
Les E/S peuvent tre rediriges de ou vers un fichier

processus<fichier
STDIN provient du fichier (et non plus du clavier)

processus>fichier
STDOUT est crit dans fichier (et non plus sur le terminal)

processus2>fichier
STDERR est crit dans fichier (et non plus sur le terminal)

processus>fichier12>fichier2
STDOUT est crit dans fichier1 et STDERR dans fichier2

Shell
Redirections d'E/S
user@pluton:~$cat</etc/hostname
pluton
user@pluton:~$cat/etc/hostname
pluton
user@pluton:~$cat/etc/hostname>/tmp/test
user@pluton:~$cat/tmp/test
pluton
user@pluton:~$cat/etc/hostname>/dev/null
user@pluton:~$cat</etc/hostname>/dev/null
user@pluton:~$cat/etc/hostname
pluton
user@pluton:~$cat/etc/portnaouak
cat:/etc/portnaouak:Aucunfichierourpertoiredecetype
user@pluton:~$cat/etc/portnaouak2>/dev/null
user@pluton:~$cat/etc/hostname/etc/portnaouak>out.txt2>err.txt
user@pluton:~$catout.txt
pluton
user@pluton:~$caterr.txt
cat:/etc/portnaouak:Aucunfichierourpertoiredecetype

Shell
Redirections d'E/S

user@pluton:~$cat/etc/hostname
pluton
user@pluton:~$cat/etc/hostname>>/tmp/test
user@pluton:~$cat/tmp/test
pluton
pluton
user@pluton:~$cat/etc/hostname>/tmp/test
user@pluton:~$cat/tmp/test
pluton
user@pluton:~$cat/etc/hostname>/tmp/test
user@pluton:~$cat/tmp/test
pluton
user@pluton:~$cat/etc/hostname>>/tmp/test
user@pluton:~$cat/tmp/test
pluton
pluton
user@pluton:~$

Shell
Entres/sorties : devices spciaux
Plusieurs "devices" (fichiers dans /dev) ont une
vocation particulire :

/dev/null
trou noir annihiliant tout ce qui lui est envoy

/dev/zero
envoie des zros ad-vitam

/dev/random/dev/urandom
fournisseurs officiels de hazard

/dev/full
dispositif hypochondriaque : se plaint toujours (d'tre plein)

Shell
Redirections d'E/S : travaux
1) Copier le contenu de /etc/passwd dans le
fichier /tmp/users.txt
2) Ecrire linus la fin de users.txt
3) Vider le fichier users.txt
4) Remplir users.txt de "zros" (utiliser le
dispositif fournisseur de zros : /dev/zero)
5) Rediriger l'erreur standard de 'ls -lR /' dans
/tmp/users.txt
6) Vider le fichier users.txt (d'une autre manire

qu'en 3)

Shell
Pipes

Les pipes (pipelines) permettent


d'envoyer la sortie d'une commande
(STDOUT) l'entre d'une autre (STDIN) :

Shell
Pipes

On trouve trs souvent la commande grep au


milieu de pipelines
grep permet de n'afficher une ligne que si elle
contient une chaine de caractres donne
Sa syntaxe est :
grepchanefichier
affiche les lignes de fichier contenant
"chane"
grepchane
affiche les lignes lues sur l'entre standard
(STDIN) contenant "chane"

Shell
Pipes : exemples (compliqus)
user@pluton:~$cat/etc/passwd|greproot
root:x:0:0:root:/root:/bin/bash
user@pluton:~$ls|greptest
test.txt
user@pluton:~$iplink|grepUP
1:lo:<LOOPBACK,UP,10000>mtu16436qdiscnoqueue
3:eth1:<BROADCAST,MULTICAST,UP,10000>mtu1500qdiscpfifo_fastqlen1000
6:tun0:<POINTOPOINT,MULTICAST,NOARP,UP,10000>mtu1500qdiscpfifo_fastqlen100
user@pluton:~$iplink|grepUP>uplinks.txt
user@pluton:~$catuplinks.txt|grepeth
3:eth1:<BROADCAST,MULTICAST,UP,10000>mtu1500qdiscpfifo_fastqlen1000
user@pluton:~$iplink|grepUP|grepeth
3:eth1:<BROADCAST,MULTICAST,UP,10000>mtu1500qdiscpfifo_fastqlen1000
user@pluton:~$history|awk'{print$2}'|sort|uniqc|sortnrk1|head10
164ls
74cd
62ssh
55ping
55man
53make
51ip
47more
user@pluton:~$

Il n'y a pas de limitation


pratique au nombre de
"pipes" que l'on peut
enchaner...

Shell
Pipes

Les pipes et les redirections peuvent tre


combines

Shell
Pipes & Redirections
Attention l'ordre des redirections et des pipelines
a|b2>c

le rsultat de la commande a est pass b

les erreurs de b sont rediriges dans le fichier c

a2>c|b

le rsultat de la commande a est pass b

les erreurs de a sont rediriges dans le fichier c

user@pluton:~$cat/etc/toto/etc/passwd|greproot2>/dev/null
cat:/etc/toto:Aucunfichierourpertoiredecetype
root:x:0:0:root:/root:/bin/bash
user@pluton:~$cat/etc/toto/etc/passwdroot2>/dev/null|greproot
root:x:0:0:root:/root:/bin/bash
user@pluton:~$

Shell
Compltion

Permet de complter une saisie


utilisateur dans le shell
Affect la touche tab
La compltion affiche la plus grande
correspondance unique
S'applique aux commandes et leurs
arguments (selon configuration)
tab-tab affiche toutes les
correspondances possibles

Shell
Editeur de ligne

l'diteur de ligne permet d'diter....


... la ligne !
raccourcis clavier identiques Emacs
CTRL + a :dbutdeligne
CTRL + e :findeligne
CTRL + k :coupedelapositioncourantejusqu'lafindelaligne
CTRL + y :collecequiatprcdemmentcoup

Shell
Historique

bash mmorise toutes les commandes dans un


d'historique
cet historique est enregistr dans un fichier
lorsque le shell se termine
cet historique est lu depuis un fichier au
dmarrage d'un shell
le nom du fichier est dfini dans $HISTFILE et la
taille de l'historique dans $HISTFILESIZE
le rappel de commandes :

par numro (!numro)

par nom (!debutnom)

aprs recherche (ctrl-r)

Shell
Historique

user@host:~$echo$HISTFILE
/home/user/.bash_history
user@host:~$echo$HISTFILESIZE
1500
user@host:~$history|tailn5
1429history
1430kill918487
1431echo$HISTFILE
1432echo$HISTFILESIZE
1433history|tailn5
user@host:~$tailn5$HISTFILE
ls
history
ls/ttest
history
kill918487
user@host:~$!1431
user@host:~$echo$HISTFILE
/home/user/.bash_history
user@host:~$!echo
echo$HISTFILE
/home/user/.bash_history
user@host:~$

Shell
Historique

user@host:~$cat/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
...
postfix:x:111:118::/var/spool/postfix:/bin/false
user@host:~$!cat|greproot
root:x:0:0:root:/root:/bin/bash
user@host:~$bash
user@host:~$history|tailn5
1476ls
1427history
1428ls/ttest
1429history
1430kill918487
user@host:~$

Shell
Historique
Remarques

si le shell B est ouvert alors que le shell A est


en cours, B ne verra pas les commandes de A
dans l'historique
si le shell B est ferm avant le shell A, les
commandes de B seront plus haut dans
l'historique
si le shell est tu, il ne pourra pas mettre
l'historique jour

Shell
Historique

Shell
Globbing
Permet de nommer plusieurs fichiers d'un seul
coup grce des jokers (wildcards)
?: accepte un seul caractre
*: accepte n'importe quel caractre 0 ou n fois
[chars]: denote une liste de caractres accepte (liste,
suite alphabtique ou suite numrique)
[^chars]ou[!chars] : dnote une classe de
caractres refuse (liste, suite alphabtique ou suite
numrique)
{e1,e2,e3}: remplace les arguments par les lments
de la liste

{e1,e2}{e3,e4}: remplace les arguments par le

produit cartsien des deux listes

Shell
Globbing
abc?: accepte un fichier de 4 lettres commenant par
abc
abc*: accepte un fichier de 3 lettres ou plus
commenant par abc
*abc*: accepte un fichier de 3 lettres ou plus contenant
abc
[ab]c: accepte un fichier de 2 lettres commenant par
'a' ou 'b'
[am]*: accepte un fichier commenant par une lettre
comprise alphabtiquement entre 'a' et 'm' inclus
*[01][09]: accepte un fichier se terminant par un
nombre compris entre '00' et '19'

[13579]*[az]: accepte un fichier commenant par un

nombre impair et se terminant par une minuscule

Shell
Globbing
[^13579]*[^az]: accepte un fichier commenant par un
nombre pair et se terminant par une majuscule
{a,b,c}: accepte les fichiers nomms 'a', 'b' ou 'c'
{a*,*b*,*c}: accepte les fichiers dont le nom commence
par 'a', contient 'b' ou se termine par 'c'
*{.doc,.odt,.rtf}: accepte les fichiers nomms '*.doc',
'*.odt' ou '*.rtf'
{photo,image}{.jpg,.png}: accepte les fichiers nomms
'photo.jpg', 'photo.png', 'image.jpg' ou 'image.png'

{jean,pierre}{,jean}: accepte les fichiers dont le nom


est 'jean', 'jean-jean', 'pierre' ou 'pierre-jean'

Shell
Globbing : classes
Lesclassessontdeslistesprdfiniesde
caractres,utilisablesentre[:et:]:
alnum : [a-zA-Z0-9]
alpha : [a-zA-Z]
ascii : caractre ascii (...)
blank : espace ou tabulation
cntrl : caractre de contrle
digit : [0-9]
graph : caractres
imprimables et visibles
lower : [a-z]
print : caractre imprimable

punct : ponctuation
space : espace, tabulation, ...
upper : [A-Z]
word : [a-zA-Z0-9_]
xdigit : [a-fA-F0-9]
Exemple :
[[:alnum:]] : accepte un
caractre alphanumrique
Voir : man 7 glob

Shell
Globbing : les limites

On ne peut pas matcher '/'


On doit matcher explicitement le
caractre '.'
Ce ne sont pas des expressions rgulires
On ne peut donc pas appliquer de
numration des classes
Il est par exemple impossible de matcher tous
les noms de fichiers se terminant par des
nombres

Commandes de base
De l'aide : man
mancommande

affiche le manuel de la commande commande

options
-t : produit une sortie postscript pour impression

exemples
mantls|lpr
manman

Commandes de base
De l'aide : man
man divise la documentation en 9 sections :
1. Executable programs or shell commands
2. System calls (functions provided by the kernel)
3. Library calls (functions within program libraries)
4. Special files (usually found in /dev)
5. File formats and conventions (e.g. /etc/passwd)
6. Games
7. Miscellaneous (including macro packages and conventions
8. System administration commands (usually only for root)
9. Kernel routines [Non standard]

cela permet d'viter les ambiguts :

manglob man7glob

Commandes de base
Aide : help,apropos,whatis
helpcommande

affiche le manuel d'une commande interne (builtin)

apropossujet

affiche les pages de man correspondant au sujet

whatiscommande

affiche une information succinte sur la commande

Commandes de base
cd
cdargument

rentre dans le rpertoire argument


Aprs un changement de rpertoire courant, l'ancien rpertoire courant est stock
dans '-', permettant d'y revenir avec 'cd -'

exemples
cd
(equivaut 'cd~'et'cd$HOME')
cd..
cd
cd/tmp
cdtmp

Commandes de base
$CDPATH

$CDPATH permet d'offrir des chemins


directement accessibles via cd
Comme pour $PATH, les chemins sont
concatns avec ':' :

$echo$CDPATH
/home/user:/var:/home/user/doc
$

Commandes de base
ls
lsa
Liste tous les fichiers (incluant .*)

lsl
Affichage long (droits, propritaire,
groupe, taille, date)

lsR

Liste les fichiers rcursivement

lst
Affiche les plus rcents en premier

lsS
Affiche les plus gros en premier

ls1

Affiche le listing sur une colonne

Lesoptionssecombinentdirectemententreelles
ex:lslaRt

Commandes de base
ls
lsoptionargument

liste les fichiers/rpertoires correspondant argument ou dans le rpertoire argument

options
-a : affiche tous les fichiers (y compris ceux commencant par '.')
-l : listing tendu
-R : rcursif
-S : tri par taille
-t : tri par date de modification
-1 : affichage sur une colone

exemples
ls*.txt
ls/etc
ls/etc/host*
ls/etc/rc[13].d
ls/media/win/Program\Files/
lslaR~

Commandes de base
{mk,rm}dir
mkdir[p]rpertoire1rpertoire2...
cre les rpertoires rpertoire1, rpertoire2, ...
l'option -p per et destination (fichier ou rpertoire)

options
-p : cre les rpertoires suprieurs si ncessaire

exemples
mkdir$HOME/documents
mkdirtest$HOME/images_iso
mkdirp$HOME/documents/personnel/{photos,factures}

rmdirrpertoire1rpertoire2

supprime les rpertoires rpertoire1, rpertoire2, ...


ces rpertoires doivent tre vides pour pouvoir tre supprims (utiliser rmrf sinon)

exemples
rmdir$HOME/documents
rmdirtest$HOME/images_iso
rmdir$HOME/documents/personnel/{photos,factures,}

Commandes de base
cp&mv
cpsourcedestination

copie la source (fichier ou rpertoire) vers la destination (fichier ou rpertoire)

options
-p : prserve les droits
-R : rcursif
-f : force l'crasement de la destination

exemples
cp*.txt/tmp
cptest.txttoast.txt
cpRf/home/var/backup

mvsourcedestination

dplace la source (fichier ou rpertoire) vers la destination (fichier ou rpertoire)


permet aussi de renommer un fichier

exemples
mv*.txt/tmp
mvtest.txttoast.txt

Commandes de base
rm&touch
rmargument

Supprime le fichier ou rpertoire argument

options
-R : rcursif
-f : force la suppression

exemples
rmrf/
rmtoast.txt

touchfichier

Cre le fichier s'il n'existe pas, ou met la date de modification du fichier l'heure
courant s'il existe
La commande ':>' permet aussi de crer un fichier

exemples
touchtoast.txt

Commandes de base
egrep
egrepoptionspatronfichier

liste les fichiers/rpertoires contenant une chaine correspondant patron.


si fichier n'est pas spcifi, grep travaille sur STDIN

options
-v : inverse le comportement de egrep (n'affiche que les lignes qui ne
correspondent pas)
-i : insensible la casse
-R : rcursif

patrons d'expression rgulires

si l'on utilise grep au lieu de egrep, il faut mettre un '\' devant les caractres ?, +, {, }, |, (, et )

.
n'importequelcaractre
*
lecaractreprcdent0ouplusieursfois
+
lecaractreprcdent1foisaumoins
?
lecaractreprcdent0ou1fois
{n}
lecaractreprcdentexactementnfois
{m,n} lecaractreprcdentdemnfois
{n,} lecaractreprcdentnfoisouplus
[az]
uncaractreenminuscule
[azAZ] unelettre
[09]
unchiffre
^/$
ledbut/lafindeligne
|
sparateurpourspcifierdemultiplesexpression

(oulogique)

Commandes de base
egrep

Matcher une ligne commenant par foo :


egrep"^foo.*"
Matcher une ligne commenant par foo ou contenant bar :
egrep"^foo|bar"
Matcher une ligne commenant par foo ou commenant par bar :
egrep"^(foo|bar)"
Matcher une ligne commenant par foo et contenant bar :
egrep"^foo.*bar"
Matcher une ligne commenant par foo et se terminant par bar :
egrep"^foo.*bar$"
Matcher une ligne se terminant par un espace suivi d'un nombre de 1 3 chiffres :
egrep"[[:space:]]+[09]{1,3}$"
Matcher une ligne se terminant par un espace suivi d'un nombre de 1 3 chiffres :
egrep"[[:space:]]+[09]{1,3}$"
Matcher une ligne contenant le caractre '*' :
egrep"*"
Matcher une ligne contenant le caractre '*' ou le caractre '?' :
egrep"*|?"

Commandes de base
cat,less,teeetwc
catfichier1fichier2...

affiche le contenu de fichier1 fichier2 ... sur la sortie standard


si cat est appell sans arguments, la source est l'entre standard

exemple
cat/dev/urandom

lessfichier1fichier2...

comme cat, affiche le contenu de fichier1 fichier2 ... sur la sortie standard mais
effectue un arret chaque page
si less est appell sans arguments, la source est l'entre standard

exemple
less/etc/password

teefichier

duplique l'entre standard vers la sortie standard et dans un fichier

exemple
vmstat1|teetoto

wcoptionfichier

compte le nombre de lignes (-l), bytes (-c), mots (-w) .... dans fichier (ou sur STDIN si
aucun fichier n'est spcifi)

exemple
wcl/etc/passwd

Commandes de base
tailethead
head[nX]fichier1fichier2...

affiche les X dernires lignes de fichier1 fichier2 ... sur la sortie standard
si tail est appell sans arguments, la source est l'entre standard

exemple
headn1/etc/passwd

tail[nX][f]fichier1fichier2...

affiche les X dernires lignes de fichier1 fichier2 ... sur la sortie standard
si tail est appell sans arguments, la source est l'entre standard et le nombre de
lignes est 10
l'option -f permet de faire un 'tail' continu sur un fichier qui croit

exemple
tailn5/var/log/syslog
tailf/var/log/syslog

Une combinaison des deux permet d'afficher la nime ligne d'un fichier :
headn10/etc/passwd|tailn1 : affiche la 9me (10-1) ligne de /etc/passwd
headn20/etc/group|tailn3 : affiche les lignes 17 20 (20-3 -> 20) lignes de

/etc/group

Commandes de base
Versions 'z' & 'bz'
zcatfichier1fichier2...
bzcatfichier1fichier2...

comme cat, mais sur des fichiers gzipps/bzipps


si zcat/bzcat est appell sans arguments, la source est l'entre standard

exemples
zcatmyfile.gz
bzcatmyfile.bz2

zlessfichier1fichier2...
bzlessfichier1fichier2...

comme less, mais sur des fichiers gzipps/bzipps


si less est appell sans arguments, la source est l'entre standard

exemples
bzlessmyfile.bz2

zgrepoptionspatronfichier

duplique l'entre standard vers la sortie standard et dans un fichier

exemples
zgrepusermyfile.gz

Shell
Commandes multiples

Le shell permet l'excution de commandes


successives en les sparant par ';' :
ls>~/liste.txt;cd;ls>>~/liste.txt

Le shell permet d'excuter une commande


uniquement si la prcdente a march :
catfichier>/dev/null&&echo"lefichierexiste"
grepi"effacezmoi"fichier&&rmffichier

Le shell permet d'excuter une commande


uniquement si la prcdent a chou :
catfichier>/dev/null||echo"lefichiern'existepas"
grepi"gardezmoi"~/fichier.txt||rmffichier.txt

Shell
Job control

Fonctionnalit interne au shell


Permet de grer des tches (processus)
multiples dans un mme shell :

suspension temporaire : le processus est


arrt jusqu' nouvel ordre

arrt dfinitif : le processus est termin

mise en arrire/avant plan : le processus


reoit l'entre clavier

Un processus peut ignorer l'arrt dfinitif,


mais pas la suspension

Shell
Job control

Suspendre (stopper) un processus : <Ctrl>z


Arrter (terminer) un processus : <Ctrl>c
(si le processus est l'avant plan)
Arrter (terminer) un processus : kill%n
(si le processus est l'arrire plan)
Voir la liste des processus du terminal (jobs) : jobs
'+' est le job courant (%% ou %+)
'-' est le job prcdent (%)

Mettre un job en arrire plan : bg%n ou %n&

Mettre un job en avant plan : fg%n ou %n

Lancer un job en arrire plan : commande&

Shell
Job control
$sleep100
<ctrlz>
[1]+Stoppedsleep100
$sleep200&
[2]19858
$jobs
[1]+Stoppedsleep100
[2]Runningsleep200&
$bg%1
[1]+sleep100
$jobs
[1]Runningsleep100
[2]+Runningsleep200&
$kill%1
$<return>
[1]Compltsleep100
$fg
sleep200<ctrlc>

$jobs
$

Utilisateurs

The cause of the problem is:


Bad user karma.

BOFH Excuse Server

http://www.cs.wisc.edu/~ballard/bofh/bofhserver.pl

Utilisateurs
Utilisateurs : /etc/passwd

Dfinis dans le fichier /etc/passwd

root (UID 0) :

propritaire de presque tous les fichiers systme

possde tous les droits

les autres :

utilisateurs systme (UID < 1000) : daemon,


postfix, sshd, ...
vrais utilisateurs (UID 1000) : toto, marcel

Mots de passes dfinis dans le fichier


/etc/shadow

Utilisateurs
Utilisateurs : /etc/passwd
Pour chaque utilisateur, le fichier /etc/passwd
contient sept champs :

login

mot de passe ('x' pour les shadow passwords)

UID (User ID)

GID (Group ID, groupe principal)

champ GECOS (nom complet, adresse, tlphones)

rpertoire personnel (home dir)

le shell excut au login

root:x:0:0:LinuxTorvalds,0,123,456:/root:/bin/bash

Utilisateurs
Utilisateurs : /etc/shadow

Seul root peut lire/modifier ce fichier


Pour chaque utilisateur, le fichier /etc/shadow
contient le mot de passe de connexion et ses
paramtres de validit :

login

mot de passe chiffr

6 champs dcrivant la validit du compte

1 champ rserv

Il n'est pas possible de se logguer directement si le


mot de passe est '*' ou '!'

mblanc:$1$QJ//btH...jL:13428:0:99999:7:::

Utilisateurs
/etc/passwd&/etc/shadow
$cat/etc/passwd
root:x:0:0:LinusTorvads:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
gdm:x:106:111:GnomeDisplayManager:/var/lib/gdm:/bin/false
acox:x:1000:1000:AlanCox,KernelSt,0625081221,0474701221:/home/acox:/bin/bash
$
$cat/etc/shadow
root:*:13428:0:99999:7:::
daemon:*:13428:0:99999:7:::
bin:*:13428:0:99999:7:::
sys:*:13428:0:99999:7:::
sync:*:13428:0:99999:7:::
games:*:13428:0:99999:7:::
man:*:13428:0:99999:7:::
lp:*:13428:0:99999:7:::
mail:*:13428:0:99999:7:::
gdm:!:13428:0:99999:7:::
acox:$1$QN//abU4$nHskZjoAb3nx23J2z.WVJeqz.:13428:0:99999:7:::

Utilisateurs
Groupes : /etc/group

Chaque ligne contient 4 champs :

le nom du groupe

le mot de passe du groupe

l'ID du groupe (GID)

la liste des membres du groupe, spars par des ','

Chaque utilisateur possde en gnral un groupe son


nom (Unique Private Group), c'est son groupe primaire
Chaque utilisateur peut aussi appartenir n groupes
secondaires
Les groupes systmes permettent souvent de permettre
aux utilisateurs de manipuler des devices (dialout, fax,
audio, ...)

Utilisateurs
Groupes : /etc/group
$cat/etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:acox,ttso,ltorvalds
dialout:x:20:cupsys,acox,ttso,ltorvalds
fax:x:21:hugo,corentin
cdrom:x:24:haldaemon,acox,ttso,ltorvalds
floppy:x:25:haldaemon,acox,ttso,ltorvalds
tape:x:26:acox,ttso,ltorvalds
sudo:x:27:
audio:x:29:ttso,ltorvalds
wwwdata:x:33:
backup:x:34:
shadow:x:42:
utmp:x:43:
video:x:44:acox,ttso,ltorvalds
sasl:x:45:
plugdev:x:46:haldaemon,acox,ttso,ltorvalds
acox:x:1000:
ttso:x:1001:
ltorvalds:x:1002:
$

Utilisateurs
Cration & gestion

Outils posix :
{user,group}{add,mod,del}
Outils distro-dependant :
{add,del}{user,group}
Outils divers :
chsh, chfn
Edition directe des fichiers

dconseille pour les crations/suppressions

acceptable pour les modifications

Utilisateurs
Voir

Qui suis-je ?
whoami,id,groups,whoneedssleep
Qui est l ?
who,users
Qui tait l ?
last,lastlog
Qui fait quoi ?
w
Qui existe ?
lastlog,cat/etc/passwd

Utilisateurs
Authentification : PAM

L'authentification est gre par PAM (Pluggable


Authentication Modules)
PAM permet de changer la faon dont on va identifier un
utilisateur (globalement, ou pour un service donn)
PAM gre 4 aspects de l'authentification :

account : validit du compte, expiration du mot de passe, ...

authentification : vrification de l'identit de l'utilisateur

password : modification du mot de passe

session : liste des tches effectuer avant la mise disposition


du service (ou aprs sa terminaison)

PAM se configure dans

/etc/pam.conf (configuration globale)

/etc/pam.d/* (configurations spcifiques, par modules, ...)

Utilisateurs
Authentification : PAM
Grce PAM, on peut authentifier un utilisateur de
multiples faons :

par son identifiant/mot de passe situs dans les fichiers


passwd et group (mthode standard)
par son identifiant/mot de passe stocks dans une base
de donnes (MySQL par exemple)

par un dispositif biomtrique (empreintes digitales...)

par un dispositif RFID/Bluetooth

par une clef USB

...en rsum : l'authentification peut se faire :


en fonction de n'importe quel(s) lment(s)
service par service

(par exemple Bluetooth pour login graphique, login/password pour la console)

Utilisateurs
Changer d'identit : su et sudo

su (switch user) :

permet d'executer une commande ou d'ouvrir


un shell en tant que

ncessite de taper le mot de passe de


l'utilisateur dsir (sauf si l'on est root)

sudo :

permet d'executer une commande en tant


que

ncessite de taper SON mot de passe

les possibilits sont dfinies dans /etc/sudoers

Droits

Droits
Gnralits

Chaque fichier ou rpertoire possde :

Chaque fichier ou rpertoire possde 3 listes de droits :

un propritaire
un groupe propritaire
les droits pour le propritaire
les droits pour le groupe
les droits pour les autres

Chaque liste donne les oprations possibles pour cet utilisateur :

lecture (r) :

fichier : donne la possibilit de lire le contenu du fichier


rpertoire : donne la possibilit de lire le contenu d'un rpertoire (donc la
liste des fichiers qu'il contient)

criture (w) :

fichier : permet d'crire dans ce fichier


rpertoire : permet d'y crr/renommer/supprimer des fichiers

excution (x) :

fichier : permet d'excuter ce fichier


rpertoire : permet d'y 'rentrer' (cd) et de voir son contenu

Droits
Fonctionnement

Type
bBlock device
c Character device file
dRpertoire (Directory)
lLien symbolique
sSocket
pFIFO
Fichier normal

Droit
rRead
w Write
xExecute (fichier)
xchdir (rpertoire)
sSUID bit

Destinataire
uUser (propritaire)
g Groupe
oOthers (les autres, ni 'u' ni 'g')

Droits
chmod
chmod : permet de grer les droits et peut fonctionner
selon un mode littral :
chmoddestinataire(s)oprationdroits,...

destinataire : u (user), g (group), o (other) ou a(all)

opration : + (ajouter), - (supprimer), = (mettre la valeur)

droits : r (read),
w (write),
x (execute ou cd)

Droits
chmod
chmod : permet de grer les droits et peut fonctionner
selon un mode littral :

chmoddestinataire(s)oprationdroits,...

destinataire : u (user), g (group), o (other) ou a(all)

opration : + (ajouter), - (supprimer), = (mettre la valeur)

droits : r (read), w (write), x (execute ou cd)

Exemples :
chmodugo+rwxfichier1fichier2
chmodu+rw,g+r,orwxfichier3
chmodug=rwx,o=rxfichier4

chmoda+rx,u+wrepertoire

Droits
chmod

chmod : peut aussi fonctionner en mode octal :

trois groupes d'utilisateurs (u, g, o)

trois bits par groupe correspondant r, w et x

le mode s'exprime alors en octal

Droits
chmod

chmod755<=>chmodu=rwx,g=rx,o=rx

Droits
chown
chown : permet de changer le propritaire ou le groupe
propritaire d'un fichier
chownpropritaire:groupefichier...

propritaire : nouveau propritaire du fichier ou rpertoire


groupe : nouveau groupe propritaire du fichier ou
rpertoire
fichier ... : fichiers ou rpertoires dont il faut changer la
proprit

Si le groupe est omis, chown ne change que le propritaire

chownroot/etc/passwd
Si propritaire est omis, chown ne change que le groupe

chown:cdrom/dev/cdrom

Droits
umask

Les droits d'un fichier ou rpertoire sa cration


sont dfini par umask
A sa cration, un fichier aura les permissions :
666 - (umask)
A sa cration, un rpertoire aura les permissions :
777 - (umask)

$umask0022
$umask
0022
$umaskS
u=rwx,g=rx,o=rx
$touchfichier;mkdirrepertoire;lsldfichierrepertoire
rwrr1tuxzoo...fichier
drwxrxrx2tuxzoo...repertoire

Droits
suid/sgid bits

suid/sgid bits (s) : celui qui excute prend


temporairement l'identit du propritaire ou
groupe propritaire du fichier

$lslzzz
rwxrxrx1ltorvaldsltorvalds02007011623:02zzz
$chmodu+szzz
$lslzzz
rwsrxrx1ltorvaldsltorvalds02007011623:02zzz
$chmodg+szzz
$lslzzz
rwsrsrx1ltorvaldsltorvalds02007011623:02zzz
$

trs utile

mais trs dangereux

Droits
sticky bit

sticky bit (t) : seul le propritaire du fichier ou


rpertoire peut renommer ou supprimer un
fichier dans un rpertoire afflig du sticky
bit

$touchfichier
$chmoda+rxwfichier
$chmod+t.
$sudochownroot.fichier
$lsla
total12
drwxrxrt2rootltorvalds40962007011700:17.
drwxrxrx3ltorvaldsltorvalds40962007011623:02..
rwxrwxrwx1rootltorvalds02007011700:17fichier
$rmffichier
rm:nepeutenlever`fichier':Permissionnonaccorde

Partitions &
Filesystems

Filesystem
Types de filesystems

minix

fs original

simple, encore utilis sur les disquettes

limit (64 Mb)

ext2

dvelopp en 1993

limit (2 Tb)

ext3

ext2 journalis

Filesystem
Types de filesystems

ext4

supporte jusqu'au Pb (1015)

en cours d'intgration au kernel

jfs/xfs

journaliss

respectivement IBM/SGI

ReiserFS/Reiser4

journalis

10 fois plus performant sur les petits fichiers

problme de prennit ?

Filesystem
Types de filesystems

iso9660/udf

respectivement CDRoms/DVDRoms

fat/vfat/ntfs

fat/vfat bien grs

support ntfs plus dlicat (ro)

unionfs

aggrgat de filesystems diffrents

mlange possible entre ro/rw

nfs/smbfs/coda

filesystems rseau

Filesystem
Filesystems journaliss

Un filesystem journalis note toutes les


transactions venir avant de les excuter
En cas de crash, le systme peut savoir ce qui a
t fait et ce qui ne l'a pas t
La journalisation procure donc quelques
avantages :

la dure d'un fsck au boot ne dpend plus de la


taille du filesystem (on sait ou chercher)

intgrit des donnes accrue (et


paramtrables)

ext3/ext4/jfs/xfs/ReiserFS/Reiser4 sont journaliss

Filesystem
Partitions

les disques sont dcoups en partitions primaires


(max : 4) et tendues
les partitions sont reprsentes par des numros
la fin du device reprsentant le disque

les devices dpendent de l'interface du disque et


de sa position (e.g. /dev/hda pour le 1er disque IDE,

/dev/hdb pour le 2me, etc...)

Filesystem
Filesystems

chacune des partitions


contient un filesystem
(fs) qui sera mont dans
l'arborescence du systme

Filesystem
Devices et points de montage

Les disques et les partitions sont des devices

Une partition contient la racine du fs

Les autres

partitions sont montes sur le fs

Filesystem
Cration de partitions
sfdisk : ligne de commande (CLI)
fdisk,cfdisk : menus texte (curses)
gparted : interface graphique (gnome)

Filesystem
Cration de filesystems
mkfs.<put_you_favorite_filesystem_here><device>
user@host:~$ls/sbin/mkfs.*
/sbin/mkfs.cramfs/sbin/mkfs.ext3
/sbin/mkfs.minix/sbin/mkfs.reiser4
/sbin/mkfs.vfat/sbin/mkfs.ext2
/sbin/mkfs.jfs/sbin/mkfs.msdos
/sbin/mkfs.reiserfs/sbin/mkfs.xfs
user@host:~$

minix : fs linux historique, encore utilis pour les disquettes

cramfs : fs pour embarqu et initrd

ext{2,3} : filesystem standard linux (ext3 journalis)

reiser4/jfs/xfs : reiserFS, IBM, SGI (jounaliss)

msdos/vfat : dos (fat) & windows (fat-32)

Filesystem
Rcration : introduction dd
dd est un cat sous strodes :

il peut contrler le nombre d'octets crits

il peut convertir ces octets la vole

il peut lire/crire des fichiers, des devices, des


pipes, stdin/stdout...
il peut sauter une partie de l'entre ou de la sortie
ddif=/dev/zeroof=mes_zeroscount=1bs=1024

bs
: taille des blocs en octets (ici 1ko)
count : nombre de blocs
la taille totale sera donc (bs*count)

Filesystem
Cration de filesystems
user@host:~/temp$ddif=/dev/zeroof=monfs.rawbs=1024count=10240
10240+0enregistrementslus
10240+0enregistrementscrits
10485760octets(10MB)copis,0,08864seconde,118MB/s
user@host:~/temp$sudolosetup/dev/loop0monfs.raw
user@host:~/temp$sudomkfs.ext2/dev/loop0
mke2fs1.39(29May2006)
tiquettedesystmedefichiers=
Typedesystmed'exploitation:Linux
Tailledebloc=1024(log=0)
Tailledefragment=1024(log=0)
2560inodes,10240blocs
512blocs(5.00%)rservpourlesuperutilisateur
Premierblocdedonnes=1
Nombremaximumdeblocsdusystmedefichiers=10485760
2groupesdeblocs
8192blocspargroupe,8192fragmentspargroupe
1280inodespargroupe
Superblocsdesecoursstockssurlesblocs:
8193
crituredestablesd'inodes:complt
crituredessuperblocsetdel'informationdecomptabilitdusystmedefichiers:complt
Cesystmedefichiersseraautomatiquementvrifitousles23montagesou
tousles180jours,selonlapremireventualit.Utilisertune2fscouipourcraserlavaleur.
user@host:~/temp$sudolosetupd/dev/loop0

Filesystem
Montage de partitions

{u,}mount : {d,}montage des partitions sur le


filesystem
mountt<fstype><device><mountpoint>
umount<device|mountpoint>

user@host:~/temp$mkdirp/mnt/mountpoint/
user@host:~/temp$sudomounttext2oloopmonfs.raw/mnt/mountpoint/
user@host:~/temp$df/mnt/mountpoint/
Sys.defich.1KblocsOccupDisponibleCapacitMontsur
/home/leucos/temp/monfs.raw
99119293071%/mnt/mountpoint
user@host:~/temp$sudoumount/mnt/mountpoint/

Filesystem
Partitions : /etc/fstab

Les partitions monter au boot sont dcrites dans /etc/fstab

LABEL=ROOTFS/ext3defaults11
UUID=ed2d8d565c084bd4977e673f7a1966b2/usrext3defaults00
/dev/hda1
/var
reiserfs
defaults00
none/dev/ptsdevptsgid=5,mode=62000
none/dev/shmtmpfsdefaults00
none/procprocdefaults00
none/syssysfsdefaults00
/dev/cciss/c0d0p2swapswapdefaults00
/dev/cdrom/mnt/cdromudf,iso9660noauto,owner,ro00
/dev/fd0/mnt/floppyautonoauto,owner00
/dev/ida/c0d0p1/homeext3defaults11

Pour chaque filesystem monter, /etc/fstab contient :

la partition monter (/dev/hda1)


le moint de montage (/var)
le type de filesystem (reiserfs, ext3, ...)
les options de montage (lecteur seule, propritaire, etc...)
un booln 1 si le fs doit tre sauvegard par dump
un numro d'ordre pour la vrification de fs au boot

Filesystem
Partitions : /etc/fstab
LABEL=ROOTFS/ext3defaults11
UUID=ed2d8d565c084bd4977e673f7a1966b2/usrext3defaults00
/dev/hda1
/var
reiserfs
defaults00

Les partitions monter sont dsignes par :

un device (/dev/hda1)

un label (ROOTFS), cr par e2label ou tune2fsL

un UUID, identifiant unique (ed2d8d56-5c08-4bd4-977e-673f7a1966b2),


cr par tune2fsU

Les UUID et labels permettent une indpendance par


rapport au device
findfs permet de retrouver un fs par label ou UUID

Filesystem
Gestion

df : donne l'occupation des filesystems monts


dfTh|grep"^/dev/"

hdparm : tuning du disque (DMA, energie, ...)


sudohdparm/dev/sda

tune2fs : tuning du filesystem (max-mount, UUID)


sudotune2fsl/dev/sda2

fsck : vrification du filesystem (boot single-user)


fscka/dev/hda6

Filesystem
Filesystems spciaux

procfs

mont dans /proc

contient des informations sur les processus

zone fourre-tout pour les variables exportes


du kernel

sysfs

mont dans /sys

contient des informations sur les devices


prsents

Filesystem
Filesystems spciaux : le swap

L'espace de swap permet de dcharger


temporairement la mmoire physique (RAM)
La taille empirique recommande est 2 * RAM
Lorsqu'un process n'utilise pas une zone de sa
mmoire (page), le kernel peut dcider de la
mettre dans le swap (swap out)
Lorsque la mmoire physique se fait rare, les
zones ncessaires aux process :

doivent tre stockes sur le swap (swap


out)

puis relues depuis le swap lorsque le process

s'excute (swap in)

Filesystem
inodes & fichiers

Dans un fs unix, chaque fichier est


reprsent par un inode
Le fs contient une table d'association
"nom de fichier" "inode"
L'inode contient toutes informations
ncessaires concernant le fichier :

numro d'inode

permissions, propritaire

dates (cration, accs, modification)

rfrences vers les blocs de donnes

Filesystem
inodes & fichiers

Filesystem
Liens symboliques : hard links

Un hard link est


simplement une entre
de la DT qui pointe vers
un inode
Il peur y avoir plusieurs
hard-links sur un inode
(et donc plusieurs
noms pour un
mme contenu)
Les inodes existent tant
qu'il y a au moins un
hard-link pointant
dessus

Filesystem
Liens symboliques : soft links

Les soft links (symbolic links /


symlinks) pointent vers un
autre fichier de la DT
Le lien symbolique n'existe que
par l'objet qu'il pointe : sans lui,
plus de fichier

Filesystem
Hard links et soft links : choisir

Utilisation des liens :

hard links :

ne peuvent fonctionner que sur un mme


filesystem (la tables des inodes est spcifique au
filesystem)
performances maximum (rien ne distingue un hardlink d'un autre)

soft links
peuvent fonctionner entre les filesystems
impact sur les performances (indirection)
un symlink n'est rien sans son hard-link !

Filesystem
Liens symboliques : ln et stat

ln permet de crr des liens


lnoriginaldestination
cre un hard link (destination) pointant sur
l'inode de original

lnsoriginaldestination
cre un lien symbolique destination pointant sur
original

stat permet de connatre toutes les infos d'un


inode
statfichier
affiche le contenu de l'inode point par fichier

Filesystem
LVM : Logical Volume Management

Fournit un abstraction du matriel de stockage :

on travaille sur des volumes logiques et non plus sur


des partitions

on travaille sur des volume groups au lieu de disques

on peut ajouter des partitions dans des volumes


groups

on peut agrandir les volumes logiques si necessaire

LVM permet au final de construire des systmes de


fichiers sur des devices ayant des tailles
modulables
Le systme de fichier doit supporter le
redimensionnement pour en profiter !

Filesystem
LVM

Filesystem
RAID

Niveaux de RAID

(linux-2.6.9+)

jbod (linear) : les disques sont concatnes

raid0 (stripping) : un morceau de donne sur chaque disque

raid1 (mirroring) : un morceau de donne sur tous les disques

raid3 : la parit est stocke sur un disque

raid5 : la parit est distribue sur les disques de l'ensemble RAID

raid6 : la parit est distribue en double sur les disques de l'ensemble RAID

raid 0+1 : un ensemble raid0 en miroir

raid10 (1+0) : un ensemble raid1 stripp

Gestion

/sbin/mdadm

/etc/mdadm/mdadm.conf

Filesystem
Filesystems chiffrs

CryptFS, EncFS, Loop-AES, losetup -e, TrueCrypt,


dm-crypt... l'aide !
Le choses se stabilisent, et deux mhodes
mergent :

TrueCrypt

multi-plateforme (Linux/WindowsXP/200x)
volumes chiffrs indtectables et indcelables
Linux Unified Key Setup (luks)

CryptoAPI kernel
multiclefs
volumes dtectables

Editeurs

An infinite number of monkeys typing into GNU emacs would never


make a good program.
Linus
Torvalds

Editeurs
cat, echo >

toujours disponible

performances imbattables

user@host:~$echo"chat"{"noir,",blanc}>texte.txt
user@host:~$cattexte.txt
chatnoir,chatblanc
user@host:~$cat>texte.txt
chatblanc,chatnoir
user@host:~$cattexte.txt
chatblanc,chatnoir
user@host:~$

pas vraiment un diteur...

Editeurs
vi

(presque) toujours disponible

trs petit

incontournable

cryptique

(pour les emacsiens)

apprendre avant d'en avoir besoin

incontournable

Editeurs
emacs

sait tout faire...

...mme le reste (extensible)

cryptique (pour les vi-istes)

trs gros

(presque) jamais disponible

apprendre avant d'en avoir besoin

Editeurs
...et les autres

CLI : aee, ed, e3, joe, jed, nano, pico,....

XWindow : xed, xwpe, axe,...

Gnome : gedit, gnotepad+, scite,


scribes...
KDE : kate, kedit, ...

Editeurs
Survivre vi

vi a deux modes :

mode commande : ce que l'on tape


est considr comme une commande
et n'affiche rien

mode insertion : ce que l'on tape


s'crit dans le fichier

Du mode commande au mode insertion : i, o, ...

Du mode insertion au mode commande : <Esc>

Editeurs
Commandes vi
n

+ :avancerdenlignes
i :passerenmodeinsertion
o :insreruneligneendessousetpasserenmodeinsertion
dd :effacerlalignecourante
dw :effacerlemotcourant
D :effacerlafindelalignecourante
/ :rechercher
n :occurencederecherchesuivante
:w :ecritlefichiersurledisque
:q :quittevi
:q! :quittevimalgrlesavertissements
:x :ecritlefichiersurledisqueetquittevi(quivaut:wq)

+ G :allerlalignen.Sinestomis,valafindufichier

Shell & commandes avances

Personnaliser le shell
Aliases

Les alias permettent de crr une


commande personnalise
aliascd..="cd.."
aliasla="lsla"
aliascat="echoImpossibledelire"

alias sans arguments donne la liste des


alias actuellement dfinis
unalias permet de supprimer un alias
unaliascd..

Personnaliser le shell
~/.bash{rc,_profile}

L'environnement au dmarrage du shell est


paramtrable

~/.bashrc : xcut chaque shell

~/.bash_profile : excut chaque login shell

Il est prfrable d'utiliser ~/.bashrc, les login


shell se font rares...
La configuration par defaut d'un nouvel
utilisateur est dans /etc/skel
La configuration system-wide est dfinie
dans /etc/bash.bashrc et /etc/profile
Penser personnaliser http_proxy

Commandes avances
Boucles : for
for/in : permet d'excuter une srie de
commandes sur chacun des lments d'une liste

forvarinlist;dothings;done
Exemples :
foriin123
doechoivaut$i
done
foriinmntbootvar;doechoContenude/$i;ls/$i;done
foriinb{in,oot};doechon"/$iprend";duskh/$i;done

Commandes avances
Boucles : backticks & seq

seq : permet de gnrer une liste sur STDOUT


seq19

affiche les chiffres de de 1 9

seq129 affiche les nombres impairs entre


1 et 9

Les``(backticks) excutent une commande et


se remplacent par la sortie de cette commande
rm`seq13` : supprime les fichiers nomms 1
2 et 3

Commandes avances
Boucles : for,`` etseqensemble
for,`` etseq
foriin`seq3`;doechoivaut$i;done
foriin`seq129`;doechoivaut$i;done
foriin`seq921`;doechoivaut$i;done
foriin`ls~`;doechoIlya$idans$HOME;done
foriin~/tmp/*;doechonLefichier$iestdetype""
fileb$i
done
foriin~/tmp/*;doechonLefichier$iestdetype""
fileb"$i"
done
foriin~/tmp/*;doechonLefichier\'$i\'estdetype""
fileb"$i"

done

Commandes avances
Traiter le texte : cut
cut : permet d'extraire une colonne dans un
fichier champs dlimits
cutf<i>d<dlim> <file>

cut lit sur STDIN si file est omis

le sparateur de champ est dlim (blanc si omis)

extrait le ime champ sur chaque ligne et affiche sur STDOUT

cutf1d':'/etc/passwd affiche tous


les utilisateurs dclars dans /etc/passwd

Commandes avances
Traiter le texte : sort
sort : permet de trier les lignes lues dans un
fichier (ventuellement champs dlimits)
sortk<k>[n][r]t<dlim> <file>

sort lit sur STDIN si file est omis

le sparateur de champ est dlim (ou du blanc si dlim est omis)

compare en fonction de la clef la position k

avec l'option -r, l'ordre est renvers (z->a, 9->0)

avec l'option -n, la comparaison n'est plus alphabtique mais numrique

sortk3nt':'/etc/passwd affiche
/etc/passwd dans l'ordre numrique des UID

Commandes avances
Traiter le texte : uniq
uniq : permet de supprimer les lignes
conscutives doublon lues dans un fichier
uniq[c] <file>

sort lit sur STDIN si file est omis

n'affiche qu'une ligne lorsque plusieurs lignes conscutives sont lues

avec l'option -c, uniq affiche le nombre d'occurences pour chaque ligne

echoe"aaa\naaa\naaa\nbbb\nbbb"|uniq
n'affiche que 'aaa' et 'bbb'

Commandes avances
(Mal)traiter le texte : sed
sed : remplacement de texte ("stream
editor")
sed[r]'s/motif1/motif2/'[fichier]

lit fichier ou STDIN si aucun fichier n'est spcifi

-r permet d'utiliser des expressions rgulires (presque) compatibles avec


egrep

remplace 'motif1' par 'motif2' (les motifs sont des expressions rgulires
compatibles avec grep)

\1...\n dans motif2 sont des variables positionnelles reprsentant un match


dans motif1

crit le rsultat sur STDOUT

echo"chatnoir"|sedr's/noir/blanc/'
affiche "chat blanc"

Commandes avances
(Mal)traiter le texte : sed
sed : remplacement de texte (stream
editor)

le modificateur 'g' permet d'attraper plusieurs fois le motif sur la


mme ligne :

echo"chatnoir,trsnoir"|sedr's/noir/blanc/'
affiche chat blanc, trs noir
echo"chatnoir,trsnoir"|sedr's/noir/blanc/g'
affiche chat blanc, trs blanc

le modificateur 'i' permet d'ignorer la casse lors des valuations :

echo"chatNOIR,trsnoir"|sedr's/noir/blanc/g'
affiche chat NOIR, trs blanc

echo"chatNOIR,trsnoir"|sedr's/noir/blanc/gi'

affiche chat blanc, trs blanc

Commandes avances
(Mal)traiter le texte : sed
sed : remplacement de texte (stream
editor)

\1...\n dans motif2 sont des variables positionnelles

ces variables rfrenceront les expression entre () dans motif1

elles ne sont initialises que s'il y a une concordance

echoe"chatnoir"|sedr's/chat(.*)/\1chat/'
affiche "noir chat"
echoe"abc"|sedr's/(.)(.)(.)/\3\2\1/'
affiche "cba"

Commandes avances
Traiter le texte : sed

Rappel sur les expressions rgulires

.
n'importequelcaractre
*
lecaractreprcdent0ouplusieursfois
+
lecaractreprcdent1foisaumoins
?
lecaractreprcdent0ou1fois
{n}
lecaractreprcdentexactementnfois
{m,n} lecaractreprcdentdemnfois
{n,}
lecaractreprcdentnfoisouplus
[az]
uncaractreenminuscule
[azAZ]
unelettre
[09]
unchiffre
[[:alnum:]]:[azAZ09]
^/$
ledbut/lafindeligne
[[:alpha:]]:[azAZ]
|
sparateurpourspcifier
[[:ascii:]]:caractreascii(...)
demultiplesexpressions
[[:blank:]]:espaceoutabulation
(oulogique)
[[:cntrl:]]:caractredecontrle
[[:digit:]]:[09]
[[:graph:]]:caractresimprimables
etvisibles
[[:lower:]]:[az]

[[:print:]]:caractreimprimable
[[:punct:]]:ponctuation
[[:space:]]:espace,tabulation,...
[[:upper:]]:[AZ]

[[:word:]] :[azAZ09_]
[[:xdigit:]]:[afAF09]

Classes de caractres

Commandes avances
Rechercher des fichiers : find
findargumentoptions

liste les fichiers/rpertoires situs dans argument selon des critres dfinis dans
options.

options
-name glob : liste les fichiers correspondant au shell glob glob
-type f/d/l : ne liste respectivement que les fichiers, rpertoires, liens
-exec : excute une commandercursif

patrons de globs
.
*
+
?
[az]
[azAZ]
[09]

n'importequelcaractre
lecaractreprcdent0ounfois
lecaractreprcdent1ounfois
lecaractreprcdent0ou1fois
uncaractreenminuscule
unelettre
unchiffre

exemples
find~/mes_docstypefname"*.doc"
find~/mes_docstypefname"*facture*"execrmf'{}'\;
find/name"*log*"typed

Commandes avances
xargs, companion de find

xargs permet d'utiliser la sortie d'une


commande et de la passer en argument une
autre
cutf6d':'/etc/passwd|xargsduskh

La commande xargs est souvent utilise en


combinaison avec find :
findarguments|xargscommande

C'est l'quivalent de 'find -exec', la performance


en plus :

find -exec excute un process pour chaque rsultat

xargs cumule la sortie pour maximiser le passage


d'arguments

Commandes avances
Rechercher des fichiers : locate

find effectue une recherche sur le


filesystem en temps rl : long
Pour la recherche par nom de fichier,
locate permet de faire la mme chose
locate utilise une base de donnes prgnre par updatedb
locate permet de rechercher des
expressions rgulires (find ne peut
rechercher que des globs)

Shell scripting

Talk is cheap.
Show me the code
Linus Torvalds

Shell scripting
Bases

Un shell script est un fichier excutable


contenant une srie de commandes shell
Un script commence gnralement par :

#!/bin/sh

Il doit tre excutable, ou appell par 'sh


script'
Par convention, il se termine en gnral
par .sh
Les lignes commencant par '#' sont des

commentaires

Shell scripting
Variables

Dans un script, on peut utiliser des


variables locales ou issues de
l'environnement
echo$HOME

En dehors de l'affectation, la variable doit


tre prcde par '$'
mavar=bonjour
echo$mavar

Les arguments passs aussi scripts sont


automatiquement affects aux variables

$1, $2, ...

Shell scripting
Variables

La variable $? donne la valeur de sortie


numrique de la dernire commande
Un rsultat nul indique (en gnral !) que
la commande a russi

user@host:~$touchf
user@host:~$catf
user@host:~$echo$?
0
user@host:~$rmf
user@host:~$catf
cat:f:Aucunfichierourpertoiredecetype
user@host:~$echo$?
1

Shell scripting
Branchements

La construction if/then/else/fi permet


d'effectuer des branchements
conditionnels

en fonction de valeur de sortie de


commandes :

echon192.168.0.254est
ifpingc1192.168.0.254
then
echojoignable
else

echoinjoignable
fi

Shell scripting
Branchements

La construction if/then/else/fi permet d'effectuer


des branchements conditionnels

en fonction de valeur de variables :

if["$USER"="root"]
then
echoBonjourmaitre
else
echoEncoreunutilisateurdebase...
fi

La construction [ ] est l'quivalent de la

commande 'test'

Shell scripting
Comparaisons

La commande test (ou '[]') permet de


comparer des valeurs entre-elles

Comparaison numriques

eq:
ne:
gt:
ge:
lt:
le:

=
!=
<
>

gal (equal)
diffrent (not equal)
plus grand que (greater than)
plus grand que ou gal (greater or equal)
plus petit que (less than)
plus petit que ou gal (less of equal)

Comparaison de chanes
:
:
:
:

gal (chanes identiques)


diffrent
prcde (tri alphabtique)
suit (tri alphabtique)

Shell scripting
Arithmtique

Le shell offre trois possibilits pour


formuler des calculs :

la commande exprexpression :
valeur=`expr10\*20`
valeur=`expr$valeur+2`

la construction $[expression]
valeur=$[10*20]
valeur=$[$valeur+2]

la construction $((expression))
valeur=$((10*20))
valeur=$(($valeur+2))

Shell scripting
Boucles

while condition/do/done permet de boucler tant


que la condition est vraie
num=1
while[$numle5];do
echo$num
num=$[$num+1]
done
whilepingc1$host>/dev/null2>&1;do
echo$hostestjoignable
done
echo$hostestInjoignable

Grer et superviser
les ressources

We all know Linux is greatit does infinite loops in 5 seconds


Linus Torvalds

Grer les resssources


Grer le temps

Mettre le systme l'heure

Depuis un serveur ntp :


ntpdatetime.erasme.org

A la main :
dateset="2006122423:59:00"

Lire l'heure
date+FORMAT
ex : date+%Y%m%d""%H:%M:%S

Chronomtrer
timecommande

Grer les ressources


Grer les processus

Chaque excutable, script, dmon,


apparat comme un processus sur le
systme lorsqu'il est lanc
Lorsqu'un processus est lanc, le kernel
lui attribue un numro (PID)
La commande jobs ne permet de voir que
les processus excuts dans le terminal
courant
Pour visualiser les autres processus, il
faut utiliser 'ps'

Grer les ressources


Grer les processus : ps

Voir tous les processus


psedf
Voir tous les processus, un peu plus de
dtail
psawux
Voir les processus de l'utilisateur courant
pswux
Mnmoniques

PID
PPID
VSZ
RSS,RES
TTY
STAT
START
TIME

:IDduprocess
:IDduprocessparent
:consommationtotaleduprocess(RAM+SWAP)
:tailleoccupsurlammoirephysique(RAM)
:terminalassoci
:tat(R=runnable,S=sleep,T=stopped,Z=zombie)

:heuredelancement
:cumultempsCPUconsomm

Grer les ressources


Grer les processus : kill{,all}

kill permet d'envoyer in signal un processus


ce processus peut intercepter ce signal et agir en
consquence
kill n'est pas forcment malfaisant !
mankill donne la liste de signaux possibles
killall permet d'envoyer un signal des
processus par leur nom
un utilisateur ne peut signaler que ses processus
attention : kill est souvent un built-in (et non
/bin/kill), donc helpkill et non mankill
pour de l'aide !

Grer les ressources


Grer les processus : kill{,all}

Signaux courants

killsignalpid
killallsignalnom

pid : numro du process

signal : numro ou nom du signal


(1 envoie le signal tous les processus)

STOP/CONT : quivalents <Ctrl>-z et fg/bg pour les process du terminal


INT (2) : arrt demand par l'utilisateur (gnralement via <Ctrl-C>)
TERM (15) : kill demande gentiment au process de se terminer
KILL (9) : le processus est tu sans sommation
HUP (1) : signal de dconnexion du terminal, maintenant surtout utilis pour
demander une reconfiguration
USR1 : gnralement utilis pour demander une reconfiguration

Grer les ressources


Quotas disque

La suite d'outils 'quota' permet de limiter


l'espace disque et le nombre d'inodes :

par usager

par groupe

Ces limites sont soit :

rigides : ds qu'elles sont atteintes,


impossible de crr d'autres fichiers

souples : lorsque les limites sont atteintes,


l'utilisateur peut encore consommer de
l'espace pendant une priode de grce

Grer les ressources


Limites PAM

PAM permet d'appliquer un certain nombre de


limites un utilisateur ou un groupe
Ces limites sont dfinies dans
/etc/security/limits.conf
Elles sont appliques la catgorie session

nombre max de process

mmoire maximum

priorit des processus

...

voir ulimita

Superviser le systme
Problmes classiques

Filesystem plein

90% des problmes spontans

rsolu facilement en augmentant la capacit du fs

Filesystem corrumpu

pertes trs rares avec les fs journaliss

rsolu facilement avec une politique de backup efficace

installez LVM

installez bontmia/dump/arkeia/...

Crash disque

Un setup RAID (soft ou hard) permet de se prmunir facilement


d'un crash disque

Un reboot sera peut-tre ncessaire en fonction du bus du


disque

utilisez le RAID (hard ou fourni par le kernel)

Superviser le systme
Problmes classiques

Surcharge systme

de loin, la plus forte cause d'indisponibilit du systme


rsolu laborieusement par de la pratique et la destruction de
nombreux systmes innocents (de production de prfrence)
exprimentez, cassez, paniquez, recommencez
ne donnez pas de shell n'importe qui

Piratage

utilisez ps/top/vmstat/sar...

Facteur humain

traquer les gourmands


optimiser le systme

deux catgories d'admins systme : ceux qui savent qu'ils ont t


pirats, et ceux qui ne le savent pas
luttez au quotidien pour tre dans la 1 catgorie
utilisez iptables, auditez et faites auditer
vos systmes

Grer les ressources


Fichiers ouverts : lsof

Voir tous les fichiers ouverts

lsof

Voir tous les processus qui ouvrent fichier

lsoffichier

Voir tous les processus qui ouvrent un fichier


sous rpertoire

lsofrpertoire

Voir tous les fichiers ouverts par le processus


PID

lsofpPID

Afficher en boucle toutes les S secondes

lsofrS

Grer les ressources


Fichiers ouverts : lsof&fuser

Voir tous les processus ayant une connexion


ouverte avec host

lsofi@host

Voir tous les process ayant une connexion tcp


sur le port port

lsofiTCP:port

Voir tous les processus ouvrant des fichiers sur


un device ou point de montage

fuservm<device|mountpoint>

Idem, en effectuant le mnage

fuserkvm<device|mountpoint>

Superviser le systme
Grer l'espace disque

Voir l'occupation de tous les filesystems


dfTh
Voir l'occupation du filesystem contenant le
rpertoire rep
dfThrep
Voir l'occupation de tous les filesystems ext3
dfhtext3
Voir l'occupation de chaque sous rpertoires de
rep
duhrep
Voir l'occupation du rpertoire rep
dushrep

Superviser le systme
Charge systme

Le noyau gre l'ordonancement de tous les


processus du systme
Les processus peuvent tre dans plusieurs tats,
les plus courants tant :

R (Runnable)

: le processus demande le processeur ou d'E/S

S (Sleep)

: le processus dort

T (sTopped)

: le processus a t arret (job control)

La charge systme (load average) est le


nombre moyen de processus dans la run-queue
(tat 'R') pendant une priode donne
La charge systme ne reflte pas forcment la
charge processeur

Superviser le systme
Charge systme

La charge systme ne tient pas compte du


nombre de processeurs (ou de cores)
uptime renvoie les load averages des 1, 5 et 15
dernires minutes

user@host:~$uptime
16:19:59up101days,6users,loadaverage:5.10,3.23,2.31

(uptime donne aussi l'heure (!) et le temps de


fonctionnement total du systme)

La charge est toujours disponible dans


/proc/loadavg

user@host:~$cat/proc/loadavg
5.103.232.314/4020403

Superviser le systme
Charge CPU

vmstat permet de connatre la charge globale


des processeurs

user@host:~$vmstat
procsmemoryswapiosystemcpu
rbswpdfreebuffcachesisobiboincsussyidwa
00177086386811995638901600605121160571911

mpstatpermetdeconnatrelachargedes
processeurs

user@host:~$mpstatPALL
Linux2.6.1710generic(host)27.12.2006
16:56:12CPU%user%nice%sys%iowait%irq%soft%idleintr/s
16:56:12all6,910,110,881,130,020,5890,37422,11
16:56:1204,840,101,111,970,051,1590,78422,11
16:56:1218,980,110,650,280,000,0089,960,00

lorsqu'un nombre n est ajout en ligne de


commande, l'affichage dfile en continu
toutes

les n secondes

Superviser le systme
Linux et la mmoire

Le kernel utilise la mmoire pour :

son propre code

ses propres donnes

le code des applications xcuts

les donnes des applications excutes

le cache disque

La mmoire en divise en pages


Les pages les moins utilises sont mises en
mmoire virtuelle (dans le swap), ce processus est
appel swapping out ou paging out
Pour de bonnes performances, il faut, si possible,
minimiser les oprations de page out

Superviser le systme
Mmoire

free permet de connatre l'tat de la mmoire

user@host:~$freem
totalusedfreesharedbufferscached
Mem:100998524089333
/+buffers/cache:562447
Swap:99617978

Mem dcrit la mmoire physique (RAM)


Swap dcrit la mmoire swap
La quantit de mmoire (physique) rllement disponible
est sur la ligne '-/+ buffers/cache' (ici 447 Mb)

vmstat donne peu prs les mmes


informations

user@host:~$vmstat
procsmemory...
rbswpdfreebuffcache...
00177081928492748338840...

la mmoire rllement disponible vaut free+buff+cache

Superviser le systme
Mmoire virtuelle

vmstatetfree permettent aussi de connatre


l'tat de la mmoire virtuelle

user@host:~$vmstat
....swapiosystemcpu
....sisobiboincsussyidwa
....20590594721157892881
user@host:~$free
totalusedfreesharedbufferscached
Mem:1034224101612018104043712440104
/+buffers/cache:532304501920
Swap:1020088177201002368

swapons permet de connatre la liste des


partitions utilises pour le swap

user@host:~$swapons
FilenameTypeSizeUsedPriority
/dev/sda5partition1020088177201

Superviser le systme
Couteaux suisses
top : montre la liste des processus tri
selon les critres choisis
Tri
M : tri
P : tri
N : tri
T : tri

par mmoire
par CPU
par PID
par temps processeur

Selection
1 : affiche tous les processeurs
i : affiche les tches runnables
k : tue un process
r : renice

Superviser le systme
Couteaux suisses
saidar : affiche un rsum trs complet
des diffrents sous-systmes

loadavg

CPU (global)

processus

mmoire

rseau

disques

Superviser le systme
Couteaux suisses
statgrab : permet d'obtenir des
statistiques formattes

user@host:~$statgrabnet.eth0.upnet.eth1.up
net.eth0.up=false
net.eth1.up=true
user@host:~$statgrabload.
load.min1=0.220000
load.min15=0.110000
load.min5=0.140000
user@host:~$statgrabumem.cachemem.free
414134272
63537152
user@host:~$statgrabumem.cachemem.free|
tr'\n'''|awk'{print($1+$2)/(1024*1024)"M"}'
455.188M

Superviser le systme
Analyse off-line : sar

sar permet de collecter des informations sur


le systme intervalles rguliers
ces informations sont stockes sur le systme
et peuvent tre analyses posteriori
saroptionsdebutefin

b:
B:
c:
d:
n:
P:

entres sorties
q: load average
paging
r: utilisation de la mmoire
cration de process
R: statistiques mmoire
activit sur les devices block u: utilisation du CPU
activit rseau
v: utilisation des inodes
activit processeur
y: activit des tty

Superviser le systme
Analyse off-line : sar
user@lazyserver:~$sarus10:00:00e11:00:00
Linux2.6.1710generic(lazyserver)28.12.2006
10:05:01CPU%user%nice%system%iowait%steal%idle
10:15:01all0,530,051,090,100,0098,22
10:25:01all0,160,070,980,010,0098,77
10:35:01all1,230,061,240,050,0097,42
10:45:01all0,580,061,190,060,0098,11
10:55:01all3,470,171,942,350,0092,06
Moyenne:all1,200,081,290,510,0096,92

sar peut aussi monitorer en temps rl l'activit d'un processus :

sarxPID10
user@lazyserver:~$sarx670210
Linux2.6.1710generic(lazyserver)28.01.2007

11:18:45PIDminflt/smajflt/s%user%systemnswap/sCPU
11:18:4667022702,020,0097,982,020,000
11:18:47670212310,890,0091,097,920,000
11:18:4867027212,000,0094,005,000,001
11:18:4967023215,000,0097,002,000,000
11:18:50670210741,410,0093,945,050,001

11:18:5167028178,430,0093,144,900,001

Superviser le systme
Rebooter ?

Raisons de rebooter un linux :

changement de kernel
ajout de matriel
dmnagement

uptime
donne la dure de fonctionnement du systme

shutdownhtime
arrte le systme (equivalent 'halt')

shutdownrtime
reboote le systme (equivalent 'reboot')

shutdownc
annule un shutdown programm

time : hh:mm, +m ou now

Packages
Installation de logiciels

Packages
Installation de logiciels
Les packages (paquetages)
ont pour objectif :

de permettre une installation simple

........................ dsinstallation ........

........................ mise jour ........

de grer des dpendances entre packages

d'tre recompilable facilement

Packages
Installation de logiciels
Encore des chapelles !

RPM sous Fedora, Redhat, Mandriva, SuSE...

DEB sous Debian, Ubuntu

tar.gz binaires sous Slackware

scripts + tar.gz sources sous Gentoo

OpenPKG, sorte d'espranto du packaging

...sans compter les packages source

Packages
Redhat Package Manager

Fonctionne sur les distributions bases RPM

http://en.wikipedia.org/wiki/List_of_Linux_distributions#RPM-based_free_distributions

Deux commandes suffisent pour grer les


paquetages sur les systmes bass RPM

rpm : permet de manipuler les fichiers .rpm et


de grer les paquetages installs

yum : permet d'installer des paquetages depuis


diffrentes sources

Les packages RPM ont une extension de fichier


<arch>.rpm (paquetages binaires) ou .src.rpm
(paquetages source)
La commande rpm accepte des URL (ftp/http)

Packages
Redhat Package Manager : rpm

Les packages sont manipuls avec la seule


commande rpm
Installer un package
rpmipackage.rpm

Supprimer un package
rpmepackage

Mettre jour un package install


rpmupackage.rpm

Les options v et h rendent l'affichage plus


'humain'.

Packages
Redhat Package Manager : rpm
La commande query (-q) permet d'interroger un
package ou la base de donnes des packages
installs

Voir les informations sur un package

rpmqippackage.rpm (query information)


rpmqipackage (pour un package install)
Lister les fichiers d'un package

rpmqlppackage.rpm (query list)


rpmqlpackage (pour un package install)
Rechercher dans quel package se trouve fichier

rpmqffichier (query find)

Packages
Redhat Package Manager : yum

La commande yum permet de rechercher ou


d'installer un paquetage directement depuis un
dpt (Internet, CD/DVD, disque)

La liste des dpots est dfinie dans /etc/yum*

Installer le paquetage nom

yuminstallnom

Rechercher les paquetages contenant la chane


nom

yumsearchnom

Mettre jour les informations depuis les dpts

yumupdate

Packages
Packages Debian

Fonctionne sur les distributions bases Debian

http://en.wikipedia.org/wiki/List_of_Linux_distributions#Debian-based_free_distributions

Les systmes debian possdent l'quivalent


(approximatif) du monde RPM pour grer les
paquetages :

dpkg : permet de manipuler les fichiers .deb et


de grer les paquetages installs

aptget : permet d'installer des paquetages


depuis diffrentes sources

Les packages Debian ont une extension de fichier


.deb (paquetages binaires)
La commande dpkg n'accepte pas d'URL

Packages
Packages Debian : dpkg
Les fichiers packages sont manipuls avec la
commande dpkg

Installer ou mettre jour un package


dpkgipackage.deb

Supprimer un package
dpkgrpackage

Supprimer un package et sa configuration


dpkgPpackage

Reconfigurer un package
dpkgreconfigurepackage

Packages
Packages Debian : dpkg

Rechercher un fichier dans les paquetages


installs
dpkgSfichier

Lister les fichiers actuellement installs pour un


paquetage.
dpkgLpaquetage

Lister les fichiers installs par un paquetage.


dpkglpaquetage

Donne l'tat du paquetage install


dpkglpaquetage

Packages
Packages Debian : aptget

La commande aptget permet de


rechercher ou d'installer un paquetage
directement depuis un dpt (Internet,
CD/DVD, disque)
aptget est trs performant par rapport
yum
La liste des dpots est dfinie dans

/etc/apt/{sources.list,sources.list.d/}

Installer le paquetage nom


aptgetinstallnom

Packages
Packages Debian : sources apt

les outils de la famille apt utilisent des sources


pour obtenir les packages et les mtadonnes
associes
ces sources, dfinies dans
/etc/apt/{sources.list,sources.list.d/}
ont le format suivant

debhttp://fr.archive.ubuntu.com/ubuntu/edgymainrestricted

url du dpt
distribution
sections...

attention en ajoutant des sources :

il est impratif d'utiliser des sources de confiance


il faut vrifier la signature des paquets (aptkey permet
de grer les identits)

Packages
Packages Debian : aptget

Upgrader tous les paquetages installs


aptgetupgrade

Mettre jour l'information depuis les


dpots
aptgetupdate

Supprimer le paquetage
aptgetremovepackage

Passer une distribution plus rcente


aptgetdistupgrade

Vrifier l'tat de la base de donnes


aptgetcheck

Packages
Packages Debian : apt*

apt est en fait une famille de commandes


ddies la getion de paquetages.
Quelques membres de la famille :

aptfile : rechercher un fichier dans les


dpots apt

aptcache : rechercher un package dont la


description ou le nom contient une expression
rgulire
aptfilesearch`whichbash`
aptcachesearchtcpdump

aptcachensearch'.*dump.*'

Packages
tar, {g,b}zip

tar permet de crr un fichier contenant d'autres


fichiers
Il est souvent utilis en combinaison avec gzip ou
bzip2
tar est parfois utilis comme systme de gestion
de paquetage dans certaines distributions
(Slackware)
Crr une archive archive.tar contenant fichiers
tarcvfarchive.tarfichiers

Crr une archive tar compresse gzip


archive.tar.gz contenant fichiers

tarcvzfarchive.tar.gzfichiers

Packages
tar, {g,b}zip

Crr une archive tar compresse bzip2


archive.tar.bz2 contenant fichiers
tarcvjfarchive.tar.bz2fichiers

Lister le contenu de l'archive


tartvfarchive
tartvzfarchive.tar.gz
tartvjfarchive.tar.bz2

Extraire une archive tar


tarxvfarchive
tarxvzfarchive.tar.gz

tarxvjfarchive.tar.bz2

Packages
Installer partir des sources

Il est prfrable d'installer des logiciels


avec le gestionnaire de paquetage de la
distribution

intgration plus fine dans la distribution

gestion des dpendances et des conflits

mises jour automatiques

dsinstallation aise

Tous les logiciels ne sont cependant pas


disponible sous forme de paquetages

Il est donc parfois ncessaire d'installer

un logiciel partir de ses sources

Packages
Installer partir des sources

Les logiciels installs en dehors du


gestionnaire de package doivent l'tre
dans /usr/local/
La plupart des logiciels sont construits
autour d'outils de dveloppement
communs :

automake/autoconf : dfinition des paramtres


de compilation en fonction de la plateforme

make : automatisation de la construction du


binaire partir des sources et installation

Des cas particuliers existent souvent;


il
n'y

a pas de recette miracle...

Packages
Installer partir des sources, v1
Exemple : installer le logiciel 'soft-1.2.tar.gz'
Mthode 1 :

dcompacter les sources $tarxvzfsoft1.2.tar.gz


$cdsoft1.2
configurer la compilation $./configure
....
$make
compiler
...
$makeinstall
installer
...

A ce stade, si tout s'est bien pass, 'soft' doit tre


install dans divers rpertoires sous /usr/local/
Cette mthode ne permet pas de dsinstallation
simple

Packages
Installer partir des sources, v2
Exemple : installer le logiciel 'soft-1.2.tar.gz'
Mthode 2 :

dcompacter les sources $tarxvzfsoft1.2.tar.gz


$cdsoft1.2
configurer la compilation $./configure
....
$make
compiler
...
$sudocheckinstall
installer
...

Aprs quelques questions, checkinstall va faire un


paquet binaire pour votre distribution et l'installer
Cette mthode permet de transformer un logiciel
source en paquet binaire automatiquement

Boot process, runlevels, cron

Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM

(2) Chargeur d'OS

excut depuis le MBR par le BIOS


limit 512 bytes

(3) Boot kernel


montage du root fs (/)
chargement des drivers
excution d'init

(4) init

passage au runlevel demand


excution squence des scripts
console

(5) Scripts SysV

dmarrage des services

Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM

(2) Chargeur d'OS

excut depuis le MBR par le BIOS


limit 512 bytes

(3) Boot kernel


montage du root fs (/)
chargement des drivers
excution d'init

(4) init

passage au runlevel demand


excution squence des scripts
console

(5) Scripts SysV

dmarrage des services

Boot
Bootloaders : lilo, grub & co.

Le travail du bootloader : charger le kernel


en mmoire
Il doit donc :

savoir ou le trouver

savoir le charger

Aprs des annes de domination de lilo,


Grub pris le dessus
D'autres bootloaders existent (notamment
syslinux, loadlin, silo, milo, emile, etc...)

Boot
Bootloaders : grub

GRUB fonctionne en 3 temps :

1er tage (512b d'assembleur) boot sur le MBR

1.5me tage (~10kb), boot au dela du MBR

2me tage (~100kb), charg depuis /boot/grub

GRUB sait donc (grce 1.5), lire un fichier sur


un filesystem ext3/reiserfs/xfs/..
Il lit aussi sa configuration directement sur le
filesystem : pas besoin derinstaller GRUB
chaque changement
Le 2me tage trouve le kernel et lui passe la main

Boot
grub : menu.lst

/boot/menu.lst est le fichier de configuration de grub

il contient des scripts qui sont interprts par grub lors du boot

ces scripts peuvent tre dits au boot si besoin

dmarrage en single user

changement du root filesystem

grub-install permet d'crire les tages 1 et 1.5 sur le disque


sudogrubinstall/dev/sda

la commande grub se prsente comme un shell; par exemple


les commandes quivalentes grub-install sont :

[root@server~]#grub
grub>device(hd0)/dev/sda
grub>root(hd0,0)
grub>setup(hd0)

Boot
grub : menu.lst
default0
titleUbuntu,kernel2.6.1710generic
root(hd0,0)
kernel/boot/vmlinuz2.6.1710genericroot=/dev/sda6
initrd/boot/initrd.img2.6.1710386
quiet
boot
titleUbuntu,memtest86+
root(hd0,0)
kernel/boot/memtest86+.bin
quiet
boot
titleWindows95/98/NT/2000
root(hd0,0)
makeactive

chainloader+1

Boot
grub : edition

Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM

(2) Chargeur d'OS

excut depuis le MBR par le BIOS


limit 512 bytes

(3) Boot kernel


montage du root fs (/)
chargement des drivers
excution d'init

(4) init

passage au runlevel demand


excution squence des scripts
console

(5) Scripts SysV

dmarrage des services

Boot
Kernel

Le kernel se dcompresse lui mme en RAM, et


s'excute, passant par diffrentes phases :

initialisation des sous-systmes (mmoire, ACPI, CPU, ...)

initialisation des drivers (IDE, SCSI, ...)

chargement ramdisk

chargement modules du ramdisk

initialisation des (nouveaux) devices

montage des pseudo-filesystems (/proc, /sys)

montage de la (vraie) partition /

excution d'init

Kernel
Versions
Versionnement du noyau
Versions a.b.c[.d]

a.b : branche principale

b impair : branche de dveloppement


2.1, 2.3, 2.5., ...
b pair : branche stable
2.0, 2.2, 2.4, 2.6, ...

c : identifiant unique dans la srie

d : depuis 2.6.8/2.6.11, sous versions


mineures intgrant des bugfixes (stabilisation
de la version 'a.b.c')

unamer permet de connatre votre version


du noyau

Kernel
Modules

Les modules sont des morceaux de noyau


Ils peuvent tre chargs/dchargs pendant
l'excution du kernel
Ils sont compils partir de sources du kernel...
...et peuvent aussi provenir de fournisseurs
commerciaux (drivers)
Un dictionnaire (modules.dep) permet de savoir
quel module est ncessaire au fonctionnement
de tel autre module
On les trouve dans /lib/modules/`unamer`/

Kernel
Modules

...intert ?

kernel plus petit (barre des 1,44Mo !)

Empreinte mmoire optimise

Dboguage plus facile

Modules binaires provenant de tiers

Plusieurs version peuvent cohabiter

Attention la scurit !

Kernel
Modules

Insertion d'un module dans le kernel


insmod/chemin/complet/vers/module
modprobemodule
Retrait d'un module du kernel
rmmodmodule

Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM

(2) Chargeur d'OS

excut depuis le MBR par le BIOS


limit 512 bytes

(3) Boot kernel


montage du root fs (/)
chargement des drivers
excution d'init

(4) init

passage au runlevel demand


excution squence des scripts
console

(5) Scripts SysV

dmarrage des services

Runlevels
init

init est le premier et le seul processus excut


directement par le kernel (PID 1)
il est le pre de tous les autres
du point de vue d'init, le systme est dans des
tats discrets : les runlevels
chaque runlevel dfinit un dmarrage spcifique
du systme
les runlevels possibles sont [0-6sS]
le comportement d'init en fonction du runlevel est
dfini dans /etc/inittab
init a donc pour vocation principale de mettre le

systme en tat de marche

Runlevels
/etc/inittab
id:levels:action:process

id : identificant unique

levels : les runlevels pour lesquels cette action s'applique

action : action ou dclencheur

process : le(s) processus lancer

l0:0:wait:/etc/init.d/rc0
l1:1:wait:/etc/init.d/rc1
l2:2:wait:/etc/init.d/rc2
l3:3:wait:/etc/init.d/rc3
l4:4:wait:/etc/init.d/rc4
l5:5:wait:/etc/init.d/rc5
l6:6:wait:/etc/init.d/rc6
#WhattodowhenCTRLALTDELispressed.
ca:12345:ctrlaltdel:/sbin/shutdownt1arnow

Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM

(2) Chargeur d'OS

excut depuis le MBR par le BIOS


limit 512 bytes

(3) Boot kernel


montage du root fs (/)
chargement des drivers
excution d'init

(4) init

passage au runlevel demand


excution squence des scripts
console

(5) Scripts SysV

dmarrage des services

SysV init
Startup scripts

init met le systme en route en invoquant (indirectement) des


scripts de dmarrage
Ces scripts permettent d'excuter des applications
persistantes (par exemple, un serveur de messagerie)
appeles dmons
Ces scripts peuvent aussi excuter des actions ponctuelles
(montage des diffrents systmes de fichiers, dmarrage du
rseau, ...)
Ces scripts son situs dans des rpertoires /etc/rcN.d
(N : runlevel)
Ces scripts sont en fait des liens symboliques vers de vrais
scripts existant dans /etc/init.d
Ils sont excuts dans l'ordre de leur numros de squence
Ce type d'initialisation est appell SysV style
init
(N.d.T : initialisation la sauce systme cinq)

SysV init
Startup scripts

Les scripts situs dans les diffrents rpertoires


correspondant aux runlevels suivent une
convention de nommage prcise :

[SK][09][09]label

S/K : le script sera appell avec le paramtre


start ou stop (kill).
C'est la responsabilit du script d'accepter et argument et de
le traiter convenablement.

00-99 : nombre deux chiffres donnant le


numro de squence.
Les scripts sont excuts du plus petit numro au plus grand.
L'unicit n'est pas requise.

label : un label unique pour le script.

Correspond en gnral au nom entier du script original

SysV init
Runlevels
0 : arrt de la machine
S/s/1 : single user
mode mono-utilisateur utilis pour la maintenance
pas de rseau, personne ne se loggue
2 : mode multi-utilisateur variant selon la distribution
mode par dfaut sous Ubuntu
mode multi-utilisateur sans rseau sous RedHat
3 : mode multi-utilisateur variant selon la distribution
mode texte par defaut sous Redhat/Fedora
4 : inutilis sous la plupart des distributions
5 : mode multi-utilisateur
mode graphique par dfaut sous Redhat/Fedora
6 : reboot de la machine
A l'exception des niveaux 0 et 6, ces conventions varient d'un unix l'autre
La

commande runlevel permet de connatre le runlevel


prcdent et
le runlevel actuel

SysV init
Startup scripts
$ls/etc/rc2.d/
K77ntpserver
S01apport
S05vbesave
S10acpid
S10powernowd.early
S10sysklogd
S11klogd
S13gdm
S14ppp
S16openvpn
S18hplip
S19cupsys
S20apmd
S20dbus
S20festival
S20hotkeysetup
S20laptopmode
S20makedev

S20nbdclient

S20nbdserver
S20nvidiakernel
S20postfix
S20powernowd
S20rsync
S20ssh
S20sysstat
S20tftpdhpa
S20virtualbox
S20xinetd
S25bluetooth
S25mdadm
S89anacron
S89atd
S89cron
S90binfmtsupport
S95preload
S98usplash
S99acpisupport

S99rc.local
S89anacron
S89atd
S89cron
S90binfmtsupport
S95preload
S98usplash
S99acpisupport
S99rc.local
S99rmnologin
S99stopreadahead

SysV init
Dmarrer un script ' la main'

Les applications qui doivent s'excuter au boot


installent un script dans /etc/init.d
Il est ensuite possible de contrler cette application
grce ce script
Dmarrer l'application
/etc/init.d/applicationstart
Stopper l'application
/etc/init.d/applicationstop
Redmarrer l'applications
/etc/init.d/applicationrestart
Demander l'application de recharger sa
configuration
/etc/init.d/applicationreload

Runlevels
Changer de runlevel

Au boot, il est possible de demander un


dmarrage mono-utilisateur GRUB

En ajoutant 'S' ou 'single' la ligne


kernel, le noyau va demander init de
dmarrer en mode 'single user'

Runlevels
Changer de runlevel

En cours de fonctionnement, la commande telinit


demande init de modifier le runlevel
telinitlevel

shutdownhnow (ou halt) est l'quivalent de


telinit0
shutdownrnow (ou reboot) est l'quivalent de

telinit6

Cron
Fonctionnement

cron permet de programmer des tches


rcurrentes sur le systme
ces tches sont listes dans des crontabs

chaque utilisateur possde sa propre crontab

il y a une crontab systme

ces fichiers sont scruts par le dmon


cron/crond/anacron chaque minute (pas besoin
de redmarrer le dmon)
cron excute une tche si son heure est venue
grce cron, on peut automatiser la rotation
des logs, la mise jour de bases de donnes,

les backups, la gnration d'index...

Cron
Configuration
cron peut tre configur de multiples manires

/etc/crontab

crontab systme; contient les programmations


globales du systme

/var/spool/cron/crontabs/$USER
contient la crontab de $USER

/etc/cron.d/

contient des 'mini-crontabs' ajoutes par les


packages l'installation

/etc/cron.{hourly,daily,weekly,monthly}

contient des scripts excuts respectivement


toutes les heures/jours/semaines/mois

Cron
Format des crontabs
minheurejourmoismoisjoursemaineusercommand
(le champ user n'existe que dans la crontab systme)
min : quelle minute de l'heure [0-59]
heure : quelle heure [0-23]
jourmois : quel jour du mois [1-31]
mois : quel mois de l'anne [1-12]
joursemaine : quel jour de la semaine [0-7], 0=7=dimanche
user : sous quel utilisateur
command : commande excuter
Pour chaque champ chronologique, on peut avoir :
- une valeur, l'excution aura lieu cette valeur
- une plage de valeurs A-B, l'excution aura lieu chaque valeur
- une combinaison de plages spare par des ',' (A-B,C,D-E,...)
- une '*', correspondant la plage entire
- un modificateur '/n' pour une plage, provoquant l'excution

toutes les n fois

Cron
Format des crontabs
#/etc/crontab:systemwidecrontab
#Unlikeanyothercrontabyoudon'thavetorunthe`crontab'
#commandtoinstallthenewversionwhenyoueditthisfile.
#Thisfilealsohasausernamefield,thatnoneoftheother
#crontabsdo.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#mhjdmmoijdsusercommand
17****rootcommande1
256***rootcommande2
476**7rootcommande3
5261**rootcommande4
*****rootcommande5
**/2***rootcommande6
029/3****rootcommande7
#

Cron
Editer sa crontab

crontab permet d'diter un fichier cron


crontabuusere
dition de la crontab de user

L'dition se fait avec l'diteur spcifi dans


$VISUAL ou $EDITOR
La variable $MAILTO dans une crontab permet
de spcifier l'adresse laquelle envoyer le
rsultat des commandes

MAILTO=

envoi au propritaire de la crontab

MAILTO=tux@linux.org envoi a tux@linux.org


MAILTO=""

aucun envoi

At
Execution diffre unique

contrairement cron, cette excution est unique

at lit les commandes excuter sur STDIN

at permet d'excuter une commande une heure


donne

at renvoie par mail STDOUT et STDERR renvoy


par les commandes
atq et atrm permettent respectivement de voir la
liste des jobs et d'en supprimer

echo"echoAnniversaireTux"|atAug25
echo"echofaischaufferl\'eau"|atteatime
5minutes
echo"md5sum/bin/*"|atnow+1hour

Logs
Syslog

syslog permet d'unifier la gestion des logs sur


un ou plusieurs systmes
syslog :
un dmon
un protocole permettant de transmettre des
logs via un rseau IP
syslog permet d'envoyer les logs vers
la console
un tty
des fichiers, des pipes
des usager loggus localement
un dmon syslog distant

Logs
Syslog : concepts
syslog repose sur 2 concepts fondamentaux

facility
la 'facility' est la catgorie de l'vnement prise
parmi : auth, authpriv, cron, daemon, ftp, kern,
lpr, mail, news, syslog, user, uucp, local[0-7]
level
level est le niveau d'un vnement, pris parmi :
debug, info, notice, warning, err, crit, alert, emerg
chaque vnement envoy au dmon syslog
possde une facility et un level
syslog va ensuite traiter ce message en fonction

de ces deux paramtres et de sa configuration

Logs
Syslog : /etc/syslog.conf

#
#Exemplesdelogs
#
auth,authpriv.*/var/log/auth.log
*.*;auth,authpriv.none/var/log/syslog
daemon.*/var/log/daemon.log
kern.*/var/log/kern.log
uucp.*/var/log/uucp.log

mail.info/var/log/mail.info
mail.warn/var/log/mail.warn

mail.err/var/log/mail.err

Logs
logrotate : rotation des logs

Sans intervention, les logs vont devenir de plus


en plus gros
problme, le filesystem n'est pas illimit !

logrotate est appell priodiquement par cron


et permet :
d'archiver un log
de compresser un log
de redmarrer un dmon afin qu'il rouvre
son fichier de log
Il est trs configurable et peut fonctionner selon
une priode programmable et conserver autant
d'archives que ncessaire

Rseau TCP/IP

Rseau TCP/IP
Thorie

Les rseaux sont


gnralement organiss en
"piles protocolaires"
chaque couche de la pile
offre un niveau d'abstraction
supplmentaire la couche
suprieure
chaque couche offre un
service supplmentaire par
rapport la couche
infrieure

Rseau TCP/IP
Piles
Communication navigateurserveur web

Rseau TCP/IP
Piles
Communication navigateurserveur web
c'est aussi une communication entre chacune des couches

Rseau TCP/IP
Encapsulation

Rseau TCP/IP
Adressage IP

4 octets (32 bits)


0.0.0.0 255.255.255.255
soient 232 adresses possibles (~4.3 milliards)
n bits pour ladresse rseau
(32-n) bits pour ladresse de lhte
Adresses publiques attribues par lICANN via
diffrents RIRs (RIPE, ARIN, APNIC, LACNIC, AfriNIC)
Plages d'adresses prives d'usage libre :
10.0.0.0/8 (10.0.0.0 10.255.255.255)
172.16.0.0/12 (172.16.0.0 172.31.255.255)
192.168.0.0/16 (192.168.0.0 192.168.255.255)

Rseau TCP/IP
Adressage IP : masques

Le masque dtermine quelle est la proportion d'adresse


rseau et d'adresse d'hte dans une adresse IP
Ce concept n'a de sens que pour prendre des dcisions de
routage
La premire adresse d'une plage dsigne le rseau lui-mme;
la dernire est l'adresse de broadcast (multi-diffusion)
< 1994, les adresses taient spares par classes ("classfull
addressing") :

classe A : 8 bits adresse rseau, 24 bits adresse hte

classe B : 16 bits adresse rseau, 16 bits adresse hte

classe C : 24 bits adresse rseau, 8 bits adresse hte

> 1994, les adresse IP se font rares : les frontires ne sont


plus forcment alignes aux classes (8, 16, 24 bits)
naissance de CIDR (Classless InterDomain Routing)

Rseau TCP/IP
Adressage IP : masques

Rseau TCP/IP
Adressage IP : masques

Rseau TCP/IP
Adressage IP : CIDR

Les masques CIDR donnent directement le nombre


de bits rseau dans l'adresse
CIDR permet une (plus) grande souplesse dans
l'usage des adresses
CIDR permet d'agrger des blocs ensemble, afin de
rduire la taille tables de routage
L'operation de division d'un bloc s'appelle le
"subnetting"
L'operation d'aggregation de blocs s'appelle le
"supernetting"

Rseau TCP/IP
Adressage IP : CIDR

Rseau TCP/IP
Ports UDP/TCP

Cods sur 16 bits (0-65535)


Ports standards attribues aux protocoles
par lICANN
Pas d'obligation d'utiliser le port standard
(sparation des couches de la pile)
Numros de port > 30000 rarement
utiliss (masquerading, traceroute)
Sous Linux (*nix), les ports < 1024 sont
rservs root

Rseau TCP/IP
Dmultiplexage

Rseau TCP/IP
Routage des datagrammes IP

Pour communiquer, les htes transmettent leur paquets


IP des "routeurs"
Les "routeurs" sont aussi des htes au sens TCP/IP, avec
la particularit
d'avoir plusieurs interfaces
de faire passer des paquets d'une interface l'autre

Rseau TCP/IP
Routage des datagrammes IP

Un datagramme voyage dans plusieurs dimensions


entre les quipements
dans la pile IP de ces quipements

Dcapsulation/encapsulation chaque noeud selon


"niveau" du "switch"
Le routage IP s'effectue par prise de dcision en
fonction de l'IP de destination

Rseau TCP/IP
DNS : Domain Name System

Rseau TCP/IP
Configuration

Pour tre fonctionnelle, la pile IP n'a besoin que


d'une chose : une adresse (avec son masque)
Pour sortir du LAN, il faudra aussi une
passerelle (gateway, next-hop)
Pour rsoudre les noms en adresse, il faut un
serveur DNS

AccsInternet = adresse + next-hop (+ DNS)

Rseau TCP/IP
Adresse IP : ifconfig

ifconfig permet d'affecter des adresses IP


aux interfaces de la machine
ifconfig existe sur tous les Unix BSD
ifconfig[interface][paramtres]

ifconfig
affiche les informations sur toutes les interfaces
ifconfigeth0
affiche les informations sur l'interface eth0

ifconfigeth0192.168.0.1netmask255.255.255.0
affecte l'adresse 192.168.0.1/24 l'interface eth0

Rseau TCP/IP
Table de routage : route

route permet d'affecter des adresses IP aux


interfaces de la machine
route existe sur tous les Unix BSD
route[add|del]rseau[gwpasserelle]

route
affiche les informations sur toutes les interfaces
routeadddefaultgw192.168.0.254
ajoute une route par dfaut via 192.168.0.254
routedeldefault
supprime la route par dfaut

Rseau TCP/IP
Adresse IP : ip

Il faut savoir qu'ifconfig et route existent...


... mais il faut utiliser la commande ip
ip gre :
l'adressage IP (comme ifconfig)
la table de routage (comme route)
la table arp (comme arp)
les devices (comme ifconfig)
mais apporte aussi du nouveau :
le policy routing
gestion des autres tables de routage
syntaxe cohrente et concision
ip est la commande utiliser pour bnficier

du routage avanc (iproute2) sous linux

Rseau TCP/IP
Adresse IP : iplink/addr

Voir les addresses


ipaddrshow[devdevice]

Affecter une adresse avec ip


ipaddraddaddresse/mskdevdevice
ipaddraddaddressenetmaskmskdevdevice
(en cas d'appels multiples, ip ajoute des alias l'interface)

Supprimer une addresse


ipaddrdeladdresse/mskdevdevice
ipaddrdeladdressenetmaskmskdevdevice

Supprimer toutes les addresses


ipaddrflushdevdevice

Mettre en route/couper une l'interface


iplinksetdevicetat

(tat : up pour mettre en marche, down pour couper)

Rseau TCP/IP
Adresse IP : iproute

Voir la table de routage principale


iprouteshow

Ajouter une route


iprouteaddaddresse/mskviapasserelle

Supprimer une route


iproutedeladdresse/msk

Supprimer toutes les routes


iprouteflushtablemain

Obtenir la route pour un subnet


iproutegetaddresse/msk

Couper le routage vers un subnet

iprouteaddblackholeaddresse/msk

Rseau TCP/IP
DNS : le resolver

La rsolution d'adresses est l'affaire du rsolver


Le rsolver n'est pas un dmon mais une librairie
qui est utilise par les applications (pas de cache)
Le rsolver se configure via /etc/resolv.conf
Dans une configuration standard, le rsolver
consulte dans l'ordre :

le fichier /etc/hosts

le 1er serveur de noms de /etc/resolv.conf

le 2me serveur de noms de /etc/resolv.conf

le 3me serveur de noms de /etc/resolv.conf

parfois DNS multicast (Ubuntu)

Rseau TCP/IP
DNS : /etc/resolv.conf

la directive 'nameserver' permet de spcifier les


adresses IP de serveurs de noms (3 maximum)
nameservera1.b1.c1.d1
nameservera2.b2.c2.d2
le rsolver tentera une rsolution sur
a1.b1.c1.d1puis sur a2.b2.c2.d2 si
infructueux

la directive 'search' permet d'ajouter


automatiquement un domaine un nom sans
point ('.') :
searchdomaine1.orgdomaine2.org

une rsolution de 'serveur' se traduira par la


rsolution de serveur.domaine1.org puis
serveur.domaine2.org si infructueux

Rseau TCP/IP
DNS : /etc/hosts
/etc/hosts peut contenir des associations
IP/hostname, permettant :

de dfinir des noms personnaliss (plus courts,


pour du test, ...)

de surcharger (recouvrir) des noms d'htes


existants (interception de l'accs un
hostname, utilisation d'un miroir plus proche)

de rsoudre plus rapidement des noms


frquemment demands

de rsoudre des noms en l'absence ou


indisponibilt des DNS

a.b.c.d nom.domaine.orgnomnombis...

Rseau TCP/IP
Configuration via DHCP

DHCP se prsente sous forme d'un dmon

Deux variantes occupent le terrain :

dhcpcd (Fedora)

dhclient (Debian)

Dmarrer dhcp sur l'interface :


dhcpcdeth0
dhclienteth0

Stopper le dmon dhcp :


dhclientr

dhcpcdk

Rseau TCP/IP
Diagnostic : connectivit IP

ping utilise le protocole ICMP pour vrifier la


connectivit entre deux htes

par dfaut, ping envoie un paquet par


seconde indfiniment

l'option -f (flood) permet d'envoyer au moins


100 'echo request' par seconde

fping est une variante qui permet de pinguer


plusieurs cibles la fois

Rseau TCP/IP
Diagnostic : connectivit IP
ping[cnombre][f][s]adresse
nombre : nombre de paquets envoyer
adresse : adresse IP destinataire
f : flood (au moins 1 paquet toutes les 10ms)
s : taille du paquet en bytes

fping[cnombre][g]adresse
nombre : nombre de paquets envoyer
adresse : adresse IP destinataire
g : teste un subnet complet

Rseau TCP/IP
Diagnostic : routage

Lorsqu'un routeur transmet un paquet d'une


interface vers une autre, il dcrmente le
champ TTL

Rseau TCP/IP
Diagnostic : routage

Si aprs la dcrmentation, le TTL est zro, le


routeur dtruit le paquet avertit l'expditeur

Les outils de la famille de traceroute


exploitent cette particularit du protocole

Rseau TCP/IP
Diagnostic : routage

user@x:~$tracepathy
1:x(192.168.0.1)0.188ms
1:a(192.168.0.254)22.844ms

Rseau TCP/IP
Diagnostic : routage

user@x:~$tracepathy
1:x(192.168.0.1)0.188ms
1:a(192.168.0.254)2.84ms
2:b(84.31.2.45)22.74ms

Rseau TCP/IP
Diagnostic : routage

user@x:~$tracepathy
1:x(192.168.0.1)0.188ms
1:a(192.168.0.254)2.84ms
2:b(84.31.2.45)22.74ms
3:c(212.27.55.126)28.41ms

Rseau TCP/IP
Diagnostic : routage

user@x:~$tracepathy
1:x(192.168.0.1)0.188ms
1:a(192.168.0.254)2.84ms
2:b(84.31.2.45)22.74ms
3:c(212.27.55.126)28.41ms
4:d(193.251.240.45)31.44ms

Rseau TCP/IP
Diagnostic : routage

user@x:~$tracepathy
1:x(192.168.0.1)0.188ms
1:a(192.168.0.254)2.84ms
2:b(84.31.2.45)22.74ms
3:c(212.27.55.126)28.41ms
4:d(193.251.240.45)31.44ms

5:y(194.199.76.199)79.319msreached

Rseau TCP/IP
Diagnostic : DNS

nslookup et dig sont en comptition sur les


diagnostics DNS
nslookup est trs largement disponible et
possde un mode interactif
dig a une syntaxe plus souple, et permet
d'effectuer plusieurs requtes simultanes
Le deux outils permettent d'obtenir des
rponses sur des enregistrements prcis :

a (Address) : adresse IP de l'hte


mx (Mail eXchanger) : serveur de messagerie entrant pour le domaine
ns (Name Server) : serveur de nom pour le domaine

ptr (Pointer) : rsolution du nom depuis l'IP

Rseau TCP/IP
Diagnostic : DNS

nslookup en ligne de commande


nslookup[type=type]nom
(le type est a par dfaut)
nslookup sans argument passe en mode
interactif
serverserveur : change le serveur DNS
utilis
settype=type : slectionne le type
d'enregistrement voulu

a (Address) : adresse IP de l'hte


mx (Mail eXchanger) : serveur de messagerie entrant pour le domaine
ns (Name Server) : serveur de nom pour le domaine

ptr (Pointer) : rsolution du nom depuis l'IP

Rseau TCP/IP
Diagnostic : DNS
dig[@server]typenom[typenom]
(le type est a par dfaut)

type : le type d'enregistrement voulu

@server : serveur de nom interroger

dig est assez verbeux : grepv'^;' s'impose


l'option -x permet d'effecuter une rsolution
inverse

a (Address) : adresse IP de l'hte


mx (Mail eXchanger) : serveur de messagerie entrant pour le domaine
ns (Name Server) : serveur de nom pour le domaine

ptr (Pointer) : rsolution du nom depuis l'IP

Rseau TCP/IP
Diagnostiquer les connexions

netstat permet d'obtenir la liste de toutes les


"sockets" ouvertes

une socket est une descripteur de fichier


utilis pour une communication entre
processus (IPC)

les connexion TCP ainsi que les sockets


d'coute UDP sont lists par netstat

netstattunap

| | | | |__liste les process


| | | |__liste mme les sockets en coute(all)
| | |__n'effectue pas la rsolution de noms
| |__liste les sockets UDP
|__liste les sockets TCP

Rseau TCP/IP
Internet texte

Linux dispose d'un nombre consquent d'outils


internet 'texte'

HTTP/FTP : wget, curl, lynx, elinks, links

FTP : ftp,ncftp

SMTP : mail(x)

POP/IMAP : pine, mutt

MMS : mimms

IRC : irc

... et talk, finger, whois, ...

Rseau TCP/IP
Internet texte
Ces outils permettent une grande automatisation des
tches lies au web :

obtention de donnes, ventuellement filtres


elinksdumphttp://slashdot.org/|grepitux

suivi de modifications de pages web (


elinksdumpwww.kernel.org|diffindex.html

tlchargements avec reprise de transfert


wgetndcftp://ftp.iso.fr/pub/ubuntu6.10.iso

crations de mirroirs
wgetm(ou mieux : rsync)

envoi de mails en ligne de commande (cat|mail)


elinksdumpwww.site.org||loggerplocal0.err"siteweb
hs"&&echo"sitewebhs"|mails"etatdusite"me@me.org

Exemple : Faire sa propre newsletter avec les dernires nouvelles du kernel ?


Simple comme :

lynxdumphttp://www.kernel.org|mails"News"me@me.org

Rseau TCP/IP
Configuration au boot

La configuration rseau n'est pas standard

chaque distribution possde une implmentation


particulire

comme toujours, vous tes libre de dvelopper


vos propres scripts si l'existant n'est pas adapt

Configuration commune

/etc/resolv.conf : configuration du DNS

/etc/hostname : dfinition du nom d'hte (parfois


/etc/HOSTNAME)

/etc/hosts : fichier de correspondance ip/hte

La lecture des scripts de boot SysV est le


meilleur moyen de dterminer le processus
de

configuration

Rseau TCP/IP
Configuration Debian/Ubuntu

/etc/network/interfaces : configuration des interfaces

autoeth0eth1
ifaceeth0inetdhcp
ifaceeth1inetstatic
address192.168.0.2
netmask255.255.255.0
gateway192.168.0.254

/etc/iftab : correspondance adresse mac/device

eth0mac00:15:c5:ab:dc:3barp1
eth1mac00:15:c5:ab:dc:3carp1

Rseau TCP/IP
Configuration RedHat/Fedora

/etc/sysconfig/network : paramtres gnraux, passerelle


par dfaut

NETWORKING=yes
HOSTNAME=server.home.lan
GATEWAY=192.168.0.254

/etc/sysconfig/network-scripts/ifcfg-<int> : configuration
ip de l'interface

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:08:02:47:17:71
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet

/etc/sysconfig/network-scripts/route-<int> : routes
associes l'interface

192.168.100.0/24via192.168.0.250

Rseau TCP/IP
Super-serveur xinetd

xinetd (et tous les dmons type "inetd") est un


"super serveur" :

il s'intercale entre le client et le serveur

il permet de recevoir les connexion pour des


serveurs TCP et UDP

une fois la connexion reue, il va dmarrer le


serveur et lui passer la connexion

une instance de xinetd permet de recevoir les


connexions destines plusieurs serveurs
conomie de ressources / latence accrue

xinetd offre en plus des fonctionnalits de

contrle de ressources et de filtrage

Rseau TCP/IP
tcpwrappers

Mcanisme de filtrage pour l'accs aux serveurs


Permet de ragir aux tentatives frauduleuses en
lanant des scripts
Les serveurs doivent explicitement supporter ce
mcanisme (compils avec libwrap), ou tre
lancs via xinetd (en utilisant tcpd)
configuration dans /etc/hosts.allow (couples
serveur/client accepts) et /etc/hosts.deny
(couples serveurs rejets)
tombe en dsutude : de moins en moins
de serveurs sont compils avec libwrap et
xinetd offre plus de possibilits

Rseau TCP/IP
inetd & tcpwrappers

Rseau TCP/IP
netfilter : filtrage avec iptables

netfilter est le sous ensemble du kernel responsable du filtrage


de paquets
filtrage selon caractristiques niveau 2 (interface, mac)
filtrage selon les champs transport (ports, flags tcp)
filtrage selon des champs rseau (source, dest, tos, ttl,
protocole transport, ...)
filtrage selon taux d'arrive (rate limiting)
grce netfilter, il est possible de faire subir les svices les
plus extrmes aux paquets circulant dans le kernel
rcriture d'une partie du paquet (adresses IP, ports, ttl, ...)
rejet
destruction
notification (log)
traitement en espace utilisateur
netfilter est configur par des rgles, consitues de chines et
conditions et de cibles, et regroupes dans des tables

Rseau TCP/IP
netfilter : tables

les tables sont des ensembles regroupant des


rgles ayant une vocation particulire :
mangle : table dans laquelle les paquets sont
gnralement "triturs" : modification de ttl,
marquage pour l'application de QoS, etc...

nat : table dans laquelle les translations


d'adresse sont opres (nat source, nat
destination

filter : table ddie au filtrage de paquet,


dcide du sort de chaque paquet transitant
dans le kernel

la table filter est la table utilise par dfault


lorsque la commande iptables est invoque

Rseau TCP/IP
netfilter : chanes

les chanes sont des lieux "virtuels" traverss par les


paquets :

INPUT : chane traverse par les paquets entrants et


destination de la machine

OUTPUT : chane traverse par les paquets sortant,


mis par cette machine

FORWARD : chane traverse par les paquets routs


par la machine (i.e. entrant par une interface et sortant
par un autre)

PREROUTING : chane traverse par les paquets reus


du rseau

POSTROUTING : chane traverse par les paquets


mis sur le rseau aprs la dcision de routage

chaines utilisateurs : vous tes libres de crr vos


propres chaines dans une table

Rseau TCP/IP
netfilter : cibles

les cibles dterminent ce que l'on fait du paquet


certaines cibles sont non-terminales (returning targets) :
le traitement du paquet continue aprs cette cible
d'autres sont terminales (non-returning targets) : le
traitement du paquet s'arrte avec la dernire cible
ACCEPT : accepte le paquet
DROP : dtruire le paquet en silence
REJECT : rejeter le paquet avec un message
l'expditeur (code ICMP ou TCP reset)
SNAT : effectue une translation d'adresse source
MIRROR : retour l'envoyeur !
MARK : mettre une marque sur le paquet pour
utilisation ultrieure
LOG : crire une ligne via syslog
QUEUE : traitement du paquet en espace utilisateur

... quelques autres dizaines...

Rseau TCP/IP
netfilter : politiques

chaque chane a une politique par dfaut


cette politique sera applique si aucune rgle
n'a attrap un paquet auparavant
les politiques possibles sont :

ACCEPT : tout est accept

DROP : tout est silencieusement rejet

il est trs fortement conseill d'utiliser DROP


comme politique par dfaut
tout fermer par dfaut

n'ouvrir que le ncessaire

Rseau TCP/IP
iptables : usage

Dterminer la politique par dfaut


iptablesP<CHAINE><POLITIQUE>
iptablesPINPUTDROP
Insrer une rgle de filtrage (dbut de chane)
iptablesI<CHAINE>..rgle..j<CIBLE>
Ajouter une rgle de filtrage (en fin de chane)
iptablesA<CHAINE>..rgle..j<CIBLE>
Supprimer une rgle
iptablesD<CHAINE>..rgle..j<CIBLE>
Lister les rgles
iptablesLv
Vider les rgles d'une chane
iptablesF<CHAINE>
Pour les oprations sur d'autres tables que filter, il faut

spcifier 'ttable'
iptnatAFORWARD...

Rseau TCP/IP
iptables : spcifications

de rgles

La rgle permet de tester des caractristiques du


paquet
Les options prennent la forme ngative si elles
sont prcdes par '!'
Quand ces options apparaissent dans une mme
rgle, un ET logique est effectu
s
: IP source
d
: IP destination
p
: protocol
i
: interface d'entre du paquet
o
: interface de sortie du paquet
mMOD : charge le module MOD
sport : port source (modules tcp, udp)
dport : port destination (modules tcp,
udp)

...

Rseau TCP/IP
iptables : exemples
iptablesPINPUTDROP
politique par dfaut : on jette
iptablesAINPUTptcpmtcps10.1.1.0/24dport22j
ACCEPT
on accepte les connexions tcp sur le port 22 (ssh) si elles viennent du
rseau 10.1.1.0/24
iptablesAINPUTpudpmudps!10.1.1.23dport53j
ACCEPT
on accepte les connexions udp sur le port 53 (dns) si elles ne viennent
pas de la machine 10.1.1.23
iptablesAINPUTptcpmtcpilodport3306jACCEPT
on accepte les connexions tcp vers le port 3306 (mysql) uniquement si
elles arrivent de l'interface loopback (cette machine)
iptablesAINPUTptcpmtcpi!lodport3306jLOG
on se plaint syslog si une connexion arrive sur notre serveur MySQL de
l'extrieur
iptablesAINPUTpicmpicmptypeechorequestmlimit
limit5/secondlimitburst5jACCEPT
on limite le traitement des echo requests icmp
iptablesAINPUTmmultiportptcps10.1.1.1dports

smtp,imap,pop3jACCEPT
le module multiport permet de 'matcher' plusieurs ports en une rgle

Rseau TCP/IP
Paramtres particuliers

Activer le routage :
echo1>/proc/sys/net/ipv4/ip_forward

Logguer les martiens


echo1>/proc/sys/net/ipv4/conf/default/log_martians

Refuser les icmp redirects


echoO>/proc/sys/net/ipv4/conf/default/accept_redirects

Rejeter les paquets spoofs (avec des adresses locales)


echo1>/proc/sys/net/ipv4/conf/all/rp_filter

Tous les paramtres rseau sont dcrits dans


/usr/src/linux/Documentation/networking/ipsysctl.txt

sysctl peut aussi tre utilis pour modifier ces valeurs


/sbin/sysctlwnet.ipv4.ip_forward=1

Au boot, le systme applique les valeurs spcifies dans


/etc/sysctl.conf

Rseau TCP/IP
telnet & ssh

telnet permet de se connecter un port TCP


distant
pour utiliser un shell (protocole telnet)
pour "parler" un autre protocole (http, smtp, ...)
ssh chiffre tout le trafic entre deux htes, et
permet :
d'ouvrir un shell sur une machine distante
de copier des fichiers entre machines (scp)

de rediriger des ports


...

pour les connexions distantes, il faut prfrer


systmatiquement ssh telnet si possible

Rseau TCP/IP
ssh : authentification

ssh a une multitude de possibilits pour


authentifier les utilisateurs
il est gnralement plus sr et plus simple
d'utiliser l'authentification clef publique

Rseau TCP/IP
Scurit rseau lmentaire

Services ouverts

ne dmarrez que les services (dmons) ncessaires

Services ouverts sur des interfaces

des services peuvent n'tre utiles qu'aux serveurs locaux


(exemple : MySQL pour apache)

netstat permet de lister les interfaces sur lesquelles unservice


est disponible (un port est ouvert)

netstat permet de connatre la liste des services ouverts

n'ouvrez les services que sur les interfaces adquates

Filtrez toujours

il est toujours important de filtrer, mme si un service n'est pas


ouvert sur une interface

filtrer peut permettre de limiter les dnis de service

le filtrage est un filet de scurit en cas d'erreur de configuration

utilisez iptables, et utilisez des politiques


DROP par

dfaut

Interfaces graphiques

Interfaces graphiques
Xwindow, XFree86, X.org

Xwindow est l'infrastructure de base des interfaces


graphiques sous unix depuis 1984
L'interface graphique est compltement optionnelle,
et parfaitement inutile sur des serveurs
Xwindow est un protocole client serveur :

l'affichage d'une application est indpendant de


sont excution

il peut tre dport travers un rseau

il peut aussi tre transport via SSH

Aujourd'hui l'implmentation la plus rpandue sous


linux est x.org, issue de Xfree86

Interfaces graphiques
Gnome, KDE, Xfce, e, ...

Les interfaces graphiques sont implmentes


par dessus le serveur X (x.org)

Gestionnaire de fentres (le "look") : grent


l'aspect purement mcanique : iconification,
bordures, dcorations, etc...
blackbox, fvwm, windowMaker, fluxbox,
twm
Gestionnaires de bureau (le "feel") : grent la
session, les associations mime, les bus entre
applications, les dialogues standard, les
icones, ...
Gnome, KDE, Xfce,

Interfaces graphiques
$DISPLAY

La variable d'environnement $DISPLAY permet dfinir le


serveur X utilis pour l'affichage
Des terminaux spcialiss (terminaux X) sans disques
durs ni CPU utilisent exclusivement cette fonctionnalit
Xwindow livre par dfaut la prise en main distance
depuis 1984...

Questions ?

#!/bin/sh
readQuestions
test$Questions||exit

Unless you have a hundred unanswered questions in your mind


you haven't read enough...
djb

Etudes de cas

Etudes de cas
A la carte
Configuration
Filtrage niveau 7

compiler un kernel et iptables et mettre en place du filtrage


niveau 7
xinetd

mettre en place xinetd

ouvrir les services echo et chargen


Filtrage

filtrer tous les services

ouvrir chargen
Dploiement de ssh

dterminer les causes d'une surcharge en processus

remdier au problme
Looping back

mettre en place un filesystem chiffr en loopback

mettre en place un filesystem sur RAID en loopback

mettre en place un filesystem LVM2 en loopback

mettre en place une combinaison (deux ou trois ensemble)


L'attaque des clones

cloner un systme avec dd


Synchroniser des rpertoires distants

scp

tar & ssh

rsync
fuser : tout monter

compilation de curlftps

monter un filesystem depuis un serveur ftp

faire unscript type SysV pour le montage

Urgences

Out of swap space

rajouter du swap la vole par un swapfile

rajouter du swap la vole depuis une partition


Too much processes

dterminer les causes d'une surcharge en processus

remdier au problme
Out of memory

determiner la cause du manque de mmoire

remdier au problme
Filesystem full

trouver d'ou vient le problme

mettre en place des quotas pour remdier au problme


Disque HS

merci le RAID1

changer le disque dfaillant

tester le disque dfaillant


Au voleur, mon init !

init disparu : booter le systme et rparer le problme

init disparu : booter sur un CD live et rparer le problme

trouver, si possible, le coupable


Pirates !

vrifier l'intgrit d'un systme suspect

trouver la faille

quels enseignements ?

Rfrences

Rfrence
Raccourcis bash
CTRL +

r :recherchedansl'historique

CTRL + a :dbutdeligne
CTRL + e :dbutdeligne
CTRL + :motprcdent
CTRL + :motsuivant
CTRL + k :coupedelapositioncourantejusqu'lafindelaligne
CTRL + y :collecequiatprcdemmentcoup
CTRL + d :effacelecaractredroiteducurseur
CTRL +

t :transposelecaractresouslecurseuraveclecaractresuivant

ESC

+ d :effacelemotdroiteducurseur

ESC

t :transposelemotprcdentaveclemotsuivant

Rfrence
Raccourcis less
ESPACE :avancerd'unepage
:avancerd'uneligne
n

+ :avancerdenlignes
b :reculerd'unepage

+ b :reculerdenlignes
q :quitter
/ :rechercher
n :occurencederecherchesuivante
> :valafindufichier
< :vaaudbutdufichier

cmd :excutelacommandecmddansunshell

v :editelefichierencoursdans$VISUALou$EDITOR

Rfrence
Compltion et historique bash
Compltion
TAB
:compltelasaisieencours
TAB

:afficheunelistedescompltionpossibles
TAB

Historique
CTRL +

r texte:recherchetextedansl'historique
:commandeprcdente
:commandesuivante
! nombre:excutelacommandenumronombre
! texte:excuteladernirecommandedbutantpartexte

$HISTFILE:fichierhistorique(pardfaut~/.bash_history)

$HISTFILESIZE:tailledufichierhistorique(pardfaut500)

Rfrence
Job control
CTRL + z :suspensiondelatcheencours
CTRL + c :termineleprocessusl'avantplan
commande&:excutecommandedirectementenarrireplan
nohupcommande&:excutecommandedirectementenarrireplanet
dtacheleterminal
jobs:affichelalistedesjobsencours
fg[%n]:metledernierjob[oujobn]enavantplan
bg[%n]:metledernierjob[oujobn]enarrireplan
kill[SIGX]%n:envoielesignalSIGTERM(ouSIGX)aujobn

Conventions typographiques
nomsdecommandeoudefichiersencourrier10
saisiesutilisateurencourrier10gras
consoledansunefentregriseencourrier10

paramtresenitalique
STDIN en bleu (parties concernant les descripteurs de fichiers)
STDOUT en vert (parties concernant les descripteurs de fichiers)
STDERR en rouge (parties concernant les descripteurs de
fichiers)
Manipulations
Raccourcis clavier

Crdits, version, licence


Crdits
Tux Larry Ewing, http://www.isc.tamu.edu/~lewing/linux/
GNU Head Etienne Suvasa, http://www.gnu.org/graphics/agnuhead.html
Icones : Tango Project (http://tango.freedesktop.org)
Baby Pingouin : http://www.webweaver.nu/clipart
Systmes (p13) :
ACME Systems http://www.webweaver.nu/clipart
NASA Ames Research Center
Cray Inc.
IBM Corporation

Crdits, version, licence


Version & historique
Version 20070404_01
20070404_01MB:crationp245,misejourdegraphesp250,p256etp261
20070217_01MB:typos,coquilles,schmaspartitionnement,notes
20070211_01MB:cosmtique

Dure
Cette formation s'effectue normalement sur 4 jours.
Licence
Michel Blanc, Avril 2007
Ce document peut tre distribu librement, selon les termes de la version 2.0 de la
licence Creative Commons : Paternit - Partage sous conditions identiques
(http://creativecommons.org/licenses/by-sa/2.0/fr/deed.fr)

Vous tes libres :

de reproduire, distribuer et communiquer ce document au public

de modifier ce document
Selon les conditions suivantes :

Paternit. Vous devez citer le nom de l'auteur original.

Partage des Conditions Initiales l'Identique. Si vous modifiez, transformez ou adaptez cette cration,
vous n'avez le droit de distribuer la cration qui en rsulte que sous un contrat identique celui-ci.

A chaque rutilisation ou distribution, vous devez faire apparatre clairement aux autres
les

conditions contractuelles de mise disposition de cette cration.

Chacune de ces conditions peut tre leve si vous obtenez l'autorisation du titulaire des droits.

You might also like