formation administration...

Post on 20-Jul-2020

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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