Professional Documents
Culture Documents
Systme
GNU/Linux
Administration Systme
GNU/Linux
Historique
Composants
Organisation
Shell
Commandes de base
Administration Systme
GNU/Linux
Editeurs
Packages
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
Unix
Philosophie
Sous unix, tout est fichier
fichiers (!)
rpertoires
devices
liens
pipes
sockets
Unix
Philosophie
Sous unix, les fichiers doivent tre
Unix
Philosophie
Multitche
Multiutilisateur
Historique
GNU
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
code source : 5 Mb
port Alpha
SMP
Historique
Linux
360x1012FLOPS
1x109FLOPS
20x103MIPS
1MIPS
GNU/Linux
Le kernel et l'OS
Kernel : Linux
allocation mmoire
droits
ordonnancement
modulaire
automatique ou manuel
GNU/Linux
Le kernel et l'OS
OS : GNU
systmes de fichiers
rseau
droits
priphriques
...
GNU/Linux
Le kernel et l'OS
GNU/Linux
Userland et kernel space
Kernel Space
espace sensible
espace protg
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)
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
Le Shell
Shell
Intert ?
terminaux texte
accs distant
Interprteur de scripts
automatisation
job control
Shell
Oui mais...
Shell
Terminaux
vt100
xterm
consolevga
Shell
Autopsie d'un login
Shell
Environnement
est modifiable
est transitoire
L'environnement initial
Shell
Environnement
Filesystem
Le systme de fichiers (filesystem)
Filesystem
Le systme de fichiers (filesystem)
Filesystem
L'organisation du filesystem (fs)
Une seule arborescence
Filesystem
Balade dans le fs
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 '.'
danger !
Shell
Entre/Sorties
1 entre
2 sorties
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
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
Shell
Pipes
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:~$
Shell
Pipes
Shell
Pipes & Redirections
Attention l'ordre des redirections et des pipelines
a|b2>c
a2>c|b
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
Shell
Editeur de ligne
Shell
Historique
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
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
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'
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'
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
Commandes de base
De l'aide : man
mancommande
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]
manglob man7glob
Commandes de base
Aide : help,apropos,whatis
helpcommande
apropossujet
whatiscommande
Commandes de base
cd
cdargument
exemples
cd
(equivaut 'cd~'et'cd$HOME')
cd..
cd
cd/tmp
cdtmp
Commandes de base
$CDPATH
$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
lst
Affiche les plus rcents en premier
lsS
Affiche les plus gros en premier
ls1
Lesoptionssecombinentdirectemententreelles
ex:lslaRt
Commandes de base
ls
lsoptionargument
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
exemples
rmdir$HOME/documents
rmdirtest$HOME/images_iso
rmdir$HOME/documents/personnel/{photos,factures,}
Commandes de base
cp&mv
cpsourcedestination
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
exemples
mv*.txt/tmp
mvtest.txttoast.txt
Commandes de base
rm&touch
rmargument
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
options
-v : inverse le comportement de egrep (n'affiche que les lignes qui ne
correspondent pas)
-i : insensible la casse
-R : rcursif
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
Commandes de base
cat,less,teeetwc
catfichier1fichier2...
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
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...
exemples
zcatmyfile.gz
bzcatmyfile.bz2
zlessfichier1fichier2...
bzlessfichier1fichier2...
exemples
bzlessmyfile.bz2
zgrepoptionspatronfichier
exemples
zgrepusermyfile.gz
Shell
Commandes multiples
Shell
Job control
Shell
Job control
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
http://www.cs.wisc.edu/~ballard/bofh/bofhserver.pl
Utilisateurs
Utilisateurs : /etc/passwd
root (UID 0) :
les autres :
Utilisateurs
Utilisateurs : /etc/passwd
Pour chaque utilisateur, le fichier /etc/passwd
contient sept champs :
login
root:x:0:0:LinuxTorvalds,0,123,456:/root:/bin/bash
Utilisateurs
Utilisateurs : /etc/shadow
login
1 champ rserv
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
le nom du groupe
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
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
Utilisateurs
Authentification : PAM
Grce PAM, on peut authentifier un utilisateur de
multiples faons :
Utilisateurs
Changer d'identit : su et sudo
su (switch user) :
sudo :
Droits
Droits
Gnralits
un propritaire
un groupe propritaire
les droits pour le propritaire
les droits pour le groupe
les droits pour les autres
lecture (r) :
criture (w) :
excution (x) :
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,...
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,...
Exemples :
chmodugo+rwxfichier1fichier2
chmodu+rw,g+r,orwxfichier3
chmodug=rwx,o=rxfichier4
chmoda+rx,u+wrepertoire
Droits
chmod
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...
chownroot/etc/passwd
Si propritaire est omis, chown ne change que le groupe
chown:cdrom/dev/cdrom
Droits
umask
$umask0022
$umask
0022
$umaskS
u=rwx,g=rx,o=rx
$touchfichier;mkdirrepertoire;lsldfichierrepertoire
rwrr1tuxzoo...fichier
drwxrxrx2tuxzoo...repertoire
Droits
suid/sgid bits
$lslzzz
rwxrxrx1ltorvaldsltorvalds02007011623:02zzz
$chmodu+szzz
$lslzzz
rwsrxrx1ltorvaldsltorvalds02007011623:02zzz
$chmodg+szzz
$lslzzz
rwsrsrx1ltorvaldsltorvalds02007011623:02zzz
$
trs utile
Droits
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
ext2
dvelopp en 1993
limit (2 Tb)
ext3
ext2 journalis
Filesystem
Types de filesystems
ext4
jfs/xfs
journaliss
respectivement IBM/SGI
ReiserFS/Reiser4
journalis
problme de prennit ?
Filesystem
Types de filesystems
iso9660/udf
respectivement CDRoms/DVDRoms
fat/vfat/ntfs
unionfs
nfs/smbfs/coda
filesystems rseau
Filesystem
Filesystems journaliss
Filesystem
Partitions
Filesystem
Filesystems
Filesystem
Devices et points de montage
Les autres
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:~$
Filesystem
Rcration : introduction dd
dd est un cat sous strodes :
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
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
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
Filesystem
Partitions : /etc/fstab
LABEL=ROOTFS/ext3defaults11
UUID=ed2d8d565c084bd4977e673f7a1966b2/usrext3defaults00
/dev/hda1
/var
reiserfs
defaults00
un device (/dev/hda1)
Filesystem
Gestion
Filesystem
Filesystems spciaux
procfs
sysfs
Filesystem
Filesystems spciaux : le swap
Filesystem
inodes & fichiers
numro d'inode
permissions, propritaire
Filesystem
inodes & fichiers
Filesystem
Liens symboliques : hard links
Filesystem
Liens symboliques : soft links
Filesystem
Hard links et soft links : choisir
hard links :
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
lnsoriginaldestination
cre un lien symbolique destination pointant sur
original
Filesystem
LVM : Logical Volume Management
Filesystem
LVM
Filesystem
RAID
Niveaux de RAID
(linux-2.6.9+)
raid6 : la parit est distribue en double sur les disques de l'ensemble RAID
Gestion
/sbin/mdadm
/etc/mdadm/mdadm.conf
Filesystem
Filesystems chiffrs
TrueCrypt
multi-plateforme (Linux/WindowsXP/200x)
volumes chiffrs indtectables et indcelables
Linux Unified Key Setup (luks)
CryptoAPI kernel
multiclefs
volumes dtectables
Editeurs
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:~$
Editeurs
vi
trs petit
incontournable
cryptique
incontournable
Editeurs
emacs
trs gros
Editeurs
...et les autres
Editeurs
Survivre vi
vi a deux modes :
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
Personnaliser le shell
Aliases
Personnaliser le shell
~/.bash{rc,_profile}
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
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>
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>
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>
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]
remplace 'motif1' par 'motif2' (les motifs sont des expressions rgulires
compatibles avec grep)
echo"chatnoir"|sedr's/noir/blanc/'
affiche "chat blanc"
Commandes avances
(Mal)traiter le texte : sed
sed : remplacement de texte (stream
editor)
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
echo"chatNOIR,trsnoir"|sedr's/noir/blanc/g'
affiche chat NOIR, trs blanc
echo"chatNOIR,trsnoir"|sedr's/noir/blanc/gi'
Commandes avances
(Mal)traiter le texte : sed
sed : remplacement de texte (stream
editor)
echoe"chatnoir"|sedr's/chat(.*)/\1chat/'
affiche "noir chat"
echoe"abc"|sedr's/(.)(.)(.)/\3\2\1/'
affiche "cba"
Commandes avances
Traiter le texte : sed
.
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
Commandes avances
Rechercher des fichiers : locate
Shell scripting
Talk is cheap.
Show me the code
Linus Torvalds
Shell scripting
Bases
#!/bin/sh
commentaires
Shell scripting
Variables
Shell scripting
Variables
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
echon192.168.0.254est
ifpingc1192.168.0.254
then
echojoignable
else
echoinjoignable
fi
Shell scripting
Branchements
if["$USER"="root"]
then
echoBonjourmaitre
else
echoEncoreunutilisateurdebase...
fi
commande 'test'
Shell scripting
Comparaisons
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
:
:
:
:
Shell scripting
Arithmtique
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
Grer et superviser
les ressources
A la main :
dateset="2006122423:59:00"
Lire l'heure
date+FORMAT
ex : date+%Y%m%d""%H:%M:%S
Chronomtrer
timecommande
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
Signaux courants
killsignalpid
killallsignalnom
par usager
par groupe
mmoire maximum
...
voir ulimita
Superviser le systme
Problmes classiques
Filesystem plein
Filesystem corrumpu
installez LVM
installez bontmia/dump/arkeia/...
Crash disque
Superviser le systme
Problmes classiques
Surcharge systme
Piratage
utilisez ps/top/vmstat/sar...
Facteur humain
lsof
lsoffichier
lsofrpertoire
lsofpPID
lsofrS
lsofi@host
lsofiTCP:port
fuservm<device|mountpoint>
fuserkvm<device|mountpoint>
Superviser le systme
Grer l'espace disque
Superviser le systme
Charge systme
R (Runnable)
S (Sleep)
: le processus dort
T (sTopped)
Superviser le systme
Charge systme
user@host:~$uptime
16:19:59up101days,6users,loadaverage:5.10,3.23,2.31
user@host:~$cat/proc/loadavg
5.103.232.314/4020403
Superviser le systme
Charge CPU
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
les n secondes
Superviser le systme
Linux et la mmoire
le cache disque
Superviser le systme
Mmoire
user@host:~$freem
totalusedfreesharedbufferscached
Mem:100998524089333
/+buffers/cache:562447
Swap:99617978
user@host:~$vmstat
procsmemory...
rbswpdfreebuffcache...
00177081928492748338840...
Superviser le systme
Mmoire virtuelle
user@host:~$vmstat
....swapiosystemcpu
....sisobiboincsussyidwa
....20590594721157892881
user@host:~$free
totalusedfreesharedbufferscached
Mem:1034224101612018104043712440104
/+buffers/cache:532304501920
Swap:1020088177201002368
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
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
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 ?
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
Packages
Installation de logiciels
Packages
Installation de logiciels
Les packages (paquetages)
ont pour objectif :
Packages
Installation de logiciels
Encore des chapelles !
Packages
Redhat Package Manager
http://en.wikipedia.org/wiki/List_of_Linux_distributions#RPM-based_free_distributions
Packages
Redhat Package Manager : rpm
Supprimer un package
rpmepackage
Packages
Redhat Package Manager : rpm
La commande query (-q) permet d'interroger un
package ou la base de donnes des packages
installs
Packages
Redhat Package Manager : yum
yuminstallnom
yumsearchnom
yumupdate
Packages
Packages Debian
http://en.wikipedia.org/wiki/List_of_Linux_distributions#Debian-based_free_distributions
Packages
Packages Debian : dpkg
Les fichiers packages sont manipuls avec la
commande dpkg
Supprimer un package
dpkgrpackage
Reconfigurer un package
dpkgreconfigurepackage
Packages
Packages Debian : dpkg
Packages
Packages Debian : aptget
/etc/apt/{sources.list,sources.list.d/}
Packages
Packages Debian : sources apt
debhttp://fr.archive.ubuntu.com/ubuntu/edgymainrestricted
url du dpt
distribution
sections...
Packages
Packages Debian : aptget
Supprimer le paquetage
aptgetremovepackage
Packages
Packages Debian : apt*
aptcachensearch'.*dump.*'
Packages
tar, {g,b}zip
tarcvzfarchive.tar.gzfichiers
Packages
tar, {g,b}zip
tarxvjfarchive.tar.bz2
Packages
Installer partir des sources
dsinstallation aise
Packages
Installer partir des sources
Packages
Installer partir des sources, v1
Exemple : installer le logiciel 'soft-1.2.tar.gz'
Mthode 1 :
Packages
Installer partir des sources, v2
Exemple : installer le logiciel 'soft-1.2.tar.gz'
Mthode 2 :
Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM
(4) init
Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM
(4) init
Boot
Bootloaders : lilo, grub & co.
savoir ou le trouver
savoir le charger
Boot
Bootloaders : grub
Boot
grub : menu.lst
il contient des scripts qui sont interprts par grub lors du boot
[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
(4) init
Boot
Kernel
chargement ramdisk
excution d'init
Kernel
Versions
Versionnement du noyau
Versions a.b.c[.d]
Kernel
Modules
Kernel
Modules
...intert ?
Attention la scurit !
Kernel
Modules
Boot
Les 5 tapes
(1) Boot hardware
xcution du bios
paramtres dans la NVRAM
(4) init
Runlevels
init
Runlevels
/etc/inittab
id:levels:action:process
id : identificant unique
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
(4) init
SysV init
Startup scripts
SysV init
Startup scripts
[SK][09][09]label
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
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'
Runlevels
Changer de runlevel
Runlevels
Changer de runlevel
telinit6
Cron
Fonctionnement
Cron
Configuration
cron peut tre configur de multiples manires
/etc/crontab
/var/spool/cron/crontabs/$USER
contient la crontab de $USER
/etc/cron.d/
/etc/cron.{hourly,daily,weekly,monthly}
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
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
MAILTO=
aucun envoi
At
Execution diffre unique
echo"echoAnniversaireTux"|atAug25
echo"echofaischaufferl\'eau"|atteatime
5minutes
echo"md5sum/bin/*"|atnow+1hour
Logs
Syslog
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
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
Rseau TCP/IP
Rseau TCP/IP
Thorie
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
Rseau TCP/IP
Adressage IP : masques
Rseau TCP/IP
Adressage IP : masques
Rseau TCP/IP
Adressage IP : masques
Rseau TCP/IP
Adressage IP : CIDR
Rseau TCP/IP
Adressage IP : CIDR
Rseau TCP/IP
Ports UDP/TCP
Rseau TCP/IP
Dmultiplexage
Rseau TCP/IP
Routage des datagrammes IP
Rseau TCP/IP
Routage des datagrammes IP
Rseau TCP/IP
DNS : Domain Name System
Rseau TCP/IP
Configuration
Rseau TCP/IP
Adresse IP : ifconfig
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
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
Rseau TCP/IP
Adresse IP : iplink/addr
Rseau TCP/IP
Adresse IP : iproute
iprouteaddblackholeaddresse/msk
Rseau TCP/IP
DNS : le resolver
le fichier /etc/hosts
Rseau TCP/IP
DNS : /etc/resolv.conf
Rseau TCP/IP
DNS : /etc/hosts
/etc/hosts peut contenir des associations
IP/hostname, permettant :
a.b.c.d nom.domaine.orgnomnombis...
Rseau TCP/IP
Configuration via DHCP
dhcpcd (Fedora)
dhclient (Debian)
dhcpcdk
Rseau TCP/IP
Diagnostic : connectivit IP
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
Rseau TCP/IP
Diagnostic : routage
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
Rseau TCP/IP
Diagnostic : DNS
Rseau TCP/IP
Diagnostic : DNS
dig[@server]typenom[typenom]
(le type est a par dfaut)
Rseau TCP/IP
Diagnostiquer les connexions
netstattunap
Rseau TCP/IP
Internet texte
FTP : ftp,ncftp
SMTP : mail(x)
MMS : mimms
IRC : irc
Rseau TCP/IP
Internet texte
Ces outils permettent une grande automatisation des
tches lies au web :
crations de mirroirs
wgetm(ou mieux : rsync)
lynxdumphttp://www.kernel.org|mails"News"me@me.org
Rseau TCP/IP
Configuration au boot
Configuration commune
configuration
Rseau TCP/IP
Configuration Debian/Ubuntu
autoeth0eth1
ifaceeth0inetdhcp
ifaceeth1inetstatic
address192.168.0.2
netmask255.255.255.0
gateway192.168.0.254
eth0mac00:15:c5:ab:dc:3barp1
eth1mac00:15:c5:ab:dc:3carp1
Rseau TCP/IP
Configuration RedHat/Fedora
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
Rseau TCP/IP
tcpwrappers
Rseau TCP/IP
inetd & tcpwrappers
Rseau TCP/IP
netfilter : filtrage avec iptables
Rseau TCP/IP
netfilter : tables
Rseau TCP/IP
netfilter : chanes
Rseau TCP/IP
netfilter : cibles
Rseau TCP/IP
netfilter : politiques
Rseau TCP/IP
iptables : usage
spcifier 'ttable'
iptnatAFORWARD...
Rseau TCP/IP
iptables : spcifications
de rgles
...
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
Rseau TCP/IP
telnet & ssh
Rseau TCP/IP
ssh : authentification
Rseau TCP/IP
Scurit rseau lmentaire
Services ouverts
Filtrez toujours
dfaut
Interfaces graphiques
Interfaces graphiques
Xwindow, XFree86, X.org
Interfaces graphiques
Gnome, KDE, Xfce, e, ...
Interfaces graphiques
$DISPLAY
Questions ?
#!/bin/sh
readQuestions
test$Questions||exit
Etudes de cas
Etudes de cas
A la carte
Configuration
Filtrage niveau 7
ouvrir chargen
Dploiement de ssh
remdier au problme
Looping back
scp
rsync
fuser : tout monter
compilation de curlftps
Urgences
remdier au problme
Out of memory
remdier au problme
Filesystem full
merci le RAID1
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
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)
de modifier ce document
Selon les conditions suivantes :
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
Chacune de ces conditions peut tre leve si vous obtenez l'autorisation du titulaire des droits.