Parties
- Table des matières
- révisions types de fichiers
- root
- sudo
- sudo less
- sudo cp
- machine distante
- ouverture d'un compte
- connection par ssh
- connection et decouverte
- Editeur en mode texte: Nano
- affichage distant: DISPLAY ssh
- affichage distant: redirection
- copie de fichiers avec scp
- scp 2
- scp distant vers local
- installation d'un logiciel à partir des sources
- archives tar
- Télécharger une archive
- désarchivage du paquet
- options de configure
- appel de configure
- lancement de configure et plantage
- installation du paquet manquant et reconfiguration
- compilation
- installation
- decouverte des fichiers installés
- lancement de la commande
- PATH
- fin
- installer tout seul
- installer tout, lib dynamique
- apt, dpkg, présentation
- présentation de la gestion de paquets
- apt sources.list
- sources.list
- debian
- cache stats
- nombre de paquets installes
- apt-cache search
- apt-cache search bittorrent
- apt-cache show
- analyse du contenu d'un paquet .deb
- téléchargement d'un paquet
- analyse du contenu du paquet
- analyse du contenu du paquet (suite)
- Analyse du contenu d'un paquet (suite2)
- Analyse du contenu d'un paquet (data.tar.gz)
- Analyse du contenu d'un paquet (data.tar.gz suite)
- installation d'un logiciel
- installation d'un paquet simple
- installation d'un logiciel simple (2)
- installation d'un logiciel moins simple
- suppression d'un paquet
- dependences de xbomb
- libc
- base de données dpkg et interrogation
- a quel paquet appartient un fichier
- afficher des infos sur le paquet d'un ficher
- version de pango
- /lib/libe2p.so.2
- e2fslibs
1. Table des matières
1.1 Table des matières
Bienvenue à ce premier TP d'administration système.
La
grande majorité de ce TP se fera à travers la ligne de commande. Prenez
le temps de comprendre les différentes commandes. Si vous vous
accrochez, vous verez qu'avec l'habitude, la ligne de commande devient
un outil très puissant et efficace.
Cliquez sur "début du TP" pour commencer.
1.2 révisions types de fichiers
Révisions sur les types de fichiers
Cherchez sur le web, par exemple sur wikipedia (
http://fr.wikipedia.org/wiki/Liste_d'extensions_de_fichiers),
des informations sur les types de fichiers suivants. Prenez le temps de
bien comprendre à quoi sert chacun de ces types de fichiers avant de
répondre.
- librairie statique. contient, entre autres des fonctions compilées : .a
- archive pouvant contenir pluseiurs fichiers et repertoires : .tar
- non, erreur
- librairie dynamique. contient, entre autres des fonctions compilées : .so
- oui!
- entete d'un programme en C : .h
- fichier compressé avec un algorithme performant plus recent : .bz2
- script dans un langage orienté objet particulier : .py
- fichier compressé : .gz
- image : .png
Sur un système UNIX l'accès à divers fichiers et logiciels nécessaires à l'administration système est limité.
Si n'importe quel utilisateur pouvait y accéder, il pourrait
- détruire délibérément ou par erreur des données d'autres utilisateurs
- perturber délibérément ou par erreur le fonctionnement de la machine
- accéder à des informations confidentielles
- etc.
Pour ces raison, certaines taches d'administration sont réservées à un utilisateur particulier qui s'appelle "root".
Ce contrôle se fait généralement en limitant les droits d'accès aux fichiers et aux répertoires.
Parmi les opérations suivantes lesquelles sont réservées à l'utilisateur "root"?
Essayez de faire ces différentes opérations en tant que "etudiant".
(par contre n'essayez surtout pas de les faire en tant que root!)
- oui,
voici quelques explications:
/etc/ssh/ssh_config : seuls les administrateurs peuvent changer les
fichier de configuration du système
/etc/passwd : est lisible par tous, pour pouvoir connaitre les noms des
autres utilisateurs (mais contrairement à ce que son nom semble
indiquer, il ne contient pas de mot de passe)
fichiers des autres utilisateurs: on peut les lire mais pas les modifier
... heureusement!
/etc/shadow : il contient les mots de passe (cryptés). Seul
l'administrateur peut lire!
cron: c'est un processus du système, seul l'administrateur peut le tuer,
sinon n'importe qui pourrait casser le système...
- non
- lire le fichier de configuration du client ssh : /etc/ssh/ssh_config : non-root
- modifier le fichier de configuration du client ssh : /etc/ssh/ssh_config : root
- lire le fichier /etc/passwd contenant la liste des utilisateurs du systeme. (essayez! ... less /etc/passwd ) : non-root
- Dans
la configuration par defaut sur l'installation de Debian que vous
utilisez: lire les fichiers d'un autre utilisateur (ici fdupond) :
non-root
- lire le fichier /etc/shadow contenant les mots de passe des utilisateurs du systeme : root
- tuer
le processus "cron" (obtenez le numero avec ps -ef | grep
/usr/sbin/cron). Cron est un systeme permettant de lancer des taches a
des heures fixes (par exemple, toutes les heures, ou tous les jours...) :
root
La commande sudo
Traditionnellement,
les administrateurs système travaillaient en tant que root. Pour cela
il suffit de s'identifier en tant que root lorsqu'on se connecte au
système (il faut, bien sur, connaître le mot de passe de root, qui est
généralement très secret). On peut aussi devenir root en tapant la
commande "su -" et en rentrant le mot de passe.
Malheureusement,
lorsqu'on travaille en tant que root on peut très facilement commettre
de erreurs qui peuvent avoir des conséquences graves (par exemple:
suppression de fichiers vitaux pour le système).
Pour éviter ces
problèmes, on conseille souvent de ne pas travailler en tant que root,
et d'utiliser la commande "sudo" lorsqu'on a besoin de faire une
opération en tant que root. C'est ce que nous allons faire dans ces TP.
Dans ces TP, vous n'aurez pas le mot de passe root.
IMPORTANT:
- Dans ces TP nous ne travaillerons JAMAIS dans un shell en tant que root
- vous n'avez pas le mot de passe root.
Dans /etc/sudoers est spécifié quels utilisateurs peuvent utiliser sudo et comment.
Sur
vos machines le compte "etudiant" peut utiliser sudo. Sudo vous
demandera une fois un mot de passe (il s'agit de celui de "etudiant" et
pas celui de "root"). Sudo se souviendra ensuite pendant quelque temps
(dizaines de minutes) que vous avez rentré le bon mot de passe et ne
vous le redemandera pas.
Exemple:
etudiant@machinetp:~$ cat /etc/shadow
cat: /etc/shadow: Permission non accordée
etudiant@machinetp:~$ sudo cat /etc/shadow
Password: (saisie du mot de passe)
root:$1$sdsQ//Ib$iVsdDDUtfkBFNB1d9rJW0:13521:0:99999:7:::
daemon:*:13521:0:99999:7:::
bin:*:13521:0:99999:7:::
...
etudiant@machinetp:~$
Quelle commande faut-il taper pour editer le fichier /etc/ssh/ssh_config avec l'editeur "gedit" en tant que root?
- [ ]*sudo +gedit +\/etc\/ssh\/ssh_config *
1.5 sudo less
Essayez de lire le fichier /etc/shadow avec la commande "less /etc/shadow"
Que se passe-il ?
Regardez les droits d'accès à ce fichier avec "ls -la /etc/shadow"
Maintenant essayez de lire le contenu de ce fichier en utilisant sudo
Quelle commande faut-il taper?
- [ ]*sudo +less +\/etc\/shadow *
1.6 sudo cp
Créez un fichier essai.txt et vérifiez qu'il appartient bien à "étudiant".
Tapez la commande "sudo cp essai.txt copie-essai.txt"
A qui appartient le fichier copié (copie-essai.txt)?
- root
: Oui, comme on utilise sudo, la commande est executé par l'utilisateur
"root". Le nouveau fichier (la copie) est crée par cet utilisateur
(root) et donc lui appartient.
2. machine distante
2.1 machine distante
Dans cette partie du TP, nous allons apprendre à se connecter sur une machine distante et à y travailler.
En
administration système, il est fréquent de devoir travailler sur des
machines auxquelles on n'a pas d'accès physique (par exemple, un serveur
installé dans un data-center)
Voici quelques transparents du cours sur ce sujet:



2.2 ouverture d'un compte
ouverture d'un compte à votre voisin
Nous allons commencer par créer un compte à votre voisin, pour qu'il puisse se connecter sur votre machine.
- La création doit se faire en tant qu'administrateur ("root").
- La création se fait avec la commande "sudo adduser login_utilisateur"
- Plus tard, vous pourrez modifier son mot de passe avec: "sudo passwd login_utilisateur"
(si vous rentrez un mot de passe trop court, vous aurez un warning , vous pouvez l'ignorer)
Vérifiez que le compte a bien été crée en regardant la fin du fichier "
/etc/passwd", la dernière ligne doit commencer par "
login_utilisateur". (on verra au cours suivant ce que ça veut dire).
2.3 connection par ssh
connection par ssh
Maintenant qu'il a un compte sur votre machine, votre voisin peut se connecter dessus à distance, à l'aide de la commande "ssh nom_utilisateur@adresse_ip_de_votre_machine"
Pour cela vous devez trouver l'adresse IP de votre machine (cours réseau)
Quelle commande faut-il taper pour obtenir l'adresse IP de votre machine?
(saisissez la commande ci-dessous)
- [ ]*(sudo +)?(\/sbin\/)?ifconfig *
2.4 connection et decouverte
Connexion sur la machine
On
veut se connecter sur le compte que votre voisin vient de vous créer
sur sa machine. Pour ca, on va utiliser la commande ssh. Regardez "man
ssh" pour savoir comment préciser le nom de l'utilisateur. Pour le
"hostname" (en francais: nom de la machine) utilisez son adresse ip.
Connectez vous sur la machine de votre voisin.
Une
fois connecté, tapez la commande "w" pour obtenir des informations sur
l'activité de la machine et savoir qui est loggué dessus.
Vous devriez obtenir quelque-chose de cette forme:
01:08:53 up 3:13, 2 users, load average: 0.81, 0.10, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
etudiant tty1 - 9:56pm 24:04 0.28s 0.28s -bash
toto pts/1 192.168.0.10 10:31pm 0.00s 0.32s 0.10s sshd
Utilisez la commande "
man w"
pour comprendre les différents champs. Les trois champs "load average"
en haut, à droite, sont particulièrement intéressants. Ils indiquent la
charge (activité) de la machine. Une machine sur laquelle un seul
processus est actif en permanence a une charge de 1. Si deux processus
tournent à plein régime, la charge est de 2...
Tapez la commande "
ps -ef"
pour obtenir la liste des processus. Parmi les programmes suivants,
lesquels ont au moins un processus correspondant à votre nom
d'utilisateur?
- Oui,
en effet, lorsque vous vous connectez sur la machine avec ssh, le demon
ssh (sshd) crée un processus pour vous et vous lance un shell (bash).
C'est dans ce shell que vous tapez les commandes... Lorsque vous tapez
la commande "ps -ef", vous créez un processus "ps" à votre nom, qui
apparaît aussi dans la liste des processus.
- incorrect
- apache2 : aucun processus à mon nom
- init : aucun processus à mon nom
- ps : oui
- sshd : oui
- bash : oui
2.5 Editeur en mode texte: Nano
Éditeur en mode texte: Nano
Lorsqu'on travaille sur une machine distante on souhaite souvent modifier des fichiers texte.
Il existe des éditeurs de texte fonctionnant directement dans votre terminal (pas d'affichage graphique):
Nous allons essayer "nano", qui est plus simple.
Dans votre répertoire personnel, tapez "nano exemple1.txt".
Tapez du texte à l’intérieur.
Pour enregistrer: ctrl-o
Pour quitter: ctrl-x
vérifiez que le fichier a bien été édité (less exemple1.txt)
2.6 affichage distant: DISPLAY ssh
Affichage graphique distant
Il est bien plus agréable de pourvoir éditer du texte avec un éditeur graphique.
Sur votre connexion ssh à la machine distante, tapez la commande "gedit".
Vous devriez voir apparaître une fenêtre chez vous. Refermez cette fenêtre.
Comme on l'a vu en cours, les commandes graphiques sont envoyées vers un affichage spécifié par la variable DISPLAY.
Dans un terminal sur votre propre machine (pas dans une connexion ssh), tapez "echo $DISPLAY" pour déterminer le nom de l'affichage.
Ensuite, dans un terminal ou vous êtes connecté par ssh sur la machine de votre voisin, tapez "echo $DISPLAY".
Vous obtenez:
- localhost:0.0 (ou :0.0) pour le terminal local et localhost:10.0 pour le terminal distant.
- localhost:10.0 pour le terminal local et localhost:0.0 (ou :0.0) pour le terminal distant.
2.7 affichage distant: redirection
Explications
"localhost" est le nom de la machine qui exécute la commande (127.0.0.1).
"localhost:0.0" c'est l'affichage principal (physique) de la machine qui exécute la commande.
localhost:10.0
(ou 11.0,12.0,13.0...) est un affichage particulier, en fait il
n'affiche pas du tout sur "localhost" mais fait passer l'affichage à
travers votre connexion ssh (c'est donc sécurisé), vers l'affichage de
la machine physique ou vous êtes.
Pour ceux qui veulent expérimenter:
Dans certains cas on peut vouloir changer l'endroit ou s'affichent les fenêtres. Voici quelques exemples.
Attention:
pour des raisons de sécurité l'affichage d'une machine à l'autre (sans
passer par ssh) n'est pas permis par défaut. Par ailleurs l'affichage
sur la même machine (par un autre utilisateur) doit être autorisé
(commande xhost +).




2.8 copie de fichiers avec scp
Copie de fichiers avec scp
Comme on l'a vu en cours, la commande scp permet de copier des fichiers d'une machine à l'autre.
La syntaxe est:
scp nom-util@nom-machine-src:chemin-src nom-util@nom-machine-dest:chemin-dest
- si on omet "nom-utilisateur", scp prendra le nom d'utilisateur courant
- si on omet "nom-machine", scp utilisera la machine ou est exécuté la commande
- si on omet "chemin" (ou on utilise un chemin relatif), scp utilisera le répertoire personnel de l'utilisateur
Au final, ca peut devenir très simple.
Voici quelques exemples:
scp ordi2.toto.org:a.txt . scp 192.168.1.3:a.txt . scp b.txt ordi2.toto.org: scp /etc/passwd ordi2.toto.org:/tmp 1. avec gedit, créez un fichier appelé essai.txt sur votre machine
2. Copiez ce fichier vers le répertoire personne du compte que votre voisin vous a crée sur sa machine.
3. En supposant que l'adresse IP de votre voisin était 192.168.123.123
et que votre compte sur sa machine est "dupond", quelle commande parmi
les suivantes fallait-il taper?
- scp essai.txt 192.168.123.123@dupond:
- scp dupond@192.168.123.123:essai.txt essai.txt
- scp 192.168.123.123: dupond@essai.txt
- scp dupond@192.168.123.123: essai.txt
- scp essai.txt dupond@192.168.123.123:
Essayons un cas un petit peu plus compliqué.
Votre machine:
IP: 192.168.0.10
compte: dupond
Machine distante:
IP: 192.168.123.123
compte: wang
Vous
voulez copier le fichier "passwd" qui se trouve dans le répertoire /etc
de votre machine vers le répertoire /tmp de la machine distante.
Quelle commande taper?
- scp /etc/passwd wang@192.168.123.123:/tmp
- scp wang@/etc/passwd 192.168.123.123:passwd
- scp /tmp wang@192.168.123.123:/etc/passwd
- scp wang@/etc/passwd 192.168.123.123:/tmp
- scp 192.168.0.10:/tmp/passwd 192.168.123.123:
2.10 scp distant vers local
Essayons maintenant une copie dans l'autre sens (distant vers local):
Votre machine:
IP: 192.168.0.10
compte: dupond
Machine distante:
IP: 192.168.123.123
compte: wang
Vous voulez copier le fichier "passwd" qui se trouve dans le répertoire
/etc de la machine distante vers le répertoire /tmp de votre machine
Quelle commande taper?
- [ ]*scp +wang@192\.168\.123\.123:\/etc\/passwd +\/tmp\/? *
- [
]*scp +wang@192\.168\.123\.123:\/etc\/passwd +\/tmp\/passwd * : Oui,
mais il n'y a pas besoin de spécifier le nom de fichier destination
3. installation d'un logiciel à partir des sources
3.1 installation d'un logiciel à partir des sources
Installation d'un logiciel à partir des sources
Dans
cette partie du TP nous allons télécharger les codes sources d'un
logiciel, puis nous allons le compiler et l'installer. C'est une
opération très courante, qu'il faut savoir faire.
Attention: il
y a plusieurs manières très différentes d'installer des logiciels, par
exemple: à partir du code source (logiciel.tar.gz ...), ou à partir de
paquets binaires (apt-get). Ce sont des approches complètement
différentes, à ne surtout pas confondre.
Rappel: il est dangereux de travailler (configurer et compiler) en tant que "root".
Dans ces TP nous ne travaillerons jamais dans un shell en tant que root.
Travaillez
donc en tant que "etudiant". Lors de l'installation, il faudra utiliser
"sudo" pour que l'installateur puisse copier les fichiers vers des
répertoires protégés.
Voici les transparents du cours sur l'installation:

3.2 archives tar
Archives TAR
Pour
vous aider à comprendre ce qu'est une archive, et comment on la
manipule, nous allons créer une archive, puis la desarchiver avec la
commande "tar".
A. création de quelques répertoires et fichiers qui seront archivés:
1. Créez un répertoire "essai".
2.
dans ce répertoire créez deux fichiers "a.txt" et "b.txt", un
sous-répertoire "sousrep" avec un fichier "c.txt" (vous pouvez, par
exemple, utiliser gedit)
B. création de l'archive
1. remontez dans le répertoire ou est contenu "essai" (si vous tapez "ls" vous devez voir "essai")
2. tapez "tar cvf essai.tar essai"
3. vérifiez qu'un nouveau fichier appelé "essai.tar" a été crée. Vous venez de créer une archive.
C. desarchivage
1. copiez l'archive dans /tmp
2. allez dans le répertoire /tmp : "cd /tmp"
3. desarchivez avec la commande "tar xvf essai.tar"
4. vérifiez que vous retrouvez les fichier et répertoires "a.txt, b.txt ..."
Dans ces étapes (B et C) vous avez archivé et desarchivé une archive ".tar".
Ce fichier ".tar" n'est pas compressé.
D. archives compressée
Il est fréquent de compresser les fichiers archive pour qu'ils prennent moins de place.
1. toujours dans /tmp, supprimez le répertoire essai (rm -rf essai)
2. compressez l'archive : "gzip essai.tar" et vérifiez que le fichier a changé d'extension (.tar.gz)
3. on peut décompresser et desarchiver d'un coup: "tar xzvf essai.tar.gz"
3.3 Télécharger une archive
Enregistrez l'archive suivante:
sysadmin-fichiers-tp1.tar.gz Elle contient tout les fichiers nécessaires à ce TP.
Pour des-archiver vous pouvez utiliser les commandes suivantes.
tar xzvf nom-de-l-archive.tar.gz ou bien
tar xjvf nom-de-l-archive.tar.bz2 Remarquez la différence entre les deux "z" (xzvf) et le "
j" (xjvf)
z: archives .tar.gz
j: archives .tar.bz2
(bz2 est un format de compression plus performant que gz)
3.4 désarchivage du paquet
On
vous demande de faire toutes ces opérations en ligne de commande, sans
utiliser d'interface graphique. Vous devez vous habituer à utiliser la
ligne de commande. Vous serez alors plus efficace et vous pourrez plus
facilement travailler sur des machines distantes.
Desarchivez l'archive ngrep-1.44-1.tar.bz2. Ceci doit créer un répertoire "ngrep-1.44-1".
Rentrez dans le répertoire et découvrez les différents fichiers.
Est-ce que les fichiers suivants sont présents?
- oui, c'est correct
- non, c'est faux
- des fichiers source ".c" ou ".h" : oui
- Makefile.in : oui
- Makefile : non
- configure : oui
- des fichier objet ".o" : non
3.5 options de configure
Avant
de pouvoir compiler le logiciel, il faut le configurer. La
configuration vérifie aussi que tout les éléments necessaires sont bien
présents. La configuration va generer les fichiers Makefile qui
permettront de compiler le logiciel avec la commande "make". La
configuration se fait à l'aide du fichier executable "configure" qui est
fourni avec le logiciel.
Tapez: "./configure --help"
D'après l'affichage, à quoi sert l'option "--prefix" ?
- à choisir le répertoire ou on veut installer le logiciel
- à spécifier des options au compialteur
- à spécifier ou se trouvent les librairies necessaires à la compilation
- à modifier le nom du fichier executable installé
3.6 appel de configure
En vous aidant de la documentation écrite par "./configure --help", quelle commande faut-il taper pour configurer le logiciel en indiquant qu'on veut l'installer dans le répertoire "/root/essai" ?
- ./configure --prefix=/root/essai
- ./configure --prefix=/root/essai/
3.7 lancement de configure et plantage
Lancez la configuration avec la commande précédente.
Le
programme "configure" lance une série de vérifications. Parfois, il
peut trouver des solutions lorsqu'il manque certains éléments, mais si
un élément indispensable n'est pas installé, le programme s'arrête.
C'est le cas ici.
Lisez les messages d'erreur affichés lors de la configuration.
configure cherche, entre autres, les fichiers ".h" (entetes, ou headers en anglais) necesaires pour compiler le ngrep.
Comment s'appelle le logiciel dont il manque les entêtes?
- pcap : oui.
- pcap headers : oui, mais on va l'appeler uniquement "pcap"
3.8 installation du paquet manquant et reconfiguration
"pcap"
n'est pas installé. Il s'agit d'une librairie permettant de capturer
des paquets sur le réseau, qui est nécessaire pour le fonctionnement de
ngrep. On va donc l'installer en utilisant apt-get.
Tapez la commande suivante (nous verrons plus tard comment ça marche):
sudo apt-get install libpcap-dev
Remarques:
Les librairies ont souvent deux paquets associés :
- l'un pour contenant les fichiers
(librairies dynamiques) nécessaires aux autres programmes utilisant
cette librairie. Ici c'est libpcap0.7
- l'autre contenant les
fichiers (librairies statiques, entêtes .h ...) nécessaires aux
personnes qui veulent développer ou compiler des programmes utilisant
cette librairie. Ici c'est libpcap0.7-dev
Ici, nous voulons
compiler un programme qui a besoin de libpcap, il nous faut donc la
version de développement. La version de developement depend de l'autre
version aussi. Donc apt-get propose d'installer les deux. Il faut
accepter.
Maintenant, relancez la configuration. Cela
devrait bien se passer maintenant. Un fichier appelé "Makefile" est
crée. Il vous permettra de compiler le logiciel ngrep.
Lorsqu'on dispose d'un fichier appelé "Makefile", quelle commande faut-il taper pour
compiler?
3.9 compilation
compilation
La compilation prend quelques instants.
Lisez les messages affichés et essayez de comprendre, en gros ce qu'il se passe.
Dans ces messages vous remarquerez qu'une commande est lancée plusieurs fois pour compiler différents fichiers.
Quelle est le nom de la commande qui est utilisée ici pour compiler?
(donnez juste le nom de la commande)
3.10 installation
Regardez si le répertoire "/root/essai" existe encore ou pas.
Maintenant qu'on a compilé le logiciel, on doit "installer" le logiciel.
C'est
à dire, on doit copier les fichiers nécessaires dans les répertoires
dont la racine a été spécifié lors de la configuration.
Cette copie se fait automatiquement en tapant une commande.
En regardant votre cours, quelle commande faut-il taper pour installer le logiciel ngrep?
(essayez d'abord, lisez attentivement les message d'erreur, s'il y en a)
- [ ]*sudo +make +install *
3.11 decouverte des fichiers installés
Allez dans le répertoire "/root/essai" et parcourez les différents répertoires et sous répertoires qui y ont été crées.
Au final, quels éléments ont été installés par ce logiciel ?
Si vous avez des doutes, imaginez ce qu'il serait arrivé si au lieu de spécifier
./configure --prefix=/root/essainous avions spécifié:
./configure --prefix=/usr
Comparez les noms de répertoires crées dans /root/essai avec les répertoires importants de l'arborescence UNIX.

remarque: il manque /usr/share/man sur ce schéma
- oui
- faux
- un seul fichier executable : oui
- plusieurs fichiers executables : non
- des librairies statiques : non
- des librairies dynamiques : non
- des pages de documentation man : oui
- des fichiers de configuration : non
3.12 lancement de la commande
Lancez le logiciel ngrep en tapant la commande "ngrep".
Ça ne marche pas, pourquoi?
Lisez attentivement le message d'erreur et essayez de comprendre.
Quel est le chemin absolu du répertoire ou se trouve le fichier exécutable "ngrep" ?
- [ ]*\/root\/essai\/bin\/? *
Lorsque
vous tapez une commande, le shell va chercher un fichier exécutable
correspondant dans une série de répertoires donnés par la variable
d'environnement PATH.
Or, vous venez d'installer ngrep dans un répertoire qui n'est pas dans cette liste.
Tapez "echo $PATH" pour voir le contenu de cette variable.
Vous avez alors plusieurs possibilités pour exécuter ngrep:
- changer votre variable PATH
- indiquer le chemin complet de l'exécutable
Nous utiliserons pour l'instant la 2ieme solution.
Quel est le chemin complet, absolu, de l'exécutable ngrep ?
(indiquez le chemin complet, avec le nom de fichier "ngrep")
- [ ]*\/root\/essai\/bin\/ngrep *
Il se trouve que ngrep doit être exécuté en tant que root.
Tapez la commande "sudo /root/essai/bin/ngrep".
Vous devriez voir s'afficher plein de choses qui correspondent au trafic réseau de votre machine.
Vous pouvez l'arrêter avec "control-c"
Bravo. Vous avez réussi à installer un logiciel à partir des sources.
3.15 installer tout seul
C'est à vous
Dans les questions précédente nous avons installé ngrep à partir de ses sources.
Maintenant vous allez installer le paquet zlib-1.2.3.tar.bz2, a un autre endroit (par exemple /root/essai2 )
Il s'agit d'un paquet très très simple.
Suivez toutes les étapes nécessaires:
- desarchivage
- configuration
- compilation
- installation
Parcourez tous les fichier installés et essayez de comprendre à quoi il servent.
Quel est le nom du fichier correspondant à la
librairie installé?
3.16 installer tout, lib dynamique
L'option --shared
Reconfigurez avec l'option --shared (en plus de --prefix...), puis recompilez et re-installez.
Regardez les nouveaux fichiers installés.
Des nouveaux éléments (deux liens symboliques et un fichier) sont installés dans le répertoire lib.
Quel est le nom le plus court parmi ces liens symboliques?
(réfléchissez ensuite à quoi sert ce fichier, et à quoi sert l'option --shared)
4. apt, dpkg, présentation
4.1 apt, dpkg, présentation
Dans les questions précédentes nous avons appris à installer des logiciels à partir d'une archive contenant leur code source.
Nous allons maintenant une manière très différente (et beaucoup plus simple) pour installer et gérer des logiciels.
Dans
cet partie du TP, nous allons découvrir le système de gestion de
paquets de Debian, et, entre-autres les commandes "apt-get", "apt-cache"
et "dpkg". Nous verrons comment installer et desinstaller des paquets
en gérant les dépendances.
Voici quelques transparents du cours à ce sujet:


4.2 présentation de la gestion de paquets
Présentation de la gestion de paquets
Pensez à regarder votre cours (
disponible aussi ici en PDF) pour revoir l'ensemble du fonctionnement du système de gestion de paquets.
Vous
trouverez aussi de nombreuses sources de documentation sur internet.
Prenez un peu de temps pour trouver celle qui vous convient le mieux.
Par exemple:
http://www.debian.org/doc/manuals/apt-howto/index.fr.htmlhttp://fr.wikipedia.org/wiki/Advanced_Packaging_Toolhttp://www.coagul.org/article.php3?id_article=157
Pour résumer:
- les paquets contiennent généralement des logiciels ou des librairies
- les paquets peuvent se trouver sur internet
- les sites internet utilisés sont configurés dans le fichier /etc/apt/sources.list
- un cache sur votre machine conserve une liste des paquets disponibles
- cette liste est mise à jour avec la commande apt-get update
- pour installer un logiciel : apt-get install logiciel
- apt-get install gère les dépendances
- apt-get install va télécharger les paquets nécessaires sur internet et les installe
autres commandes utiles:
apt-cache search toto
recherche tous les paquets dont la description contient le terme
"toto". Cette commande cherche dans tous les paquets qui existent (pas
seulement ceux qui sont installés).
apt-cache show nompaquet affiche des informations sur nompaquet
dpkg -l (L minuscule) liste de tous les paquets installés sur votre système
dpkg -L nompaquet (L majuscule) liste de tous les fichiers installés sur votre système appartenant à nompaquet
dpkg -S nomfichier (S majuscule)
rechercher a quel paquet(s) appartient nomfichier. Cette commande
cherche uniquement dans les paquets deja installés sur votre système.
4.3 apt sources.list
Fichier de configuration
Votre machine est configurée pour chercher les paquets à partir de deux sources différentes:
- une source principale
- une source pour les mise à jour de sécurité
Ceci est spécifié dans un fichier de configuration du système apt.
(pour
trouver son nom, réfléchissez et cherchez ... ou regardez votre cours.
Dans quel répertoire se trouvent tous les fichiers de configuration du
système?)
En utilisant les infos de la question précédente, et en
regardant le fichier de configuration, donnez l'URL de la source
principale.
- [ ]*http:\/\/ftp2\.fr\.debian\.org\/debian(\/|) *
4.4 sources.list
Certains
fichiers de config, comme sources.list, ont une page man qui peut être
accédé par "man nom-fichier-config" (donc ici "man sources.list").
Parcourez rapidement la page man.
Vous y trouvez une description du "format d’une entrée dans sources.list" :
deb uri distribution [composant1] [composant2] [...]
En
utilisant cette info, trouvez dans votre fichier de config sources.list
le nom de la distribution sur laquelle vous travaillez.
(attention, ne confondez pas le fichier de config sources.list avec la page man sources.list qui documente ce fichier)
4.5 debian
La distribution s'appelle bien lenny. Cherchez sur le web et lisez un peu plus d'infos sur "lenny".
Quel est le nom du système d'exploitation auquel appartient cette distribution?
4.6 cache stats
La commande "apt-cache stats" permet d'obtenir des informations sur le nombre de paquets qui sont disponibles.
Au total, quel est l'ordre de grandeur du nombre de paquets sont disponibles?
4.7 nombre de paquets installes
Retrouvez la commande qui permet de lister les paquets effectivement installés sur votre machine.
En utilisant un tube et la commande "wc", comptez combien de lignes sont affichées par cette commande.
Quel est l'ordre de grandeur du nombre de paquets installés?
4.8 apt-cache search
En
utilisant la commande appropriée, recherchez les paquets qui ont un
lien avec le jeux d'échecs. (on cherchera ("échecs" en français) dans
tous les paquets existants, pas dans les paquets installés).
Un grand nombre de lignes s'affichent, chacune correspondant à un paquet.
Donnez le nom d'un des deux paquets permettant de jouer à une version japonaise des échecs.
Si vous ne trouvez pas le bon paquet, vous pouvez utiliser un tube avec "grep -i japon"
4.9 apt-cache search bittorrent
Environ combien de paquets disponibles ont une description qui parle de "bittorrent"?
(attention à l'orthographe de "bittorrent" : 2 "t" et 2 "r")
4.10 apt-cache show
En utilisant la commande apt-cache, affichez des informations sur le paquet "mldonkey-server".
Lisez la description du paquet.
Dans quel langage de programmation est écrit le logiciel "mldonkey-server"?
5. analyse du contenu d'un paquet .deb
5.1 analyse du contenu d'un paquet .deb
Analyse du contenu d'un paquet .deb
Dans les questions suivantes nous allons regarder ce qui est contenu dans un paquet debian.
Les paquets Debian se présentent sous la forme d'un fichier.deb
Il est très rare qu'on ait à manipuler directement des fichiers .deb
D'habitude "apt-get" s'occupe tout seul de télécharger et d'installer les paquets sans qu'on les voit.
Mais pour comprendre le fonctionnement du système, c'est important de comprendre ce qu'il y a à l'intérieur de ces paquets.

5.2 téléchargement d'un paquet
Parmi les fichiers du tp-1 retrouvez le paquet .deb appelé xbill
5.3 analyse du contenu du paquet
Analyse du contenu d'un paquet
Un
paquet .deb est en fait une simple archive au format "ar" (ce qui
ressemble à une archive "tar", mais n'est pas tout à fait la même
chose).
On va désarchiver ce paquet pour découvrir ce qu'il y a dedans.
- créez un répertoire "analyse" et rentrez dedans.
- depuis ce répertoire on va désarchiver le paquet: "ar xv (chemin)/xbill_2.1-6_i386.deb"
- regardez les fichier qui ont été crées dans votre répertoire
Combien de fichiers ont été crées?
5.4 analyse du contenu du paquet (suite)
Analyse du contenu du paquet (suite)
Le paquet xbill est bien constitué de 3 fichiers: control.tar.gz data.tar.gz debian-binary
Parmi ces fichiers crées il y a deux archives au format "tar.gz".
Désarchivez l'archive "control.tar.gz" et regardez attentivement le contenu des fichiers crées:
Quel type d'information est-ce qu'il y a dans ces fichiers?
- oui
- non
- control : description texte du contenu du paquet
- postinst : script shell
- postrm : script shell
5.5 Analyse du contenu d'un paquet (suite2)
Le
fichier "control" contient une description détaillé (c'est que vous
obtiendrez si vous utilisiez la commande "apt-cache show xbill")
Le
fichier "postinst" est un script shell (un petit programme) qui va être
exécuté juste après (post) l'installation (inst) de ce paquet.
Le
fichier "postrm" est un script shell (un petit programme) qui va être
exécuté si ce paquet est installé et que vous le supprimez (rm). Il sera
exécuté juste après (post) la suppression du paquet.
En
lisant le script correspondant (essayez d'en comprendre les grandes
lignes), quel fichier supplémentaire est supprimé par le script lorsque
l'on desinstalle le paquet xbill avec l'option "purge" (purge =
supprimer tous les fichiers de configuration et de données) ?
- /var/games/xbill.scores
- xbill.scores
5.6 Analyse du contenu d'un paquet (data.tar.gz)
Désarchivez le fichier data.tar.gz et regardez la liste des fichiers et répertoires créez.
Il s'agit du principal contenu de ce paquet. Ce sont les fichiers et répertoires qu'il va installer dans le système.
En conclusion: lorsqu'on installe ce paquet (par exemple avec apt-get install xbill), le système fait deux choses:
- il desarchive data.tar.gz dans le répertoire racine "/". De cette
manière il copie tous les fichiers de xbill dans les répertoires du
système.
- il exécute le script postinst (postinst = après installation). Ce
script règle juste quelques petits détails concernant le fichier de
score pour le jeu xbill.
Voila, l'installation d'un paquet n'a plus de mystère pour vous.
Parcourez les répertoires "usr" et "var" qui ont été crées lorsque vous avez desarchivé data.tar.gz
Vous pouvez utiliser "ls -R usr" pour récursivement afficher le contenu de cette arborescence.
Regardez quelques-uns des fichiers ".xpm" à l'aide de la commande "eog".
Trouvez le fichier "xbill.6.gz" (il s'agit de la page man)
Lors de l'installation de ce paquet, dans quel répertoire sera installé le fichier "xbill.6.gz" ?
(attention : on demande dans quel répertoire il
sera installé, pas dans quel répertoire il se trouve actuellement dans vos fichiers)
- \/usr\/share\/man\/man6\/?
5.7 Analyse du contenu d'un paquet (data.tar.gz suite)
Dans quel répertoire sera installé le fichier exécutable qui permettra de lancer le jeu "xbill"?
(attention : on demande dans quel répertoire il sera installé, pas dans quel répertoire il se trouve actuellement dans vos fichiers)
6. installation d'un logiciel
6.1 installation d'un logiciel
Dans la partie précédente nous avons vu ce qu'il y avait dans un paquet .deb.
Dans cette partie nous allons installer des logiciels avec "apt-get install".
La plupart du temps, nous ne manipulerons pas directement des paquets .deb
En effet, apt-get les télécharge et les installe tout seul.
6.2 installation d'un paquet simple
Installation d'un paquet simple
Quelle commande faut-il taper pour installer le logiciel "xbomb" ?
- sudo +apt-get +install +xbomb *
6.3 installation d'un logiciel simple (2)
(remarque:
xbomb est peut-etre déjà installé sur votre machine. Dans ce cas,
desinstallez-le avec "sudo apt-get remove xbomb", puis reinstallez-le
avec "sudo apt-get install xbomb", pour voir les messages)
Lisez attentivement l'affichage de la commande d'installation. Il s'agit d'un logiciel très simple.
Trouvez (et lisez) les descriptions correspondant à chacune des lignes.
sudo apt-get install xbomb
- Lecture des listes de paquets... Fait
- Construction de l'arbre des dépendances... Fait
- Les NOUVEAUX paquets suivants seront installés :
- xbomb
- 0 mis à jour, 1 nouvellement installés, 0 à enlever et 43 non mis à jour.
- Il est nécessaire de prendre 23,6ko dans les archives.
- Après dépaquetage, 77,8ko d'espace disque supplémentaires seront utilisés.
- Réception de : 1 http://ftp2.fr.debian.org lenny/main xbomb 2.1a-6.1 [23,6kB]
- 23,6ko réceptionnés en 0s (91,8ko/s)
- Sélection du paquet xbomb précédemment désélectionné.
- (Lecture de la base de données... 77227 fichiers et répertoires déjà installés.)
- Dépaquetage de xbomb (à partir de .../xbomb_2.1a-6.1_i386.deb) ...
- Paramétrage de xbomb (2.1a-6.1) ...
- oui
- non
- 1. : le système parcourt le cache contenant des informations sur tous les paquets disponibles
- 2. : le système determine quels paquets ont besoin de quels autres paquets pour etre installés
- 4. : le système se rend compte que notre logiciel n'a pas besoin d'autres paquets pour etre installés
- 5. : résumé du nombre de paquets qu'il va faloir manipuler
- 6. : la taille totale des paquets qu'il va falloir télécharger
- 8. : téléchargement du paquet
- 12 et 13 : installation effective du logiciel
6.4 installation d'un logiciel moins simple
installation d'un logiciel moins simple
Installez le logiciel "frozen-bubble". Vous devriez voir afficher quelque-chose ressemblant à ça:
sudo apt-get install frozen-bubbleLecture des listes de paquets... FaitConstruction de l'arbre des dépendances... FaitLes paquets supplémentaires suivants seront installés : fb-music-high frozen-bubble-data libsdl-console libsdl-gfx1.2-4 libsdl-image1.2 libsdl-mixer1.2 libsdl-net1.2 libsdl-pango1 libsdl-perl libsdl-ttf2.0-0 libsmpeg0Paquets suggérés : ttf-freefontLes NOUVEAUX paquets suivants seront installés : fb-music-high frozen-bubble frozen-bubble-data libsdl-console libsdl-gfx1.2-4 libsdl-image1.2 libsdl-mixer1.2 libsdl-net1.2 libsdl-pango1 libsdl-perl libsdl-ttf2.0-0 libsmpeg00 mis à jour, 12 nouvellement installés, 0 à enlever et 43 non mis à jour.Il est nécessaire de prendre 22,9Mo dans les archives.Après dépaquetage, 39,1Mo d'espace disque supplémentaires seront utilisés.Souhaitez-vous continuer [O/n](il faut repondre O (oui))
En utilisant "apt-cache show" regardez à quoi correspondent les différents paquets supplémentaires installés:
- fb-music-high
- frozen-bubble-data
- libsdl-console
- libsdl-gfx1.2-4
- libsdl-image1.2
- libsdl-mixer1.2
- libsdl-net1.2
- libsdl-pango1
- libsdl-perl
- libsdl-ttf2.0-0
- libsmpeg0
et pour chacun essayez de comprendre rapidement en quoi ce paquet
pourrait être nécessaire pour l'installation de "frozen-bubble".
6.5 suppression d'un paquet
Lors
de l'installation de "frozen-bubble", apt-get a déterminé qu'il fallait
aussi installer (entre autres) le paquet "frozen-bubble-data". C'est
qu'on appelle une dépendance.
Qu'arrive-il si on essaye de desinstaller (supprimer) le paquet frozen-bubble-data?
apt-get remove frozen-bubble-data
(attention! tapez la commande, mais répondez non ( n ) à la confirmation)
Quel paquet, en plus de "frozen-bubble-data" serait supprimé?
6.6 dependences de xbomb
Dépendances de xbomb
Analysez les capacités dont dépend "xbomb".
(soit avec "apt-cache show", soit avec "apt-cache depends")
xbomb a besoin de quelque librairies X (X est le système que vous utilisez actuellement pour afficher vos fenêtres).
En plus de ces librairies X, xbomb a besoin d'une autre, très fréquemment utilisé. Laquelle?
Librairie standard du C
xbomb,
comme une grande partie des paquets installés, dépend de la librairie
standard du C. Les programmes écrits en C (ou qui utilisent des éléments
écrits en C) dépendent de cette librairie.
C'est dans cette librairie que se trouvent des fonctions C comme "printf", "malloc", "fopen", "strcmp" ...
Prenez le temps de lire la description de cette librairie (apt-cache show ...)
7. base de données dpkg et interrogation
7.1 base de données dpkg et interrogation
Lorsqu'on installe un paquet avec apt-get ou dpkg, des informations
détaillées le concernant sont ajoutées dans une base de données. Grâce
à cette base de données, apt ou dpkg pourront, par exemple, effacer tous les
fichiers associées à un paquet, ou bien nous dire à quel paquet
appartient un fichier.
7.2 a quel paquet appartient un fichier
A quel paquet appartient un fichier?
Par exemple, si nous tombons sur un fichier appelé "/usr/bin/gcc" et que nous voulons savoir à quel paquet il appartient, on peut taper la commande: "dpkg -S /usr/bin/gcc"
Quelle est le nom du paquet correspondant à ce fichier?
7.3 afficher des infos sur le paquet d'un ficher
Supposons que vous exploriez votre système et que vous tombiez sur le répertoire "/etc/pango"
En
utilisant la commande "dpkg" et "apt-cache" avec les options
d'interrogation appropriées, déterminez à quoi correspond "pango" :
- affichage de textes en diverses langues
- un gestionnaire d'impression
- un jeu vidéo
- configuration du système de démarrage
- informations sur les autres machines du réseau
7.4 version de pango
quelle est la version de "pango" installée sur votre système?
(le champ Version de la description)
7.5 /lib/libe2p.so.2
Quel est le nom du paquet auquel appartient le fichier /lib/libe2p.so.2 ?
7.6 e2fslibs
A quoi sert le paquet e2fslibs ?
- gerer un système de fichiers
- demarrer et arreter des services
- communication crypté sur le réseau
- authentifcation des utilisateurs
- gestion de la memoire vive