Enoncé du TP {5} Système

Transcription

Enoncé du TP {5} Système
Enoncé du TP 5 Système
C. Pain-Barre
INFO - IUT Aix-en-Provence
i
1
Démarrer les PC sous Linux. Les exercices sont à faire via une connexion
l’affichage des applications graphiques, obtenue en tapant :
ssh -X allegro
version du 10/11/2011
SSH
sur allegro qui déporte
Expressions régulières et utilitaires
Exercice 1
Recherche des lignes de fichiers contenant certaines chaînes de caractères avec grep
1. Copier le fichier ~cpb/public/unix/fruit.price dans votre répertoire tpunix.
2. Visionner votre copie avec cat. Elle contient une liste de fruits en anglais, plusieurs blancs et un prix en
euros.
3. À l’aide de grep, faire afficher les lignes de ce fichier :
a. contenant l’expression berries
b. contenant l’expression appLES en ignorant la casse (distinction minuscule/majuscule)
i
Par la suite, on considérera que tous les fruits sont écrits en minuscules. Si ce n’était pas le
cas, on pourrait utiliser l’option -i.
c. ne contenant pas l’expression apples
d. contenant le mot apples
e. dont le fruit (et donc la ligne) commence par la lettre s
f. dont le fruit commence par une voyelle minuscule
g. dont le fruit commence par la lettre l (et pas le chiffre 1) ou une lettre comprise entre a et g
h. dont le fruit ne commence pas par une voyelle
i. dont le fruit ne commence pas par une lettre comprise entre a et m
j. dont le nom comporte au moins 6 lettres
k. dont le nom comporte exactement 5 lettres (pas une de plus !)
l. dont le fruit commence par un p et comporte un maximum de 7 lettres
m. dont le prix se termine par 79
n. dont le prix ne se termine pas par 9
o. dont le prix se termine par 9 mais pas par 39, 69, 79, ni 89
p. dont le prix commence par un point
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
Enoncé du TP 5 Système
Version du 10/11/2011
2/8
q. dont le prix est inférieur à 1 euro
r. dont le prix est inférieur à 1 euro et dont le nom commence par une lettre comprise entre a et g
s. dont le prix ne se termine pas par 09, ni par 39, ni par 79
t. dont le prix est compris entre 1 e et 1.50 e (non-compris)
u. dont le prix est inférieur strictement à 80 cents
v. dont la première lettre du fruit est comprise entre a et e, ou la deuxième lettre est a ou e
Exercice 2
Utilisation de sed (et éventuellement un peu de grep)
1. Questions ne nécessitant pas l’utilisation de fichiers script sed :
a. Faire afficher en majuscules le contenu des fichiers d’extension .txt de votre répertoire tpunix
b. Faire afficher en majuscules la liste des fichiers d’extension .txt de votre répertoire tpunix (sans
afficher les autres fichiers). Par exemple, en supposant que ls -l donne le résultat suivant :
$ ls -l
total 24
-rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x
drwxr-xr-x
-rw-r--r--
1
1
1
2
2
1
cpb
cpb
cpb
cpb
cpb
cpb
prof 1168 mar 17 08:09 amphigouri.txt
prof 677 mar 17 08:09 cigale.txt
prof 451 mar 17 08:09 des_lignes.txt
prof 4096 mar 17 08:09 rep1/
prof 4096 mar 17 08:09 rep2/
prof
10 mar 17 08:09 unfic
alors il faut obtenir :
AMPHIGOURI.TXT
CIGALE.TXT
DES_LIGNES.TXT
c. Faire afficher la liste de tous les fichiers de votre répertoire tpunix en affichant le nom des fichiers
d’extension .txt en majuscules (et en laissant les autres noms inchangés). Il faut obtenir par exemple :
AMPHIGOURI.TXT
CIGALE.TXT
DES_LIGNES.TXT
rep1/
rep2/
unfic
d. Faire afficher le contenu de votre fichier cigale.txt en ajoutant 5 espaces au début de chaque ligne
e. Faire afficher le contenu du fichier ~cpb/public/unix/decale.txt en supprimant les espaces en
début de ligne
f. Sans utiliser cut, faire afficher la liste détaillée des fichiers d’extension .txt (uniquement) de votre
répertoire tpunix, en ne gardant que les permissions (avec le type) et le nom des fichiers, séparés par
un espace. Pour simplifier, on suppose que les noms des fichiers ne contiennent pas d’espace. Il faut
donc obtenir :
-rw-r--r-- amphigouri.txt
-rw-r--r-- cigale.txt
-rw-r--r-- des_lignes.txt
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
3/8
Version du 10/11/2011
Enoncé du TP 5 Système
g. Encore sans utiliser cut, faire afficher la liste détaillée des fichiers ordinaires de votre répertoire
tpunix, en ne gardant que les permissions, sans le type, et le nom des fichiers séparés par un espace.
Au nouveau, on suppose que le nom des fichiers ne contiennent pas d’espace. Il faut obtenir :
rw-r--r-rw-r--r-rw-r--r-rw-r--r--
amphigouri.txt
cigale.txt
des_lignes.txt
unfic
2. Faire afficher le contenu de votre fichier amphigouri.txt (si vous ne l’avez pas, il est dans
~cpb/public/unix) en allant à la ligne à chaque fois qu’un point est rencontré. Pour cela, il est peut-être
plus simple de créer un script en allant à la ligne dans la chaîne de remplacement.
Exercice 3
Combinaison de cut et sed
Pour cut, deux délimiteurs de champ qui se suivent délimitent un champ vide, et aucune option ne permet de
remédier à cela. C’est pourquoi, il est parfois intéressant de combiner sed et cut.
1. Taper la commande ps lx
2. On souhaite ne récupérer que les numéros d’utilisateur, le PID et la commande (sans ses éventuelles
options ou arguments), en supposant que le nom de la commande ne comprend pas d’espace. Plutôt que
de compter les colonnes, combiner sed et cut afin d’obtenir le résultat souhaité.
2
Découpage, recherche, compression et archivage de fichiers
Exercice 4
Utilisation de split
1. Créer un répertoire split dans tpunix et s’y placer
2. Découpage de ../des_lignes.txt par blocs de lignes :
a. Découper le fichier ../des_lignes.txt en fichiers contenant au plus 6 lignes
b. Afficher le contenu du répertoire de travail, il devrait y avoir les fichiers xaa à xad
c. Reconstituer le fichier des_lignes.txt dans le répertoire de travail
d. L’afficher pour vérifier que tout est correct
e. Supprimer tous les fichiers du répertoire
3. Découpage de ~cpb/public/Firefox_wallpaper.png par nombre d’octets :
a. Découper le fichier ~cpb/public/Firefox_wallpaper.png en fichiers commençant par
fond (à la place de x) et de taille maximale 100Ko
b. Afficher le contenu du répertoire de travail, il devrait y avoir 9 fichiers
c. Reconstituer le fichier d’origine en l’appelant lefond.png
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
Enoncé du TP 5 Système
Version du 10/11/2011
4/8
d. Taper la commande eog lefond.png pour l’afficher l’image correspondante puis quitter eog
i
eog ne peut fonctionner que si la connexion
l’affichage des applications graphiques.
SSH
s’est faite avec l’option -X pour déporter
e. Supprimer tous les fichiers du répertoire
4. Découpage de l’entrée standard par blocs de lignes :
a. Sachant que split ne peut découper qu’un fichier à la fois, découper le résultat de la concaténation
de tous les fichiers d’extension .txt de tpunix, en fichiers d’au plus 20 lignes et commençant par
lesfics
b. Afficher le contenu du répertoire de travail, il devrait y avoir un certain nombre de fichiers
c. Retourner dans tpunix
d. Supprimer le répertoire split
Exercice 5
Utilisation de find pour rechercher et manipuler des fichiers ou des répertoires vérifiant certaines conditions.
1. Utiliser find pour rechercher le fichier ordinaire cigale.txt dans l’arborescence de votre répertoire
personnel.
2. Utiliser find pour rechercher le répertoire tpunix dans l’arborescence de votre répertoire personnel.
3. Utiliser find pour rechercher le répertoire cigale dans l’arborescence de votre répertoire personnel. Il
ne devrait pas y en avoir.
4. Utiliser find pour rechercher tous les fichiers ordinaires vous appartenant dans toute l’arborescence du
système de fichiers (c’est à dire depuis la racine).
i
les fichiers vous appartenant contenus dans le répertoire /proc sont des fichiers virtuels donnant un état des processus que vous exécutez.
5. Reprendre la question précédente et détourner les sorties de manière à éliminer les messages d’erreur et
paginer l’affichage des fichiers trouvés.
6. Utiliser find pour créer le fichier hebdo.txt contenant les références des fichiers ordinaires vous appartenant contenus dans l’arborescence du système de fichiers et qui ont été modifiés il y a moins d’une
semaine, tout en éliminant les messages d’erreur.
7. Utiliser le manuel en ligne pour étudier le fonctionnement de la commande externe tee dont le rôle est
de reproduire ce qu’elle lit sur son entrée standard, à la fois sur sa sortie standard mais aussi dans des
fichiers. Reprendre la question précédente pour, en plus de créer le fichier hebdo.txt, utiliser wc pour
faire afficher le nombre de fichiers trouvés, le tout en un seul pipeline.
8. Faire rechercher la liste des terminaux dont la permission d’écriture est accordée aux autres, ou qui vous
appartiennent. Sur la Debian, il ne devrait pas y en avoir beaucoup. . .
9. L’objectif est maintenant d’écrire un message comportant votre nom d’utilisateur sur tous les terminaux sur
lesquels vous pouvez écrire. Malheureusement, il n’est pas possible d’utiliser les redirections à l’intérieur
des critères -exec et -ok. Vous pouvez toutefois utiliser l’exécutable ~cpb/public/bin/writo, qui écrit
dans le fichier indiqué en premier argument tous les autres arguments qui lui sont indiqués.
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
5/8
Version du 10/11/2011
Enoncé du TP 5 Système
10. Avec une seule commande, faire afficher les informations détaillées de chacun des fichiers ordinaires qui
se trouvent dans l’arborescence du répertoire d’accueil de l’utilisateur cpb, dont le nom commence par
ts_ ou par algo, et dont l’extension est adb ou ads. Pour cela, utiliser le parenthésage, le "ou", les
motifs et l’option -exec de find.
Remarque : il existe le prédicat (critère) -ls de find qui, comme -print, est toujours vrai et qui exécute
ls -dils sur le fichier en cours d’analyse. Ici, on lui préfèrera l’option -exec pour réaliser un simple ls
-ld sur chaque fichier trouvé.
11. Reprendre la question précédente mais au lieu d’afficher les informations sur ces fichiers, les copier en
mode bavard dans votre répertoire tpunix.
12. Rechercher les fichiers ordinaires d’extension .txt contenus dans l’arborescence de votre répertoire personnel, et modifier leurs permissions en supprimant tous les droits aux membres du groupe et aux autres.
13.
M
Cette question ne doit être faite que si les précédentes ont été bien maîtrisées. Il y a
un risque de supprimer irrémédiablement ses fichiers ! ! ! Dans le doute, demander à
votre enseignant de vérifier votre réponse ou tester sur une partie de votre arborescence
seulement.
Rechercher et supprimer en mode bavard avec demande de confirmation (ou sans pour les plus téméraires),
les fichiers ordinaires contenus dans l’arborescence de votre répertoire personnel, qui se terminent par ~
ou par .bak (ces fichiers sont créés par certains éditeurs lorsqu’on enregistre un fichier, et contiennent la
précédente version).
14. Consulter le manuel en ligne de find pour vous faire une idée du nombre de critères et d’actions disponibles.
Exercice 6
Utilisation de gzip/gunzip et de zcat
1. Noter la taille de votre fichier cigale.txt
2. Compresser cigale.txt avec gzip (en mode verbeux). On remarque que le gain indiqué par gzip est de
l’ordre de 40%. Comparer la taille du fichier cigale.txt.gz avec celle de cigale.txt (qui n’existe
plus)
3. Décompresser cigale.txt.gz (pour restituer cigale.txt) avec gunzip
4. Utiliser gzip pour compresser récursivement et en mode verbeux tous les fichiers de l’arborescence de
votre répertoire tpunix. On remarquera sûrement que pour certains petits fichiers, la compression a eu
l’effet inverse (compression > 100%) car les informations de compression dépassent le gain de la compression. . .
5. Utiliser zcat pour regarder le contenu de cigale.txt.gz
6. Utiliser l’option -c de gzip pour regarder le contenu de cigale.txt.gz sans créer le fichier
décompressé
7. Utiliser gzip ou gunzip pour décompresser récursivement tous les fichiers de votre arborescence tpunix
Exercice 7
Utilisation de tar
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
Enoncé du TP 5 Système
Version du 10/11/2011
6/8
1. Faire afficher le contenu de l’archive ~cpb/public/unix/images.tar, sans l’extraire, en utilisant
l’action t et l’option f de tar
2. Depuis votre répertoire tpunix, extraire tous les fichiers de cette archive. Utiliser l’option v afin d’avoir
une trace du déroulement de l’extraction. Vous devrez obtenir un répertoire images qui contient des
images GIF
3. Afficher, sans l’extraire, le contenu de l’archive ~cpb/public/unix/files.tgz, en utilisant l’option
z de tar (car l’archive est compressée avec gzip)
4. Refaire la question précédente sans utiliser l’option z mais en combinant gzip (ou gunzip) et tar dans un
pipeline
5. Supprimer de votre répertoire tpunix le répertoire images ainsi que les fichiers images.tar et
files.tgz si vous les avez copiés
6. Se placer dans tp
7. Créer tpunix.tgz comme l’archive compressée (avec gzip) de votre répertoire tpunix. Utiliser l’option
v pour faire afficher la progression de l’archivage.
8. Vérifier en faisant afficher le contenu de cette archive (ne pas l’extraire !)
9. Supprimer tpunix.tgz
3
Liens et bits set-uid, set-gid, sticky-bit
Exercice 8
Création de liens
1. Se placer dans tpunix
2. Créer un lien physique appelé phys sur votre fichier cigale.txt
3. Créer un lien symbolique appelé symb sur votre fichier cigale.txt
4. Faire afficher les informations détaillées sur les fichiers de tpunix. Remarquer que cigale.txt et phys
ont 2 comme nombre de liens, alors que les autres fichiers ordinaires n’en ont qu’un
5. Modifier la première ligne de cigale.txt
6. Afficher phys et symb : ils ont aussi changé
7. Supprimer cigale.txt
8. On ne peut plus afficher symb car il désigne un fichier inexistant. En revanche phys contient toujours la
version modifiée de cigale.txt
9. Renommer phys en cigale.txt. Cette fois, on peut afficher le contenu de symb
Exercice 9 (sur allegro)
Bits set-uid et set-gid (sur les fichiers)
1. Afficher les informations détaillées sur les fichiers infos0, infos1, infos2 et infos3 contenus dans
~cpb/public/unix et observer la présence éventuelle des bits set-uid et/ou set-gid dans leurs permissions.
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
7/8
Version du 10/11/2011
Enoncé du TP 5 Système
2. Exécuter chacun de ces fichiers. Remarquer la différence qu’il peut exister entre les utilisateurs réel et
effectif et les groupes réel et effectif
3. Copier infos3 dans votre répertoire public. Remarquer que votre copie ne possède pas les bits set-uid
et set-gid (du moins, en principe ;-))
4. Selon votre masque, d’autres droits ont pu être supprimés pendant la copie. Modifier les droits sur infos3
pour que l’utilisateur et les autres aient le droit d’exécution mais pas les membres du groupe
5. L’exécuter puis le faire exécuter par son voisin (attention : il ne faut pas qu’il soit membre de votre groupe)
et observer que les identités (utilisateur et groupe) réelles et effectives sont celles de l’exécutant
6. Modifier infos3 pour ajouter le bit set-gid. Vérifier en affichant les informations détaillées sur le fichier.
7. Le faire exécuter par son voisin. Il devrait remarquer qu’à ce stade, l’activation de ce bit n’a pas d’effet.
8. Pour que le bit set-gid soit effectif, il faut aussi le droit d’exécution pour le groupe. Ajouter ce droit à
infos3. Vérifier en demandant les informations détaillées sur le fichier.
9. Le faire exécuter par son voisin. Cette fois, ce dernier garde son identité comme effective mais son groupe
effectif est le vôtre.
10. Modifier infos3 pour ajouter le bit set-uid, mais supprimer les droits d’exécution au propriétaire. Vérifier
en demandant les informations détaillées sur le fichier.
11. Le faire exécuter par son voisin. Ce dernier aura votre identité et votre groupe comme effectifs.
-
On note au passage que le bit set-uid suffit pour changer l’utilisateur effectif, alors que le
changement de groupe effectif nécessite (de manière difficilement justifiable) à la fois le bit
set-gid et le droit d’exécution pour le groupe. . .
12. Supprimer infos3.
Exercice 10 (sur allegro)
Observation de l’utilité du sticky-bit et du bit set-gid sur les répertoires
1. Faire afficher les informations détaillées sur le répertoire /tmp et remarquer la présence du sticky-bit dans
ses permissions
2. Demander les informations détaillées sur le répertoire /tmp/depot. Il n’a pas de sticky-bit
3. Créer un fichier ayant pour nom votre nom d’utilisateur dans /tmp et un autre de même nom dans
/tmp/depot. Leur contenu n’a pas d’importance, même vide. Par la suite, on évoquera ces fichiers sous
le nom nnnppp
4. Demander à son voisin de (tenter de) les supprimer et observer la réaction du système selon le répertoire
d’appartenance du fichier
5. Supprimer le fichier /tmp/nnnppp
6. Créer un répertoire ayant pour nom votre nom d’utilisateur (nnnppp) dans /tmp
7. Activer le sticky-bit et ajouter les droits de lecture/écriture/exécution pour tout monde sur votre répertoire
/tmp/nnnppp. Vérifier les droits.
8. Copier dans /tmp/nnnppp votre fichier ~/tp/tpunix/amphigouri.txt (si vous ne l’avez pas, le
copier depuis ~cpb/public/unix)
9. Demander à votre voisin de créer les fichiers fic1 et fic2 dans votre répertoire /tmp/nnnppp
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
Enoncé du TP 5 Système
Version du 10/11/2011
8/8
10. Afficher les informations détaillées sur ces fichiers : leur propriétaire et leur groupe sont ceux de votre
voisin
11. Ajouter le bit set-gid sur le répertoire /tmp/nnnppp. Vérifier ses permissions.
12. Demander à votre voisin de créer un fichier fic3 et un répertoire rep dans votre répertoire
/tmp/nnnppp
13. Afficher les informations détaillées sur le contenu de /tmp/nnnppp : le groupe de fic3 et de rep devrait
être le vôtre ! De plus, rep devrait lui aussi avoir le bit set-gid activé
14. Demander à ce voisin de supprimer le fichier amphigouri.txt de votre répertoire /tmp/nnnppp. Cette
fois, ça ne devrait pas marcher
15. Lui demander de supprimer le fichier fic1 de votre répertoire /tmp/nnnppp. En tant que propriétaire du
fichier, il doit en avoir le droit
16. Supprimer son fichier fic2 de votre répertoire /tmp/nnnppp. En tant que propriétaire du répertoire, vous
en avez aussi le droit
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence