formation administration...
Post on 20-Jul-2020
13 Views
Preview:
TRANSCRIPT
Formation administration Linux
Marc-Olivier Buob
Linux : aperçu
Qu'est ce que GNU/Linux ? Quelques distributions classiques
Pourquoi tant de distributions ?
A quoi ça ressemble ? Le boot loader
Le chargement
Le mode texte
L'environnement graphique
Structure de GNU/Linux
Rôle du gestionnaire de paquets
Qu'est ce que GNU/Linux ?
Noyau + Système d'exploitation (OS) Basé sur un noyau linux (1991 Linus Torvalds)
Projet GNU : système inspiré d'Unix (1986 Stallman)
Développé par des milliers d'informaticiens sur Internet
Inclue des milliers de logiciel dont ceux du projet GNU
emacs, gcc
Libre D'exécuter le logiciel pour n'importe quel usage
D'étudier le fonctionnement d'un programme et de l'adapter (open source)
De redistribuer des copies
D'améliorer le programme et d'en faire profiter la communauté linux
Communautés (linux-fr, lea-linux...)
Quelques distributions classiques
Fedora
Knoppix
Pourquoi tant de distributions ?! Plusieurs dizaines de distributions
Il y a quand même une base commune !
Choix techniques différents Gestionnaire de paquets
Manière dont sont gérés les services (serveurs...)
Manière dont est configuré le système (réseau...)
Choix philosophiques différents Paquets installés par défaut : libre vs non libre (licences)
Public différent : familiers de linux (debian) ou grand public (ubuntu)
Serveur (debian), PC bureautique (ubuntu), restauration (knoppix)
1) Le boot loader : grub / lilo
Les différentsnoyaux linuxdisponibles
Les autressystèmes
(windows...)
2) Le chargement
3) Le mode texte (console)
Le prompt :login@hostname:path$
~: home directory
Le résultat
Commande shellpwd : le répertoire
courant
4) L'environnement graphique
Structure de GNU/Linux (1/2) Un noyau qui prend en charge
Les périphériques (disque dur, clavier, carte réseau...)
Les systèmes de fichiers (ext4, fat32, ntfs...)
Les protocoles réseaux (TCP, UDP...)
… éventuellement étoffé par des modules chargés au boot
… sur lequel s'appuie le système Système de base
Shell (ligne de commandes) : sh, bash, tcsh, ksh, zsh...
Librairies
Logiciels « en mode texte » : gcc, gdb, vim, aptitude, pwd, client/serveur ssh
Serveur graphique (serveur X)
Environnement graphique : KDE, gnome
Applications graphiques : konsole, kdevelop
Structure de GNU/Linux (2/2) Chaque couche à un rôle bien défini et s'appuie sur les autres
GNU/Linux
Boot loader
GrubLilo
Windows
noyau1
noyau2
...
Systèmede
base
pwdhal
udev
Serveurgraphiqu
e
Xorg
Env.graphiqu
e
GnomeKDE
LibrairiesQT, libstdc++, boost
pilotes
App.Graphique
s
kdevelopkonsoleadept
logiciels
modulesProgr. mode texte
Shell, compilateurs,gest. de paquets...
Le gestionnaire de paquets Chaque logiciel / librairie / … est stocké dans un paquet
Contient les fichiers à installer
Précise de quels paquets il dépend
Décrit le contenu du paquet
Le gestionnaire de paquets Installe, met à jour, ou supprime des paquets (et ses dépendances)
Corrige les fichiers de configurations
Garantit que les dépendances sont présentes, à jour et en un exemplaire
Diffère d'une distribution à l'autre
debian/ubuntu... : aptitude, apt-get, dpkg … redhat/mandriva... : urpmi, yum, rpm...
Linux un peu plus dans le détail
Ce qui se passe-t'il au démarrage ? L'arborescence linux (FHS) Les devices Les systèmes de fichiers, les partitions Les TP (enfin !)
Que se passe-t'il au démarrage ? On choisit quel kernel on lance et avec quelles options
éventuellement le runlevel peut être précisé
Le kernel est chargé
Les différents médias sont montés (/etc/fstab) en particulier la partition sur lequel le système GNU/Linux est installé (/)
la swap
Le système démarre au runlevel par défaut (/etc/inittab) A chaque runlevel, on lance des services spécifiques
0 arrêt 1 mode mono utilisateur 2-5 mode multi utilisateur (réseau, mode graphique etc...) 6 reboot
FHS (File Hierarchy Standard) / (root)
/boot : kernels, initrd...
/bin : binaires essentiels (mv, cp...)
/dev : devices (/dev/mouse, /dev/sda1...)
/etc : fichiers de configuration et scripts de démarrage
/etc/X11 : fichiers de configuration du serveur X /home : home directories (répertoires utilisateurs)
/lib : librairies essentielles
/media : périphériques montés (CD, clé USB)
…
/root : home directory de root
/sbin : binaires systèmes essentiel (route, mount, …)
/tmp : fichiers temporaires
/usr : /usr/bin, /usr/sbin, /usr/include, /usr/lib
/var : variable files (/var/apt/cache/archives, /var/dpkg/lock...)
Les devices
Chaque périphérique est associé à un device dans /dev /dev/sda (/dev/sdb, …) ; /dev/sda1 ; /dev/sda2
/dev/hda
/dev/mouse, /dev/dsp
/dev/cdrom /dev/cdrom0
/dev/null, /dev/stdin, /dev/stdout, /dev/stderr
Le partitionnement
Windows 1 partition pour le système (NTFS en général)
Éventuellement 1 partition de données (NTFS en général)
GNU/Linux 1 partition pour le système / (compter 10Gio en ext4 en général)
1 partition de swap (1 Gio en swap)
Éventuellement 1 partition de données séparée de /, /home, en général en ext4
Les systèmes de fichiersNTFS / ntfs-3g FAT32 / vfat ext4
Windows LitÉcrit
LitÉcrit
-
Linux LitÉcrit
LitÉcrit
LitÉcrit
Remarques FragmenteDroitsJournalisation d'erreurs
Pas de droitsPas de lien symboliqueTaille limite
Fragmente très peuDroitsLiens symboliquesJournalisation d'erreurs
Les partitions : sudo fdisk -l
Disk /dev/hda: 40.0 GB, 40020664320 bytes255 heads, 63 sectors/track, 4865 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x802b81ca
Device Boot Start End Blocks Id System/dev/hda1 * 1 1275 10241406 7 HPFS/NTFS/dev/hda2 1276 4740 27832612+ 83 Linux/dev/hda3 4741 4865 1004062+ 82 Linux swap / Solaris
Disk /dev/hdb: 82.3 GB, 82348277760 bytes255 heads, 63 sectors/track, 10011 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x4707841a
Device Boot Start End Blocks Id System/dev/hdb1 * 1 10011 80413326 b W95 FAT32
/dev/hda1 /dev/hda2 /dev/hda3 /dev/hdb1
Travaux pratiques
TP1 : installation TP2 : prise en main TP3 : visite guidée TP4 : les droits TP5 : les paquets sous Debian (et distributions dérivées) TP6 : shell (bases) TP7 : réseau (TP8 : la programmation C/C++ sous linux) (TP9 : STL) TP10 : shell (algo) TP11 : LVM TP12 : apache
TP1 : installation
Télécharger l'iso d'ubuntu ou de kubuntu http://www.ubuntu-fr.org/telechargement
Vérifier la somme md5 Graver le CD (Réduire les partitions windows) Installer ubuntu Lancer ubuntu !
TP2 : prise en mainWindows Gnome KDE3 KDE4
firefox / IE firefox / epiphany firefox / konqueror idem
thunderbird / outlook thunderbird / evolution
thunderbird / kmail idem
pidgin, msn... pidgin / empathy kopete idem
Lecteur multimédia / vlc
rythmbox, totem, vlc amarok, kaffeine, vlc, kmplayer
amarok2, gwenview
Commande MS DOS gterm konsole konsole
Explorateur nautilus konqueror / dolphin konqueror / dolphin
Bloc notes gedit kwrite / kate idem
Suite MS office / openoffice
openoffice koffice / openoffice idem
Live update synaptic adept idem
Adobe reader / fox it reader
evince kpdf okular
La philosophie sous GNU/Linux
L'intelligence est le moins possible dans l'interface graphique Exemple : kdevelop se base sur g++ et gdb
L'interface se base le plus possible sur des programmes en ligne de commande
Scripter un programme
Rôle de l'UI (User Interface) : convivialité et ergonomie
La ligne de commande permet souvent d'aller plus loin et plus vite que l'interface graphique
Voir TP shell
Voyons à présent le décor et l'envers du décor UI vs ligne de commande
Où trouver l'information ?
La documentation embarquée Les pages de man, apropos, l'autocomplétion
L'aide KDE / gnome
L'option --help
La documentation en ligne http://doc.ubuntu-fr.org/
man + mot clé (commandes linux, fonctions C...)
Sites dédiés. Par exemple pour la STL : http://www.sgi.com/tech/stl/
Avec un moteur de recherche ! Listes, bug reports
Forum de la distribution, forums spécialisés
Les pages de man
Sections de man : man 1 write, man 2 write... Le man indique le rôle d'une fonction et de ses options Il précise les commandes ou fonctions connexes
NOM
echo - Afficher une ligne de texte.SYNOPSIS
echo [-neE] [message ...]echo {--help,--version}DESCRIPTION
Cette page de manuel documente la version GNU de echo.
La plupart des shells ont une commande intégrée ayant le même nom et les mêmes fonctionnalités.
echo écrit chaque message sur la sortie standard, avec une espace entre chacun d'eux, et un saut de ligne après le dernier.
Conventions linux :
Commande en minuscules, -[-p] : optionnel--pouet : option longue-p : option courte (chaînable)
TP3a : manipuler des fichiers Le terminal, les tty
cd, ls, pwd, cp, mv, mkdir, rm, rmdir,ln
touch, file, cat
Chemins particuliers Absolus : ~ /
Relatifs : . ..
Exercice Créer /tmp/a/b/c, puis /tmp/a/b/c/d.txt, puis /tmp/a/b/c2/
Copier d.txt dans /tmp/a/b/c2/
Supprimer /tmp/a/b/c
Créer un lien vers /tmp/a/b/c2 dans le home directory
Créer e.txt dans /tmp/a/b/c2/. Que ce passe-t'il dans le home ?
TP3b : manipuler des périphériques Regarder /etc/fstab
Expliquer pourquoi les devices ne sont pas référencés sous la forme /dev/sd*
Parenthèse udev : peut renommer un device au moment ou celui-ci est branché
hal : notifie l'utilisateur qu'un périphérique est branché
usbdev, applet de périphérique KDE4, gvfs...
Commandes de base df, du
dmesg
fdisk, cfdisk, mkfs, lspci, lsusb, dmidecode, hdparm
mount, umount
reboot, halt
Monter une clé dans /media/usb. La formater en fat32.
TP4 : les droits La notion de droits sous GNU/Linux est fondamentale
Distribution des rôles : seul root peut administrer la machine
Sécurisation : programmes malveillants
Confidentialité : accès restreint à un répertoire ou à un device (ex: /dev/dsp)
rwxrwxrwx Propriétaire, groupe, tout le monde
Read Write eXecute
root, sudo, su Les profils et les groupes
/etc/passwd, /etc/shadow, /etc/group
groups, whoami, passwd, (yppasswd, ypcat)
addgroup/groupadd, adduser/useradd, userdel, usermod, sg
chown, chgrp
Les droits dans /etc/fstab
Le gestionnaire de paquet apt Récupère la liste des mises à jours (update)
Interroge les dépôts configurés dans /etc/apt/sources.list
/var/lib/dpkg/lock
Corrige l'arbre de dépendance
http://packages.ubuntu.com
Télécharge les paquets fichiers .deb
/var/cache/apt/archives
Déploie la mise à jour dpkg -i, dpkg --purge
(Re)configure le paquet dpkg-reconfigure, dpkg --configure -a
TP5 : installons des paquets
Avec adept ou synaptic : installer apt-file
Avec aptitude ou apt-get : installer nmap aptitude en mode interactif
rose : supprimer; cyan : mettre à jour, vert : installer update (u), upgrade (U), go (g), quitter (q) installer (+) désinstaller (-) purger (_) trouver (/), suivant (n), précédent (p)
deborphan, vider le cache
apt-file, apt-cache
Parenthèse : tar, ./configure, make && make install
Un peu de shell Les flux
>, >> écrire dans un fichier
2>, 2>>, 2>>&1 rediriger stderr
< lire un fichier
cat < pouet.txt
Les pipes | : chaîne les commandes wc -l pouet.txt
cat pouet.txt | wc -l
sort, cut, grep, xargs, uniq, wc
TP6 : shell Compter dans /etc tous les fichiers finissant par « .conf »
find, (grep, wc)
Chercher dans /etc les fichiers dans lesquels figure la chaîne /dev/sda
grep, (uniq, cut)
Compter dans /etc/fstab le nombre de ligne contenant /dev/sd* grep wc
Écrire l'équivalent de dpkg --get-selections en utilisant juste : dpkg -l, grep, cut
Supprimer les paquets fanés ; supprimer les paquets « rc » deborphan xargs dpkg grep cut
Le réseau sous GNU/Linux
Administration Commandes de base
/sbin/ifconfig, /sbin/iwconfig, /sbin/iwlist dhclient /sbin/route ping host, nslookup, /etc/resolv.conf, /etc/hosts nmap
Configuration
/etc/network/interfaces, network manager
Transfert lftp
ssh, scp, fish
TP7 : réseau
Vérifier le fingerprint du serveur ssh :– ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub
Configurer un utilisateur mando (useradd, passwd) Configurer une clé ssh :
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant
ssh-add
Écrire le script shell suivant Lister les fichiers dans /home/mando situé sur la machine d'un stagiaire et
stocker le résultat dans un fichier à l'aide de ssh
Transférer ce fichier avec scp
Supprimer le fichier créé sur la machine distante
Les services Les processus, les PID et les démons
ps
top
kill, killall
Visite dans /etc/init.d /etc/init.d/ssh : le serveur ssh
/etc/init.d/gdm ou /etc/init.d/kdm : le gestionnaire de connexion graphique
Comment réparer son serveur X (tty, dpkg-reconfigure) /etc/init.d/apache2
/etc/init.d/proftpd
/etc/init.d/mon_service [start|restart|stop...] service mon_service [start|restart|stop...]
TP8a : Développer sous GNU/Linux Sous debian les paquets de développement sont postfixés -dev
Installer gcc et g++
Installer make, vim
Installer gdb, valgrind
Installer une librairie (par exemple boost)
Installer un IDE (kdevelop, anjuta)
Quelques librairies célèbres libstdc++, boost
QT, gtk, SDL
openGL
pcre
TP8b : Développer sous GNU/Linux
Écrire un tic tac toe Le compiler à la main et l'exécuter
gcc -W -Wall -c module.c
gcc -W -Wall main.c module1.o module2.o main.c -o binaire
Écrire un makefile Makefile automatique
parenthèse sur automake et autoconf
gdb Erreur de segmentation : r binaire, bt
Débogage pas à pas : b n s p
valgrind
Les templates
Les templates L'opérateur ::
typename
La STL std::vector<T>
std::list<T>
std::set<T>
std::map<K,T>
Les flux : std::ifstream, std::ofstream, ...
Callback vs visiteurs, foncteurs g++, gSTLfilt
TP9 : STL
Exercice 1 Lire un fichier tabulé nom prénom
Afficher tous les contacts
Rechercher les contacts dont le nom de famille et Durand
Afficher le nombre de contacts
Exercice 2 Lire dans un répertoire des fichiers de contact au format :
− NOM
− PRENOM
− AGE Écrire une interface en mode texte permettant de retrouver les personnes pour
un âge, un prénom, ou un nom donné
TP10 : shell (algo)
Créer un script shell qui demande le prénom et qui répond bonjour. Exemple :
prénom ? MarcBonjour Marc !
Créer un script shell qui prend un paramètre un entier positif n. Écrire un carré de n caractères sur n caractères. Exemple :
****************
groupe de volume vg0
LVM (Logical Volume Manager) Permet de s'abstraire des
partitions physiques une donnée peut être stockée
à cheval sur plusieurs disques / partitions.
redimensionnement aisé
pas de limites sur le nombre de partitions
Terminologie pv : physical volume
vg : volume group
lv : logical volume
/dev/sda1 /dev/sdb2 /dev/mda1
lvol1 lvol2 lvol3 toto
Physical volume
Logical volume
Au final, on manipule /dev/vg0/toto (ou /dev/mapper/vg0-toto)
RAID logiciel
A0
A2
A4
A6
A1
A3
A5
A7
RAID0 : volume agrégé par bandes
Pas de redondance :- Pas de perte d'espace- Très performant en lecture/écriture- La perte d'un disque est fatale
A0
A1
A2
P3
B0
B1
P2
B3
C0
P1
C2
C3
P0
D1
D2
D3
A0
A1
A2
A3
A0
A1
A2
A3
RAID1 : disque en miroir
Redondance :- Perte d'espace ((n-1)/n %)- Supporte la perte de n-1 disques
RAID5 : volume agrégé par bandesà parité répartie
Bits de parité :- Performances en lectureéquivalentes au RAID0- Performances dégradées en écriture- Surcoût en place minimal (1/(n-1) %)- Requiert au moins 3 disques- Reconstruction longue
RAID1 établi surdeux disques
RAID5 établi surquatre disques
swapRAID5
/dev/md1(2*79Go)
RAID1/dev/md0(1*500Mo)
Exemple LVM + RAID/dev/sda1
500Mo/dev/sda2
500Mo/dev/sda3
79Go
/dev/sdb1500Mo
/dev/sdb2500Mo
/dev/sdb379Go
/dev/sdc1500Mo
/dev/sdc2500Mo
/dev/sdc379Go
Disque a80Go
Disque b80Go
Disque c80Go
/dev/vg0/racine/
10Goext3
/dev/vg0/home/home148Go
ext3
LVM vg0
/dev/md0/boot
500Moext3
/dev/sd*1Swap1.5Go
Ce quel'on
manipuledans
/etc/fstab
TP11 LVM RAID
Faire une installation calquée sur cet exemple : http://doc.ubuntu-fr.org/tutoriel/installation_raid_lvm
LVM Physical volume : pvcreate, pvscan, pvdisplay
Volume group : vgcreate, vgremove, vgreduce, vgextend, vgrename, vgdisplay, vgmknodes, vgchange
Logical volume : lvcreate, lvremove, lvreduce, lvextend, lvrename, lvdisplay...
ext2/3/4 : e2fsck, resize2fs
RAID mdadm, mdstat
/etc/mdadm.conf
Apache2 Serveur http/https. Qui dit serveur dit service !
Apache2 : 2 multi processing module (mpm) : prefork : permet d'utiliser des librairies non thread safe
worker : gestion des threads (recommandé).
Décomposé en modules apache : pam, php5, perl, python, bw... : a2enmod, a2dismod
Configuration : relancer apache2 en cas de modification essentiellement via /etc/apache2/apache2.conf
via des liens symboliques (voir /etc/apache2/[mods|sites]-[available|enabled])
− Un serveur apache, plusieurs sites (les vhosts) : a2dissite, a2ensite
− A priori rangés dans /var/www/htdocs/...
TP12 : apache
Installation d'apache et de ses modules http://doc.ubuntu-fr.org/apache2#installation1
lancer apache, utiliser nmap etc...
visite des fichiers de configuration
Installer et configurer php5 créer une page /var/www/htdocs/mon_site/index.php qui écrit l'heure quand on
s'y connecte
créer une page admin.php dans /var/www/htdocs/mon_site/admin
Restreindre l'accès via htaccess au répertoire admin http://www.infres.enst.fr/~danzart/frames/htaccess.html
top related