Vous êtes sur la page 1sur 53

TP n°1

 RET Infos système


OUR  Quel est le système installé?
 Quelle est la distribution installée?
 Quels sont les utilisateurs en cours du système?
 Ouvrir un nouveau terminal en utilisant un autre
compte.
 Fermer ce terminal.
La commande man
 Tester la commande man pour obtenir de l'aide sur
man.
Quelles sont les commandes susceptibles d'être
documentées dans man?
Contenu de répertoires et de fichiers ascii (texte)
 Lister le contenu du répertoire /etc.
 Lister de manière détaillée le contenu du
répertoire /etc.
Les fichiers nommés "passwd", "shadow", "group" et
"gpasswd" sont-ils présents dans /etc?
 Lister le contenu du répertoire /dev.
 Lister le contenu du fichier /etc/passwd.
 Lister le contenu du fichier /etc/shadow.
 Afficher par ordre alphabétique les utilisateurs
définis dans le fichier /etc/passwd.
 Rechercher tous les fichiers du répertoire /etc
contenant la chaine de caractères "root".
 Rechercher la localisation du fichier "stdio.h" dans le
système de fichier de votre installation.
 A l'aide de la commande "od", illustrer la différence
majeure entre les types de fichier ascii (texte) DOS,
UNIX et Macintosh. Utiliser le fichier ascii
Dos montexte.dos fourni en lien et créer les fichiers
ascii Unix "montexte.unix" et ascii Macintosh
"montexte.mac" avec le même contenu au moyen d'un
éditeur texte (Kate par exemple) puis comparer
(version Macintosh si l'éditeur le permet).
Quelle est la différence?
 Utiliser les commandes de comparaison de fichiers de
Linux pour tester le contenu d'un même fichier texte
en version Unix et Dos.
 Combien de lignes, de mots et de caractères
comportent les fichiers "montexte.unix",
"montexte.dos" et "montexte.mac"?
Commandes
Déterminer les commandes permettant de réaliser les
actions suivantes:
 Déterminer le répertoire par défaut dans la
hiérarchie des répertoires?
 Y a t-il des fichiers, des répertoires dans ce
répertoire?
 Entrer du texte dans un fichier nommé
"Mon_fichier".
 Lister le contenu de "Mon_fichier".
 Lister le répertoire courant.
 Lister les répertoires /bin et /dev.
 Créer sous votre répertoire deux sous-répertoires :
"Source" et "Data".
 Se positionner sous "Source".
 Listez le répertoire courant.
 Revenir sous le répertoire de départ et détruire
"Source".
 Créer un deuxième fichier nommé "Mon_fichier_2".
 Copier chaque fichier en nom_de_fichier.old.
 Créer un répertoire "Old".
 Déplacer les fichiers avec l'extension old vers le
répertoire "Old".
 Copiez les fichiers sans extension dans le repertoire
"Data".
 Sous votre répertoire de départ, créez un lien
matériel "Mon_lien" équivalent à "Mon_fichier_2".
 Lister les deux fichiers "Mon_lien" et
"Mon_fichier_2" en affichant leur numéro d'inode.
Que remarquez vous?
 Supprimer "Mon_lien".
"Mon_fichier_2" a-t-il disparu?
 Sous votre répertoire de départ, créez un lien
symbolique "Mon_nouveau_lien" sur "Mon_fichier_2".
 Lister les deux fichiers "Mon_nouveau_lien" et
"Mon_fichier_2".
Que remarquez vous?
 Supprimer "Mon_fichier_2".
"Mon_nouveau_lien" a-t-il disparu?
 Quelle est la taille totale des fichiers contenus dans
votre répertoire?
 Effacer tous les fichiers crées.
Mise en place d'un espace de travail pour 4 utilisateurs
Définir le lot de commandes à exécuter pour créer 4
utilisateurs en suivant les règles suivantes:
 Création de 2 groupes.
 Les premier et deuxième utilisateurs sont membres
du premier groupe.
 Les troisième et quatrième utilisateurs sont membres
du second groupe.
 Le deuxième utilisateur est aussi membre du second
groupe.
 Le quatrième utilisateur est aussi membre du premier
groupe.
 Outre leur répertoire de travail, les utilisateurs ont
accès à un répertoire commun /home/groupe1
et/ou /home/groupe2 suivant leur groupe. Dans ce
répertoire, ils peuvent écrire, créer des fichiers mais
ne peuvent pas effacer les fichiers.
1. Détaillez les étapes de création des groupes, des
utilisateurs et des répertoires en indiquant quels
fichiers vous utilisez et quelles commandes vous
utilisez sur ces fichiers.
2. Modifiez les profils des utilisateurs pour qu'au login,
le répertoire d'accueil sur lequel il souhaite travailler
lui soit demandé (s'il entre U, il sera sous son
répertoire, s'il entre G, il sera sous le répertoire de
son groupe).
3. Parmi ces 3 valeurs: 066, 067, 077, quel umask
positionneriez vous? Expliquez pour chaque valeur
quelles sont les conséquences de ce choix.
Solution

Corrections des
exercices du TP n°1
 RET Infos système
OUR Quel est le uname -a
Linux hector 2.6.15-27-386 #1 PREEMPT
système Fri Dec 8 17:51:56 UTC 2006 i686
GNU/Linux
installé?
Quelle est cat /etc/issue
Ubuntu 6.06.1 LTS \n \l
la
distribution
installée?
Quels sont who
nico :0 2007-01-14 16:25
les
utilisateurs
en cours du
système?
Ouvrir un su user
nouveau
terminal en
utilisant un
autre
compte.
Fermer ce exit
terminal.
La commande man
Tester la man man
man is the systems manual pager. Each
commande page argument given to man is normally
the name of a program, utility or
man pour function.
obtenir de
l'aide sur
man.
Quelles
sont les
commandes
susceptible
s d'être
documentée
s dans man?
Contenu de répertoires et de fichiers ascii
(texte)
Lister le contenu ls /etc
du répertoire
/etc.
Lister de manière ls -l /etc
ls -la /etc
détaillée le
Tous ces fichiers sont bien
contenu du
présents.
répertoire /etc.
Les fichiers
nommés "passwd",
"shadow", "group"
et "gpasswd"
sont-ils présents
dans /etc?
Lister le contenu ls /dev
du répertoire
/dev.
Lister le contenu cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
du fichier daemon:x:1:1:daemon:/usr/sbin:/bi
n/sh
/etc/passwd. bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/syn
c
games:x:5:60:games:/usr/games:/bi
n/sh
man:x:6:12:man:/var/cache/man:/bi
n/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/s
h
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/
bin/sh
...
user,,,:/var/run/hplip:/bin/false
nico:x:1000:1000:Nico,,,:/home/ni
co:/bin/bash

Lister le contenu cat /etc/shadow


du fichier Lecture refusée.
/etc/shadow.
Afficher par cat /etc/passwd | sort
backup:x:34:34:backup:/var/backup
ordre s:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
alphabétique les cupsys:x:100:106::/home/cupsys:/b
utilisateurs in/false
daemon:x:1:1:daemon:/usr/sbin:/bi
définis dans le n/sh
dhcp:x:101:101::/nonexistent:/bin
fichier /false
/etc/passwd. games:x:5:60:games:/usr/games:/bi
n/sh
...
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/syn
c
syslog:x:102:102::/home/syslog:/b
in/false
sys:x:3:3:sys:/dev:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp
:/bin/sh
www-data:x:33:33:www-
data:/var/www:/bin/sh

Rechercher tous grep root /etc/*


les fichiers du
...

répertoire /etc
contenant la
chaine de
caractères "root".
Rechercher la find / -name stdio.h
...
localisation du find: /tmp/kde-root: Permission
non accordée
fichier "stdio.h" /usr/include/bits/stdio.h
dans le système /usr/include/stdio.h
de fichier de
votre installation.
A l'aide de la od -x monfichier.dos
0000000 6e75 0a0d 6564 7875 0a0d
commande "od", 7274 696f 0d73
0000020 710a 6175 7274 0d65 630a
illustrer la 6e69 0d71 730a
différence 0000040 7869 0a0d 6573 7470 0a0d
0a0d 0a0d 0a0d
majeure existant 0000060 0a0d 0a0d
0000064
entre les types de od -c monfichier.dos
fichier ascii 0000000 u n \r \n d e u x \r \n t
r o i s \r
(texte) DOS, 0000020 \n q u a t r e \r \n c i
n q \r \n s
UNIX et 0000040 i x \r \n s e p t \r
Macintosh. \n \r \n \r \n \r \n
0000060 \r \n \r \n
Utiliser le fichier 0000064
ascii od -x monfichier.unix
0000000 6e75 640a 7565 0a78 7274
Dos montexte.dos 696f 0a73 7571
0000020 7461 6572 630a 6e69 0a71
fourni en lien et 6973 0a78 6573
0000040 7470 0a0a 0a0a 0a0a
créer les fichiers 0000050
ascii Unix od -c monfichier.unix
0000000 u n \n d e u x \n t r o i
"montexte.unix" s \n q u
et ascii Macintosh 0000020
x \n s e
a t r e \n c i n q \n s i

"montexte.mac" 0000040 p t \n \n \n \n \n \n
0000050
avec le même od -x monfichier.mac
contenu au moyen 0000000 6e75 640d 7565 0d78 7274
696f 0d73 7571
d'un éditeur 0000020 7461 6572 630d 6e69 0d71
6973 0d78 6573
texte (Kate par 0000040 7470 0d0d 0d0d 0d0d
exemple) puis 0000050
od -c monfichier.unix
comparer (version s \r q u
0000000 u n \r d e u x \r t r o i

Macintosh si 0000020 a t r e \r c i n q \r s i
x \r s e
l'éditeur le 0000040 p t \r \r \r \r \r \r
0000050
permet).
Codage des fins de ligne sous
Quelle est la
Dos par les deux caracteres
différence?
0x0D et 0x0A.
Codage des fins de ligne sous
Unix par le seul caractere
0x0A.
Codage des fins de ligne sous
Macintosh par le seul
caractere 0x0D.
Utiliser les cmp monfichier.unix
monfichier.dos
commandes de monfichier.unix monfichier.dos
comparaison de sont différents: octet 3, ligne 1

fichiers de Linux diff monfichier.unix


monfichier.dos
pour tester le 1,12c1,12
contenu d'un < un
< deux
même fichier < trois
< quatre
texte en version < cinq
< six
Unix et Dos. < sept
<
<
<
<
<
---
> un
> deux
> trois
> quatre
> cinq
> six
> sept
>
>
>
>
>

diff monfichier.unix
monfichier.mac
1,12c1
< un
< deux
< trois
< quatre
< cinq
< six
< sept
<
<
<
<
<
---
septre
\ Pas de fin de ligne à la fin
du fichier.

Combien de wc monfichier.unix
12 7 40 monfichier.unix
lignes, de mots et wc monfichier.dos
de caractères 12 7 52 monfichier.dos
wc monfichier.mac
comportent les 0 7 40 monfichier.mac
fichiers
"montexte.unix",
"montexte.dos" et
"montexte.mac"?
Commandes
Se localiser dans pwd
la hiérarchie.
Détecter la ls -la
total 8
présence de drwxr-xr-x 2  nico nico 4096
2007-02-01 11:25 .
fichiers/répertoi drwxr-xr-x 22 nico nico 4096
res. 2007-02-01 11:25 ..
Oui, mais ce sont les entrées
vers la racine
du repertoire et la racine du
répertoire père
Entrer du texte echo aaaaaaaaaaaaaaaaaa
>Mon_fichier
dans
Mon_fichier.
Lister le contenu cat Mon_fichier
aaaaaaaaaaaaaaaaaa
de Mon_fichier.
Lister son propre ls
Mon_fichier
répertoire. ls -la
total 12
drwxr-xr-x 2  nico nico 4096
2007-02-01 11:28 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:25 ..
-rw-r--r-- 1  nico nico   19
2007-02-01 11:28 Mon_fichier

Lister les ls /bin


ls /dev
catalogues /bin
et /dev.
Créer sous votre mkdir Source Data
répertoire 2
sous-répertoires:
"Source" et
"Data".
Se positionner cd source
sous "Source".
Lister le ls -la
total 8
répertoire. drwxr-xr-x 2 nico nico 4096 2007-
02-01 11:29 .
drwxr-xr-x 4 nico nico 4096 2007-
02-01 11:29 ..

Revenir sous le cd ..
rmdir Source
répertoire de
départ et
détruire
"Source".
Créer un touch Mon_fichier_2
ls -la
deuxième fichier total 16
drwxr-xr-x  3 nico nico 4096
Mon_fichier_2. 2007-02-01 11:31 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:31 ..
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:29 Data
-rw-r--r--  1 nico nico   19
2007-02-01 11:28 Mon_fichier
-rw-r--r--  1 nico nico    0
2007-02-01 11:31 Mon_fichier_2

Copier chaque cp Mon_fichier


Mon_fichier.old
fichier en fichier cp Mon_fichier_2
.old. Mon_fichier_2.old
ls -la
total 20
drwxr-xr-x 3  nico nico 4096
2007-02-01 11:39 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:31 ..
drwxr-xr-x 2  nico nico 4096
2007-02-01 11:29 Data
-rw-r--r-- 1  nico nico   19
2007-02-01 11:28 Mon_fichier
-rw-r--r-- 1  nico nico    0
2007-02-01 11:31 Mon_fichier_2
-rw-r--r-- 1  nico nico    0
2007-02-01 11:38
Mon_fichier_2.old
-rw-r--r-- 1  nico nico   19
2007-02-01 11:38 Mon_fichier.old

Créer un mkdir old


répertoire "Old".
Déplacer les mv *.old Old
ls -la Old
fichiers avec total 12
l’extension .old drwxr-xr-x  2 nico nico 4096
2007-02-01 11:39 .
dans le drwxr-xr-x  4 nico nico 4096
2007-02-01 11:39 ..
répertoire "Old". -rw-r--r--  1 nico nico    0
2007-02-01 11:38
Mon_fichier_2.old
-rw-r--r--  1 nico nico   19
2007-02-01 11:38 Mon_fichier.old
ls -la
total 20
drwxr-xr-x  4 nico nico 4096
2007-02-01 11:39 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:31 ..
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:29 Data
-rw-r--r--  1 nico nico   19
2007-02-01 11:28 Mon_fichier
-rw-r--r--  1 nico nico    0
2007-02-01 11:31 Mon_fichier_2
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:39 Old

Copier les cp * Data


cp: omission du répertoire `Data'
fichiers sans cp: omission du répertoire `Old'
ls -la Data
extension dans le total 12
répertoire drwxr-xr-x  2 nico nico 4096
2007-02-01 11:41 .
"Data". drwxr-xr-x  4 nico nico 4096
2007-02-01 11:39 ..
-rw-r--r--  1 nico nico   19
2007-02-01 11:41 Mon_fichier
-rw-r--r--  1 nico nico    0
2007-02-01 11:41 Mon_fichier_2
ls -la
total 20
drwxr-xr-x  4 nico nico 4096
2007-02-01 11:39 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:31 ..
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:41 Data
-rw-r--r--  1 nico nico   19
2007-02-01 11:28 Mon_fichier
-rw-r--r--  1 nico nico    0
2007-02-01 11:31 Mon_fichier_2
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:39 Old

Sous le ln Mon_fichier_2 Mon_lien


ls -la
répertoire de total 20
départ, créer un drwxr-xr-x  4 nico nico 4096
2007-02-01 11:54 .
lien matériel drwxr-xr-x 22 nico nico 4096
2007-02-01 11:43 ..
"Mon_lien" drwxr-xr-x  2 nico nico 4096
équivalent à 2007-02-01 11:41 Data
-rw-r--r--  1 nico nico   19
"Mon_fichier_2". 2007-02-01 11:28 Mon_fichier
-rw-r--r--  2 nico nico    0
2007-02-01 11:31 Mon_fichier_2
-rw-r--r--  2 nico nico    0
2007-02-01 11:31 Mon_lien
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:39 Old

Lister les deux ls -lai


total 20
fichiers  16457 drwxr-xr-x  4 nico nico
4096 2007-02-01 11:54 .
"Mon_lien" et 868403 drwxr-xr-x 22 nico nico
"Mon_fichier_2" 4096 2007-02-01 11:43 ..
 16619 drwxr-xr-x  2 nico nico
en affichant leur 4096 2007-02-01 11:41 Data
 16624 -rw-r--r--  1 nico nico  
numéro d’inode. 19 2007-02-01 11:28 Mon_fichier
Que remarquez  16597 -rw-r--r--  2 nico nico   
0 2007-02-01 11:31 Mon_fichier_2
vous?  16597 -rw-r--r--  2 nico nico   
0 2007-02-01 11:31 Mon_lien
 16632 drwxr-xr-x  2 nico nico
4096 2007-02-01 11:39 Old
Leurs numeros d'inode sont
identiques donc ces deux
fichiers n'en sont physiquement
qu'un seul.
Supprimer rm Mon_lien
ls -lai
"Mon_lien". total 20
"Mon_fichier_2"  16457 drwxr-xr-x  4 nico nico
4096 2007-02-01 11:56 .
a-t-il disparu? 868403 drwxr-xr-x 22 nico nico
4096 2007-02-01 11:43 ..
 16619 drwxr-xr-x  2 nico nico
4096 2007-02-01 11:41 Data
 16624 -rw-r--r--  1 nico nico  
19 2007-02-01 11:28 Mon_fichier
 16597 -rw-r--r--  1 nico nico   
0 2007-02-01 11:31 Mon_fichier_2
 16632 drwxr-xr-x  2 nico nico
4096 2007-02-01 11:39 Old
"Mon_fichier_2" existe
toujours.
Sous votre ln -s Mon_fichier_2
Mon_nouveau_lien
répertoire de
départ, créez un
lien symbolique
"Mon_nouveau_li
en" sur
"Mon_fichier_2".
Lister les deux ls -la
total 20
fichiers drwxr-xr-x  4 nico nico 4096
2007-02-01 11:57 .
"Mon_nouveau_li drwxr-xr-x 22 nico nico 4096
en" et 2007-02-01 11:43 ..
drwxr-xr-x  2 nico nico 4096
"Mon_fichier_2". 2007-02-01 11:41 Data
-rw-r--r--  1 nico nico   19
Que remarquez 2007-02-01 11:28 Mon_fichier
vous? -rw-r--r--  1 nico nico    0
2007-02-01 11:31 Mon_fichier_2
lrwxrwxrwx  1 nico nico   13
2007-02-01 11:57 Mon_nouveau_lien
-> Mon_fichier_2
drwxr-xr-x  2 nico nico 4096
2007-02-01 11:39 Old
Le lien est clairement mis en
evidence par le caractere l et
par l'affichage du nom du
fichier lie.
La taille n'est pas bonne.
Supprimer rm Mon_fichier_2
ls -la
"Mon_fichier_2". total 20
"Mon_nouveau_li drwxr-xr-x 4 nico nico 4096 2007-
02-01 11:59 .
en" a-t-il drwxr-xr-x 22 nico nico 4096
2007-02-01 11:43 ..
disparu? drwxr-xr-x 2 nico nico 4096 2007-
02-01 11:41 Data
-rw-r--r-- 1 nico nico 19 2007-
02-01 11:28 Mon_fichier
lrwxrwxrwx 1 nico nico 13 2007-
02-01 11:57 Mon_nouveau_lien ->
Mon_fichier_2
drwxr-xr-x 2 nico nico 4096 2007-
02-01 11:39 Old
Le lien existe toujours mais est
brise.
Il est caracterisé par un code
couleur spécifique dans le shell
utilisé.
Quelle est la du -b
4115 ./Old
taille totale des 4115 ./Data
12358 .
fichiers contenus
La taille est approximative en
dans votre
raison de l'utilisation de blocs
répertoire?
de 512 octets.
Effacer tous les rm -r *
ls -la
fichiers créés. total 8
drwxr-xr-x  2 nico nico 4096
2007-02-01 12:03 .
drwxr-xr-x 22 nico nico 4096
2007-02-01 11:43 ..

Mise en place d'un espace de travail pour 4


utilisateurs
1. Création des groupes et des utilisateurs
 Création de 2 groupes
groupadd group1
groupadd group2
cat /etc/group
...
group1:x:1001:
group2:x:1002:

 Création des 4 utilisateurs avec


création de leurs répertoires home:
useradd -m u1
useradd -m u2
useradd -m u3
useradd -m u4
cat /etc/passwd
...
u1:x:1001:100::/home/u1:/bin/sh
u2:x:1002:100::/home/u2:/bin/sh
u3:x:1003:100::/home/u3:/bin/sh
u4:x:1004:100::/home/u4:/bin/sh
ls -l /home
total 20
...
drwxr-xr-x 2 u1 users 4096 2007-02-01
12:12 u1
drwxr-xr-x 2 u2 users 4096 2007-02-01
12:12 u2
drwxr-xr-x 2 u3 users 4096 2007-02-01
12:12 u3
drwxr-xr-x 2 u4 users 4096 2007-02-01
12:12 u4

 Placement des utilisateurs dans leurs


groupes
usermod -G group1 u1
usermod -G group1,group2 u2
usermod -G group2 u3
usermod -G group1,group2 u4
cat /etc/group
...
group1:x:1001:u1,u2,u4
group2:x:1002:u2,u3,u4

 Changement de propriétaire des


répertoires
chown u1:group1 /home/u1
chown u2:group1 /home/u2
chown u3:group2 /home/u3
chown u4:group2 /home/u4
 Création des répertoires communs
mkdir /home/group1
mkdir /home/group2
 Mise en place des permissions pour
permettre aux utilisateurs d'écrire
dans le répertoire de leur groupe
chgrp group1 /home/group1
chgrp group2 /home/group2
 Mise en place de la permission pour
protéger de l'effacement tout en
autorisant l'écriture:
A ce niveau du cours, on ne sait pas
résoudre la dernière problématique.
Soit on fait confiance aux
utilisateurs,
soit on passe par root pour ajouter les
fichiers et on ne donne pas la
permission «w».
Cas le plus permissif:
chmod g=rwx /home/group1
ou
chmod 770 /home/group1
Cas le moins permissif:
chmod g=700 /home/group1
 Activation d'un utilisateur
passwd u1
Enter new UNIX password:
Retype new UNIX password:
passwd : le mot de passe a été
mis à jour avec succès
cat/etc/shadow
...
u1:$1$kiUUra9s$AxchvKz0J9OBJPXO8qNf./:135
45:0:99999:7:::
u2:!:13545:0:99999:7:::
u3:!:13545:0:99999:7:::
u4:!:13545:0:99999:7:::

2. Modification du profile
Exemple de script possible, dans /etc/profile
pour éviter de le recopier pour chaque
utilisateur:
echo "Bienvenue"
echo "entrez U pour travailler dans
votre repertoire"
echo "entrez G pour travailler dans le
repertoire de votre groupe"
read CHX
while [ $CHX != 'U' ] && [ $CHX !=
'G' ]
do
echo "Entrez U ou G ..."
read CHX
done
if [ $CHX == "G" ]
then
case $USER in
"u1") export HOME=/home/group1;;
"u2") export HOME=/home/group1;;
"u3") export HOME=/home/group2;;
"u4") export HOME=/home/group2;;
esac
cd $HOME
fi
3. Choix de la valeur du umask
Les valeurs conseillées sont:
- 066 pour échanger facilement des fichiers avec
l'ensemble des utilisateurs
- 067 pour échanger des fichiers seulement avec
les membres des groupes dont on est membre,
- 077 pour travailler seul.
"Les valeurs 066 et 067 offrent le meilleur
compromis entre la sécurité et la souplesse. Elles
permettent le parcours des répertoires sans en
autoriser l'examen avec la commande "ls" tout en
autorisant l'accès à des répertoires fils dont les
droits seront plus permissifs, utilisés pour
échanger des fichiers…" dans "Unix utilisation
administration système et réseau" par Christian
Pellisier.
Dans notre exemple, on choisit plutôt la valeur
067.

TP n°2
 RET Ecriture de shells
OUR Travailler dans un répertoire nommé "TP2" créé à
la racine de votre HOME.
Exercice 1
Créer un script shell nommé "change" qui
affichera la date de dernière modification d'un
fichier puis la modifiera avec l'heure actuelle et
enfin réaffichera la date de dernière
modification du fichier.
Cette procédure acceptera 1 paramètre qui sera
le nom du fichier.
Lorsque vous exécuterez "change mon_fic", le
8 octobre à 15 heures 12 vous obtiendrez le
résultat:
avant : -r--r--r-- 1 user group 40 Fev
3 2001  mon_fic
après : -r--r--r-- 1 user group 40 Oct
8 15:12 mon_fic
Exercice 2
Créer un script shell nommé "nombreJours" qui
affichera le nombre de jours du mois courant.
"nombreJours" affichera pour février 2007 le
message "28 jours en février 2007".
Exercice 3
Créer un script shell réalisant la création d'un
répertoire "Exo3" contenant 10 fichiers nommés
"Un" à "Dix". Chaque fichier contient une seule
ligne:
 "Un" contient "Première ligne"
 "Deux" contient "Deuxième ligne"
 ...
 "Dix" contient "Dixième ligne"
i. Vérifier que le répertoire à créer n'existe
pas déjà auquel cas il ne sera pas recréé
mais les fichiers si.
Exercice 4
Créer un script shell qui réalise les opérations
suivantes:
 Création sous votre répertoire "TP2" d'un
sous répertoire nommé "annéemoisjour"
(20070202 pour le 2 février 2007).
 Copie des fichiers de "Exo3" sous ce
répertoire puis effacement de ces mêmes
fichiers de "Exo3".
 Création de deux fichiers sous le
répertoire d'accueil (HOME) de la personne
qui a lancé le shell:
o un fichier nommé
"Gros_fichier.numero_du_shell" dans
lequel se trouvera le contenu
concaténé des fichiers traités
o un fichier nommé
"Nom_du_script.numero_du_shell"
dans lequel se trouvera le nom des
fichiers traités.
i. Vérifier que le répertoire à créer n'existe
pas déjà.
Exercice 5
 Créer un script permettant d'afficher la
liste des fichiers du répertoire /etc
accessibles en lecture.
 Créer un script permettant d'afficher la
liste des fichiers du répertoire /etc
accessibles en écriture.
Exercice 6
Créer un script nommé "table" permettant
d'afficher des tables de multiplication.
"table 5 10" aura pour résultat l'affichage:
0 x 5 = 0
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50

Corrections
des exercices
du TP n°2
RETO Exercice 1
UR Créer un script shell nommé
"change" qui affichera la
date de dernière modification
d'un fichier puis la modifiera
avec l'heure actuelle et enfin
réaffichera la date de
dernière modification du
fichier.
Cette procédure acceptera 1
paramètre qui sera le nom du
fichier.
Lorsque vous exécuterez
"change mon_fic", le 8
octobre à 15 heures 12 vous
obtiendrez le résultat:
avant : -r--r--r-- 1
user group 40 Fev 3
2001  mon_fic
après : -r--r--r-- 1
user group 40 Oct 8
15:12 mon_fic
AVANT=$(ls -l $1) touch
$1 APRES=$(ls -l $1)
echo "Avant : "$AVANT
echo
"Apres : "$APRES
change.bash
Exercice 2
Créer un script shell nommé
"nombreJours" qui affichera
le nombre de jours du mois
courant.
"nombreJours" affichera
pour février 2007 le message
"28 jours en
février 2007".
MOIS=$(date +"%m") case
$MOIS in 01)
NOM="janvier";; 02)

NOM="fevrier";; 03)
NOM="mars";; 04)
NOM="avril";; 05)
NOM="mai";; 06)
NOM="juin";;
07)
NOM="juillet";; 08)
NOM="aout";; 09)
NOM="septembre";; 10)
NOM="octobre";; 11)

NOM="novembre";; 12)
NOM="decembre";; esac
ANNEE=$(date +"%Y")
case $MOIS in 01|03|05|
07|08|10|12)
echo
"31 jours en "$NOM"
"$ANNEE;; 04|06|09|11)
echo "30 jours en
"$NOM" "$ANNEE;;
02)
BISSEXTILITE=$(expr
$ANNEE % 4) if
[ $BISSEXTILITE != 0 ]
then echo "28 jours en
"$NOM" "$ANNEE
else
BISSEXTILITE=$(expr
$ANNEE % 100) if
[ $BISSEXTILITE != 0 ]
then echo "29 jours en
"$NOM" "*ANNEE
else
BISSEXTILITE=$(expr
$ANNEE % 400) if
[ $BISSEXTILITE != 0 ]
then echo "28 jours en
"$NOM" "$ANNEE
else
echo "29 jours en
"$NOM" "$ANNEE fi fi
fi;; esac
nombreJours.bash
Exercice 3
Créer un script shell réalisant
la création d'un répertoire
"Exo3" contenant 10 fichiers
nommés "Un" à "Dix". Chaque
fichier contient une seule
ligne:
 "Un" contient "Première
ligne"
 "Deux" contient
"Deuxième ligne"
 ...
 "Dix" contient "Dixième
ligne"
i. Vérifier que le
répertoire à créer
n'existe pas déjà auquel
cas il ne sera pas recréé
mais les fichiers si.
test -e Exo3 if [ $? !=
0 ] then mkdir Exo3 fi
echo "Premiere ligne"

>Exo3/Un echo "Deuxieme


ligne" >Exo3/Deux echo
"Troisieme ligne"
>Exo3/Trois echo
"Quatrieme

ligne" >Exo3/Quatre
echo "Cinquieme ligne"
>Exo3/Cinq echo
"Sixieme ligne"
>Exo3/Six echo

"Septieme ligne"
>Exo3/Sept echo
"Huitieme ligne"
>Exo3/Huit echo
"Neuvieme ligne"
>Exo3/Neuf
echo
"Dixieme ligne"
>Exo3/Dix
script3.bash
Exercice 4
Créer un script shell qui
réalise les opérations
suivantes:
 Création sous votre
répertoire "TP2" d'un
sous répertoire nommé
"annéemoisjour"
(20070202 pour le 2
février 2007).
 Copie des fichiers de
"Exo3" sous ce
répertoire puis
effacement de ces
mêmes fichiers de
"Exo3".
 Création de deux
fichiers sous le
répertoire d'accueil
(HOME) de la personne
qui a lancé le shell:
o un fichier nommé
"Gros_fichier.num
ero_du_shell" dans
lequel se trouvera
le contenu
concaténé des
fichiers traités
o un fichier nommé
"Nom_du_script.nu
mero_du_shell"
dans lequel se
trouvera le nom
des fichiers
traités.
i. Vérifier que le
répertoire à créer
n'existe pas déjà.
REP=$(date +"%Y%m%d")
test -e $REP if [ $? !=
0 ] then mkdir $REP
fi cp
Exo3/* $REP rm Exo3/*
for file in $REP/* do
cat $file >>
~/Gros_fichier.$$ echo
$file >> ~/$0.$$ done
script4.bash
Exercice 5
 Créer un script
permettant d'afficher
la liste des fichiers du
répertoire /etc
accessibles en lecture.
 Créer un script
permettant d'afficher
la liste des fichiers du
répertoire /etc
accessibles en écriture.
for FILE in /etc/* do
if test -r $FILE then
echo $FILE fi done
script5a.bash
for FILE in /etc/* do
if test -w $FILE then
echo $FILE fi done
script5b.bash
Exercice 6
Créer un script nommé
"table" permettant
d'afficher des tables de
multiplication.
"table 5 10" aura pour
résultat l'affichage:
0 x 5 = 0
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
for V in $(seq 0 $2) do
echo $V" x "$1" = "$
(expr $V "*"
$1 )
done
table.bash
RETOUR

Droits d’accès
Pour cet exercice, vous créerez un utilisateur banalisé
 Vous est-il possible de faire une copie du fichier
/etc/passwd? Vous est-il possible de supprimer ou de
modifier le fichier /etc/passwd?
Répeter ces tentatives en tant qu'utilisateur root.
Expliquer la situation à l’aide de la commande ls -l.
 A l’aide de la commande id, vérifier votre identité et
le(s) groupe(s) au(x)quel(s) vous appartenez.
 Créer un petit fichier texte (de contenu quelconque),
qui soit lisible par tout le monde, mais non modifiable
(même pas par vous).
 Créer un répertoire nommé "Secret", dont le contenu
est visible uniquement par vous même.
Les fichiers placés dans ce répertoire sont-ils lisibles
par d’autres membres de votre groupe?
 Créer un répertoire nommé "Connaisseurs" tel que les
autres utilisateurs ne puissent pas lister son contenu
mais puissent lire les fichiers qui y sont placés.
On obtiendra:
ls Connaisseurs
ls : Connaisseurs: Permission denied
cat Connaisseurs/toto
<...le contenu du fichier toto (s’il
existe)...>
 Chercher dans le répertoire /usr/bin des exemples
de commandes ayant la permission SUID.
De quelle genre de commande s’agit-il?
Les utilisateurs
 Votre compte d'utilisateur est-il défini dans le
fichier /etc/passwd? Pourquoi? Il y a-t-il d'autres
alternatives?
 Quel est le répertoire de connexion de l’utilisateur
root?
 Quel est le shell de l’utilisateur root?
 Quelle est la particularité de l’utilisateur nobody? Et
de l’utilisateur shutdown?
 Quels sont les utilisateurs définis dans /etc/passwd
qui font partie du même groupe que l’administrateur?
Redirections, méta-caractères
Le répertoire /usr/include contient les fichiers d’entête
standards en langage C (stdlib.h, ...).
 Créer un répertoire nommé inc dans votre répertoire
de connexion (HOME).
En utilisant une seule commande, y copier les fichiers
du répertoire /usr/include dont le nom commence par
std.
 Afficher la liste des fichiers de /usr/include dont le
nom commence par a, b ou c.
 Modifier la commande de la question précédente pour
qu'au lieu d’afficher le résultat, celui-ci soit placé
dans un fichier nommé "Abc.list" de votre répertoire
de connexion.
 Afficher le contenu de ce fichier en utilisant la
commande cat.
Copier avec cat son contenu dans un nouveau fichier
nommé "Copie".
 Toujours avec cat, créer un nouveau fichier nommé
"Double" formé par la mise bout à bout
(concaténation) des fichiers "Abc.list" et "Copie".
Vérifier que le nombre de lignes a bien doublé à l’aide
de la commande wc.
 Créer un fichier nommé "Temp" contenant une ligne
de texte.
 Avec cat, ajouter la ligne "The end" à la fin du fichier
"Temp”.
 En une seule ligne de commande, faire afficher le
nombre  de fichiers de /usr/include dont le nom
contient la lettre t.
find
 Afficher la liste des fichiers .h situés sous le
répertoire /usr/include.
 Afficher la liste des fichiers plus vieux que 3 jours
situés sous votre répertoire de connexion.
head, tail, tubes
 Afficher les 5 premières, puis les 5 dernières lignes
du fichier /etc/passwd.
 Afficher la 7ième ligne de ce fichier (et elle seule),
en une seule ligne de commande.
tr, more, tubes
 Afficher le fichier /etc/passwd en remplaçant les
caractères / par des X.
 Obtenir le résultat précédent page par page.
Contrôles d'accès
Un administrateur désire s’assurer chaque matin que tous
les fichiers placés sous $REPERTOIRE sont lisibles   par
tout le monde, mais non modifiables excepté par leur
propriétaire.
 Quel doit être le mode de ces fichiers et
répertoires?
 Écrire un script permettant d’afficher la liste des
fichiers d'un répertoire et le type de chacun
(utilisation de file et sort ) trié par type.
Flux d’E/S standards
Étudier la documentation de la commande tee.
 Écrire une commande qui affiche "Bonjour" à l’écran
et en même temps crée un fichier nommé
"Salutation.txt" dont le contenu est le même message.
 Ecrire un script qui lit une ligne de caractères sur son
entrée standard et l’écrit sur sa sortie, en passant
tous les caractères en majuscules.
 Modifiez votre script pour qu’il affiche le nombre de
caractères traités sur sa sortie d’erreur.
 Créer un fichier texte quelconque. Écrire une seule
commande shell qui recopie le contenu passé en
majuscule de ce fichier dans un nouveau fichier
nommé "Titre.txt" et affiche à l’écran le nombre de
caractères traités.
grep, cut, uniq, sort et tubes
Étudier la documentation des commandes cut et uniq.
 Afficher la liste des répertoires de connexion des
utilisateurs déclarés dans le fichier /etc/passwd.
 On rappelle qu’à chaque utilisateur est associé un
interpréteur de commandes (shell) lancé lors de son
login. La commande correspondante est indiquée dans
le 7ième champ du fichier /etc/passwd.
Afficher en une ligne de commande
le nombre  d’interpréteurs de commandes
différents  mentionnés dans /etc/passwd.
 On dispose d'un fichier
texte telephone.txt contenant un petit carnet
d’adresses.
Chaque ligne est de la forme "nom prenom
numerotelephone". Les champs sont séparés par des
tabulations.
Répondre aux questions suivantes en utilisant à
chaque fois une ligne de commande shell:
o Afficher le carnet d’adresse trié par ordre
alphabétique de noms.
o Afficher le nombre de personnes dans le
répertoire.
o Afficher toutes les lignes concernant les
“Dupond”.
o Afficher toutes les lignes ne concernant pas  les
“Dupond”.
o Afficher le numéro de téléphone (sans le nom)
du premier “Dupond” apparaissant dans le
répertoire.
o Afficher le numéro de téléphone (sans le nom)
du premier “Dupond” dans l’ordre alphabétique
(ordre basé sur les prénoms).

Corrections des
exercices du TP n°3
 RET Droits d’accès
OUR  Essayer de supprimer ou de modifier le
fichier /etc/passwd. Que se passe-t-il?
Expliquer la situation à l’aide de la
commande ls -l.
Il est impossible de supprimer le fichier
/etc/passwd. Seul le propriétaire (root) du
fichier peut le supprimer.
ls -l /etc/passwd
-rw-r--r-- 1 root root 1705 2004-12-09 09:55
/etc/passwd
 A l’aide de la commande id, vérifier votre
identité et le(s) groupe(s) au(x)quel(s) vous
appartenez.
id
uid=1000(toto) gid=1000(toto)
groupes=1000(toto)
 Créer un petit fichier texte nommé
"Lecture" (de contenu quelconque), qui soit
lisible par tout le monde, mais non
modifiable (même pas par vous).
touch Lecture
chmod 444 Lecture
-r--r--r-- 1 toto toto 3 2004-12-09 09:55
Lecture
 Créer un répertoire nommé "Secret", dont
le contenu est visible uniquement par vous
même.
Les fichiers placés dans ce répertoire sont-
ils lisibles par d’autres membres de votre
groupe?
mkdir Secret
chmod 700 Secret
drwx------ 2 toto toto 4096 2004-12-09 09:55
Secret
 Créer un répertoire nommé "Connaisseurs"
tel que les autres utilisateurs ne puissent
pas lister son contenu mais puissent lire les
fichiers qui y sont placés.
On obtiendra:
ls Connaisseurs
ls : Connaisseurs: Permission denied
cat Connaisseurs/toto
<...le contenu du fichier toto (s’il
existe)...>
mkdir Connaisseurs
chmod 711 Connaisseurs
 Chercher dans le répertoire /usr/bin trois
exemples de commandes ayant la permission
SUID.
De quelle genre de commande s’agit-il?
/usr/bin/passwd pour modifier son mot de passe
/usr/bin/gpasswd pour administrer le fichier
/etc/group
/usr/bin/readcd pour lire et écrire des cd
Ces commandes "travaillent" en tant que root
mais peuvent être endossées par d'autres
utilisateurs
Les utilisateurs
 Votre compte d'utilisateur est-il défini
dans le fichier /etc/passwd? Pourquoi?
Non, car les comptes sont définis globalement au
sein d'un "domaine" NIS.
 Quel est le répertoire de connexion de
l’utilisateur root?
Le répertoire de connexion de root est /root.
 Quel est le shell de l’utilisateur root?
Le shell est /bin/bash.
 Quelle est la particularité de l’utilisateur
nobody?
Et de l’utilisateur shutdown?
L'utilisateur Nobody n'a pas de home valide, son
home devient /.
 Quels sont les utilisateurs définis dans
/etc/passwd qui font partie du même
groupe que l’administrateur?
sync, postfix, sshd, partimag et distccd.
Redirections, méta-caractères
Le répertoire /usr/include contient les fichiers
d’entête standards en langage C (stdlib.h, ...).
 Créer un répertoire nommé inc dans votre
répertoire de connexion (HOME).
En utilisant une seule commande, y copier
les fichiers du répertoire /usr/include dont
le nom commence par std.
mkdir inc
cp /usr/include/std* $HOME/inc
 Afficher la liste des fichiers de
/usr/include dont le nom commence par a, b
ou c.
find /usr/include/ \( -name 'a*' -o -name
'b*' -o -name 'c*' \)
ou
find /usr/include/ -name [abc]*
 Modifier la commande de la question
précédente pour qu'au lieu d’afficher le
résultat, celui-ci soit placé dans un fichier
nommé "Abc.list" de votre répertoire de
connexion.
find /usr/include/ \( -name 'a*' -o -name
'b*' -o -name 'c*' \) >$HOME/Abc.list
 Afficher le contenu de ce fichier en
utilisant la commande cat.
Copier avec cat son contenu dans un
nouveau fichier nommé "Copie".
cat Abc.list > copie
wc Abc.list
450 450 14861 Abc.list
 Toujours avec cat, créer un nouveau fichier
nommé "Double" formé par la mise bout à
bout (concaténation) des fichiers "Abc.list"
et "Copie".
Vérifier que le nombre de lignes a bien
doublé à l’aide de la commande wc.
cat Abc.list copie >double
wc double
900 900 29722 double
 Créer un fichier nommé "Temp" contenant
une ligne de texte.
touch Temp
 Avec cat, ajouter une ligne “The end” à la
fin du fichier “temp”.
cat >> temp
The end
CTRL-d
 En une seule ligne, faire afficher le
nombre  de fichiers de /usr/include dont le
nom contient la lettre t.
ls /usr/include/[t]* | wc
14 14 306
find
 Afficher la liste des fichiers h situés sous
le répertoire /usr/include.
find /etc -name "*.conf"
 Afficher la liste des fichiers plus vieux que
3 jours situés sous votre répertoire de
connexion.
find $HOME -ctime +3
head, tail, tubes
 Afficher les 5 premières, puis les 5
dernières lignes du fichier /etc/passwd.
head -5 /etc/passwd
tail -5 /etc/passwd
 Afficher la 7ième ligne de ce fichier (et
elle seule), en une seule ligne de commande.
head -n7 passwd | tail -n1
tr, more, tubes
 Afficher le fichier /etc/passwd en
remplaçant les caractères / par des X.
cat /etc/passwd | tr / X
 Obtenir le résultat précédent page par
page.
cat /etc/passwd | tr / X | more
Contrôles d'accès
Un administrateur désire s’assurer chaque matin
que tous les fichiers placés sous $REPERTOIRE
sont lisibles  par tout le monde, mais non
modifiables excepté par leur propriétaire.
 Quel doit être le mode de ces fichiers et
répertoires?
fichiers: rwxr-xr-x
répertoires: rwxr-xr-x
 Écrire un script permettant d’afficher la
liste des fichiers d'un répertoire et le type
de chacun (utilisation de file et sort ) trié
par type.
#! /bin/bash
for i in `ls`
do
file $i >>text
done
more text| sort -t: +1
rm text
Flux d’E/S standards
 Écrire une commande qui
affiche "Bonjour" à l’écran et en même
temps crée un fichier nommé
"Salutation.txt" dont le contenu est le
même message.
echo "Bonjour" |tee salutation.txt
 Ecrire un script qui lise une ligne de
caractères sur son entrée standard et
l’écrive sur sa sortie, en passant tous les
caractères en majuscules.
#! /bin/bash
read a
echo $a|tr "[a-z]" "[A-Z]"
 Modifiez votre script pour qu’il affiche le
nombre de caractères traités sur sa sortie
d’erreur.
read a
echo $a|tr "[a-z]" "[A-Z]"|tee text1
 Créer un fichier texte quelconque. Écrire
une seule commande shell qui recopie le
contenu passé en majuscule de ce fichier
dans un nouveau fichier nommé "Titre.txt"
et affiche à l’écran le nombre de
caractères traités.
cat salutation.txt|tr "[a-z]" "[A-Z]"|tee
text1|wc -c
grep, cut, uniq, sort et tubes
Étudier la documentation des commandes cut et
uniq.
 Afficher la liste des répertoires de
connexion des utilisateurs déclarés dans le
fichier /etc/passwd.
cut -d: -f 6 passwd
 On rappelle qu’à chaque utilisateur est
associé un interpréteur de commandes
(shell) lancé lors de son login. La commande
correspondante est indiquée dans le 7ième
champ du fichier /etc/passwd.
Afficher en une ligne de commande
le nombre  d’interpréteurs de commandes
différents  mentionnés dans /etc/passwd.
cut -d: -f 7 passwd|sort|uniq|wc -l
 On dispose d'un fichier
texte telephone.txt contenant un petit
carnet d’adresses.
Chaque ligne est de la forme "nom prenom
numerotelephone" les champs étant séparés
par des tabulations.
Répondre aux questions suivantes en
utilisant à chaque fois une ligne de
commande shell:
o Afficher le carnet d’adresse trié par
ordre alphabétique de noms.
sort telephone.txt
o Afficher le nombre de personnes dans
le répertoire.
wc -l telephone.txt
o Afficher toutes les lignes concernant
les “Dupond”.
grep Dupond telephone.txt
o Afficher toutes les lignes ne
concernant pas  les “Dupond”.
cat telephone.txt | grep -v
"Dupond"
o Afficher le numéro de téléphone (sans
le nom) du premier “Dupond”
apparaissant dans le répertoire.
grep Dupond telephone.txt|uniq -f
1|cut -d\; -f 3
o Afficher le numéro de téléphone (sans
le nom) du premier “Dupond” dans
l’ordre alphabétique (ordre basé sur
les prénoms).
sort telephone.txt|grep Dupond |uniq -f 1|
cut -d\; -f 3
TP n°4
 R cron
ETOUR Mettre en place un script qui, toutes les 5 minutes,
ajoute la date, l'heure et la liste des processus en
cours de fonctionnement dans un fichier nommé
"Processus.txt".
tar
Télécharger le fichier Fichiers.tar.
Il s'agit d'une archive au format tar non compressé
contenant les hardcopies de fenêtres Ubuntu-KDE.
Cette archive n'inclut pas de répertoire de
décompression.
 "détarer" cette archive dans un sous
répertoire nommé "Fichiers" de votre
HOME.
 "tarer" le répertoire "Fichiers" en une
archive nommée "MonArchive.tar".
 "tarer" le répertoire "Fichiers" en une
archive compressée nommée
"MonArchiveCompressee.tar.gz".
 Quel est le rapport de tailles entre ces
deux archives?
 Calculer ce rapport de tailles pour une
archive de fichiers texte.
Installation de logiciels
Mesa3D
Télécharger les trois fichiers suivants:
 http://raphaello.univ-
fcomte.fr/ftp/MesaOpenGL/MesaLib-
6.4.2.tar.gz
 http://raphaello.univ-
fcomte.fr/ftp/MesaOpenGL/MesaGLUt-
6.4.2.tar.gz
 http://raphaello.univ-
fcomte.fr/ftp/MesaOpenGL/MesaDemo
s-6.4.2.tar.gz
"Dégziper" ces trois fichiers.
"Détarer" les trois fichiers obtenus après
"dégzipage".
Un seul répertoire nommé Mesa-6.4.2 devrait avoir
été restoré.
Il contient la distribution Mesa3D (compatible
OpenGL) en version 6.4.2 sous la forme d'un
ensemble de fichiers source C et des fichiers de
gestionnaire de projet (workspace Visual C++,
makefile pour gcc, ...) permettant de compiler ces
sources sous la forme de binaires:
 MesaLib : La librairie Mesa3D
 MesaGLUt : Une bibliothèque de
construction d'interface graphique pour
programme OpenGL
 MesaDemos : Des exemples d'utilisation
d'OpenGL et GLUt.
 Réaliser la compilation de Mesa-6.4.2.
 Tester l'installation de Mesa-6.4.2
réalisable après compilation.
 Vérifier la bonne exécution de
programmes exemples compilés.
 On donne le fichier source Anim.cpp.
Télécharger, compiler et exécuter ce
source en langage C.
JDK 1.6
Télécharger le fichier suivant:
 http://raphaello.univ-
fcomte.fr/ftp/Java/Jdk/jdk-6-linux-
i586.bin
Il s'agit du fichier d'installation du kit de
développement Java version 6.
 Réaliser l'installation de ce jdk.
 Tester la version de compilateur
installée.
 Tester la version de "runtime" installée.
 Compiler et exécuter le programme
java Fibonacci.java
Informations système
Décrire l'environnement dans lequel vous évoluez:
 nom de la machine
 détail des disques
 programmes en fonctionnement
o les votres
o ceux des autres utilisateurs
 configuration réseau
 place utilisée dans mon répertoire
 processus les plus gourmands en
fonctionnement
mount
On considère un partage Windows nommé toto sur
le serveur fileserver.info.univ-fcomte.fr accessible
à l'utilisateur toto du domaine w2k3. Le mot de
passe associé à ce compte est "pw01toto10".
On souhaite monter ce partage en lecture/écriture
depuis une machine fonctionnant sous linux équipé
d'un client samba, pour l'utilisateur linux titi du
groupe linux titi de cette machine. Le point de
montage est /mnt/titi.
 Quelle est la commande permettant de
réaliser une telle opération?
 Exécutée par titi, cette commande est-elle
susceptible de fonctionner sur votre poste?
Réseau
 Déterminer d'après le masque quel est le
réseau utilisé en utilisant la notation binaire
pour les trois adresses suivantes.
o adresse 125.24.6.2, masque par défaut
o adresse 130.14.28.2, masque par défaut
o adresse 125.24.6.2 cette fois avec le
masque 255.255.254.0
 Considérons les deux adresses IP : 138.12.3.8
et 138.12.7.25
1. Sans autre indication ces deux machines
sont-elles sur le même réseau?
2. Le masque précisé est 255.255.255.0 :
ces deux machines sont-elles sur le
même réseau?
 A quelle condition ces deux machines
communiquent elles dans le cas 1 et dans
le cas 2?
 Quelle règle simple peut-on déduire pour
connaître le réseau sans passer par la
notation binaire pour un masque par
défaut?
 Vous devez définir les masques pour une
administration réseau qui est structurée de la
façon suivante:
Des serveurs sur lesquels se trouvent des bases de
données ainsi que des postes banalisés sont
répartis à Paris, Lyon, Marseille et Toulouse
(environ 150 serveurs et postes locaux dans chaque
ville).
Dans chaque préfecture de département
métropolitain est présente une antenne locale.
Chaque antenne est composée d'un parc entre 12 et
25 postes (un peu moins de 100 départements).
La communication entre les villes principales et les
antennes départementales est assurée par des
réseaux comportant chacun 2 routeurs.
Vous disposez des adresses réseau 170.109.0.0 à
170.109.255.255
 Déterminer les masques de sous réseau
mis en oeuvre .
 Pour chaque masque, détailler un réseau
en mettant en évidence:
o son numéro de réseau
o l'adresse du premier host
o l'adresse du dernier host
o l'adresse de broadcast
 Au hasard d'une connexion sur l'internet, la
commande "tracert
www.lesitequejeconsulte.com" est exécutée
avec pour résultat cette trace:
1 121 ms 118 ms 108 ms nsbes108.francetelecom.net
[193.251.96.170]
2 110 ms 104 ms 110 ms E5-0-
0.ncbes102.Besancon.francetelecom.net [193.251.115.34]
3 113 ms 113 ms 113 ms P3-
2.nrncy102.Nancy.francetelecom.net [193.252.100.158]
4 118 ms 119 ms 119 ms P1-
0.ntsta202.Paris.francetelecom.net [193.251.126.62]
5 117 ms 110 ms 109 ms P6-
0.ntaub201.Aubervilliers.francetelecom.net
[193.251.126.85]
6 124 ms 118 ms 120 ms P9-
0.nrpoi101.Poitiers.francetelecom.net [193.251.126.169]
7 128 ms 130 ms 128 ms P0-
0.nctou301.Toulouse.francetelecom.net [193.252.100.85]
8 129 ms 129 ms 128 ms POS-1-
0.TLSG1.Toulouse.raei.francetelecom.net [194.51.162.94]
9 134 ms 129 ms 130 ms ATM-11-0-0-
511.TLS5.Toulouse.raei.francetelecom.net [194.51.162.98]

La configuration réseau est la suivante :


 Adresse IP : 193.249.241.61
 Masque de sous-réseau : 255.255.255.0
 Passerelle par défaut : 193.249.241.61
 Comment aboutit-on à la machine de la
ligne 1?
 Quelles autres informations de routage
peuvent être déduites de la trace?
 Quel est le temps moyen
d'acheminement d'un paquet vers le site
www.lesitequejeconsulte.com?
 Ecrire un shell script nommé "Nbr" qui à
partir de l'adresse d'un site compte le
nombre de routeurs traversés pour
atteindre ce site.

Corrections
des exercices
du TP n°4
  cron
RETO Mettre en place un script qui,
UR toutes les 5 minutes, ajoute la
date, l'heure et la liste des
processus en cours de
fonctionnement dans un fichier
nommé "Processus.txt".
On écrit un script nommé par
exemple "Trace.sh" avec la
permission d'exécution placé sous
le répertoire /home/nico et
contenant les deux commandes
date et ps avec leurs sorties
renvoyées en fin du fichier
/home/nico/Processus.txt:
date
>>/home/nico/Processus.txt
ps
>>/home/nico/Processus.txt
On écrit un fichier texte nommé
par exemple "ProgCron.txt"
contenant le descriptif de la
commande programmée:
0,5,10,15,20,25,30,35,40,45
,50,55 * * * *
/home/nico/Trace.sh
On programme ce fichier texte au
moyen de la commande crontab:
crontab ProgCron.txt
tar
Télécharger le
fichier Fichiers.tar.
Il s'agit d'une archive au format
tar non compressé contenant les
hardcopies de fenêtres Ubuntu-
KDE. Cette archive n'inclut pas de
répertoire de décompression.
 "détarer" cette
archive dans un sous
répertoire nommé
"Fichiers" de votre
HOME.
mkdir Fichiers
tar -xvf
Fichiers.tar -C
Fichiers
 "tarer" le répertoire
"Fichiers" en une
archive nommée
"MonArchive.tar".
tar -cvf
MonArchive.tar
Fichiers
 "tarer" le répertoire
"Fichiers" en une
archive compressée
nommée
"MonArchiveCompress
ee.tar.gz".
tar -zcvf
MonArchiveCompress
ee.tar.gz Fichiers
 Quel est le rapport de
tailles entre ces deux
archives?
L'archive non
compressée occupe
1003520 octets.
L'archive compressée
occupe 908384 octets.
Le gain est donc de
9,48%.
 Calculer ce rapport de
tailles pour une archive
de fichiers texte.
Sur un exemple test on
obtient une taille non
compressée de
2580480 octets pour
une taille compressée
de 519117 octets. Le
gain est donc de
79,88%.
Installation de logiciels
Mesa3D
Télécharger les trois fichiers
suivants:
 http://raphaello.univ-
fcomte.fr/ftp/MesaOp
enGL/MesaLib-
6.4.2.tar.gz
 http://raphaello.univ-
fcomte.fr/ftp/MesaOp
enGL/MesaGLUt-
6.4.2.tar.gz
 http://raphaello.univ-
fcomte.fr/ftp/MesaOp
enGL/MesaDemos-
6.4.2.tar.gz
"Dégziper" ces trois fichiers.
gunzip MesaLib-6.4.2.tar.gz
gunzip MesaGLUt-
6.4.2.tar.gz
gunzip MesaDemos-
6.4.2.tar.gz
"Détarer" les trois fichiers
obtenus après "dégzipage".
tar -xvf MesaLib-6.4.2.tar
tar -xvf MesaGLUt-6.4.2.tar
tar -xvf MesaDemos-
6.4.2.tar
Un seul répertoire nommé Mesa-
6.4.2 devrait avoir été restoré.
Il contient la distribution Mesa3D
(compatible OpenGL) en version
6.4.2 sous la forme d'un ensemble
de fichiers source C et des
fichiers de gestionnaire de projet
(workspace Visual C++, makefile
pour gcc, ...) permettant de
compiler ces sources sous la
forme de binaires:
 MesaLib : La librairie
Mesa3D
 MesaGLUt : Une
bibliothèque de
construction
d'interface graphique
pour programme
OpenGL
 MesaDemos : Des
exemples d'utilisation
d'OpenGL et GLUt.
 Réaliser la compilation
de Mesa-6.4.2.
Depuis le répertoire Mesa-6.4.2
make linux-x86
make install
La deuxième commande ne
fonctionnera peut-être pas
correctement car elle peut
nécessiter de posséder les
privilèges "root".
 Tester l'installation de
Mesa-6.4.2 réalisable
après compilation
cf make install ci-dessus.
 Vérifier la bonne
exécution des
programmes exemples
compilés.
Ils se trouvent dans
les sous-répertoires de
Mesa-6.4.2/Progs.
 On donne le fichier
source Anim.cpp.
Télécharger, compiler
et exécuter ce source
en langage C.
gcc -I/home/nico/Mesa-
6.4.2/include -c Anim.cpp -o
Anim.o gcc -L/home/nico/Mesa-
6.4.2/lib
-lm -lGL -lglut
Anim.o -o Anim Anim
JDK 1.6
Télécharger le fichier suivant:
 http://raphaello.univ-
fcomte.fr/ftp/Java/J
dk/jdk-6-linux-
i586.bin
Il s'agit du fichier d'installation
du kit de développement Java
version 6.
 Réaliser l'installation
de ce jdk.
Le fichier télécharger est un
script shell d'installation.
Le rendre exécutable s'il ne l'est
pas a l'arrivée. Le lancer par son
nom.
 Tester la version de
compilateur installée.
Dans le sous-répertoire bin du
répertoire d'installation.
javac -version
 Tester la version de
"runtime" installée.
Dans le sous-répertoire bin du
répertoire d'installation.
java -version
 Compiler et exécuter
le programme
java Fibonacci.java.
javac Fibonacci.java
java Fibonacci
Informations système
Décrire l'environnement dans
lequel vous évoluez:
 nom de la machine
hostname
 détail des disques
df
 programmes en
fonctionnement
o les votres
ps
o ceux des autres
utilisateurs
ps -A
 configuration réseau
ifconfig (ipconfig)
 place utilisée dans mon
répertoire
du -b -c $HOME
 processus les plus
gourmands en
fonctionnement
top
mount
On considère un partage Windows
nommé toto sur le serveur
fileserver.info.univ-fcomte.fr
accessible à l'utilisateur toto du
domaine w2k3. Le mot de passe
associé à ce compte est
"pw01toto10".
On souhaite monter ce partage en
lecture/écriture depuis une
machine fonctionnant sous linux
équipé d'un client samba, pour
l'utilisateur linux titi du groupe
linux titi de cette machine. Le
point de montage est /mnt/titi.
 Quelle est la commande
permettant de réaliser une
telle opération?
mount -t smbfs -o
rw,uid=titi,gid=titi,username=w
2k3/toto,password=pw01toto10 //
fileserver.info.univ-
fcomte.fr/toto /mnt/titi
 Exécutée par titi, cette
commande est-elle
susceptible de fonctionner
sur votre poste?
non, car la commande mount n'est,
par défaut, autorisée qu'à
l'utilisateur root.
Réseau
 Déterminer d'après le
masque quel est le réseau
utilisé en utilisant la
notation binaire pour les
trois adresses suivantes.
o adresse 125.24.6.2,
masque par défaut
classe A 125.0.0.0 à
125.255.255.255 pour
le netmask 255.0.0.0
o adresse 130.14.28.2,
masque par défaut
classe B 130.14.0.0 à
130.14.255.255 pour le
netmask 255.255.0.0
o adresse 125.24.6.2
cette fois avec le
masque 255.255.254.0
125.24.6.0 à
125.24.7.255 pour le
netmask 255.0.0.0
 Considérons les deux
adresses IP : 138.12.3.8 et
138.12.7.25
1. Sans autre indication
ces deux machines
sont-elles sur le même
réseau?
Oui
2. Le masque précisé est
255.255.255.0 : ces
deux machines sont-
elles sur le même
réseau?
Non
 A quelle condition ces
deux machines
communiquent elles
dans le cas 1 et dans le
cas 2?
Cas 1, si elles sont
relièes par un routeur
correctement
configuré.
Cas 2, si elles sont
relièes par un
concentrateur ou un
commutateur.
 Quelle règle simple
peut-on déduire pour
connaître le réseau
sans passer par la
notation binaire pour
un masque par défaut?
Pour le masque
255.0.0.0 : Même
premier nombre (à
gauche) dans l'adresse
IP.
Pour le masque
255.255.0.0 : Mêmes
deux premiers nombres
(à gauche) dans
l'adresse IP.
Pour le masque
255.255.255.0 :
Mêmes trois premiers
nombres (à gauche)
dans l'adresse IP.
 Vous devez définir les
masques pour une
administration réseau qui
est structurée de la façon
suivante:
Des serveurs sur lesquels se
trouvent des bases de données
ainsi que des postes banalisés sont
répartis à Paris, Lyon, Marseille et
Toulouse (environ 150 serveurs et
postes locaux dans chaque ville).
Dans chaque préfecture de
département métropolitain est
présente une antenne locale.
Chaque antenne est composée
d'un parc entre 12 et 25 postes
(un peu moins de 100
départements).
La communication entre les villes
principales et les antennes
départementales est assurée par
des réseaux comportant chacun 2
routeurs.
Vous disposez des adresses
réseau 170.109.0.0 à
170.109.255.255
 Déterminer les
masques de sous
réseau mis en oeuvre .
 Pour chaque masque,
détailler un réseau en
mettant en évidence:
o son numéro de
réseau
o l'adresse du
premier host
o l'adresse du
dernier host
o l'adresse de
broadcast
 Au hasard d'une connexion
sur l'internet, la commande
"tracert
www.lesitequejeconsulte.com
" est exécutée avec pour
résultat cette trace:
1 121 ms 118 ms 108 ms
nsbes108.francetelecom.net
[193.251.96.170]
2 110 ms 104 ms 110 ms E5-0-
0.ncbes102.Besancon.francetelecom.net
[193.251.115.34]
3 113 ms 113 ms 113 ms P3-
2.nrncy102.Nancy.francetelecom.net
[193.252.100.158]
4 118 ms 119 ms 119 ms P1-
0.ntsta202.Paris.francetelecom.net
[193.251.126.62]
5 117 ms 110 ms 109 ms P6-
0.ntaub201.Aubervilliers.franceteleco
m.net [193.251.126.85]
6 124 ms 118 ms 120 ms P9-
0.nrpoi101.Poitiers.francetelecom.net
[193.251.126.169]
7 128 ms 130 ms 128 ms P0-
0.nctou301.Toulouse.francetelecom.net
[193.252.100.85]
8 129 ms 129 ms 128 ms POS-1-
0.TLSG1.Toulouse.raei.francetelecom.n
et [194.51.162.94]
9 134 ms 129 ms 130 ms ATM-11-0-0-
511.TLS5.Toulouse.raei.francetelecom.
net [194.51.162.98]

La configuration réseau est la


suivante :
 Adresse IP :
193.249.241.61
 Masque de sous-réseau
: 255.255.255.0
 Passerelle par défaut :
193.249.241.61
 Comment aboutit-on à
la machine de la ligne
1?
 Quelles autres
informations de
routage peuvent être
déduites de la trace?
 Quel est le temps
moyen d'acheminement
d'un paquet vers le site
www.lesitequejeconsult
e.com?
 Ecrire un shell script
nommé "Nbr" qui à
partir de l'adresse
d'un site compte le
nombre de routeurs
traversés pour
atteindre ce site.
RETOUR

Vous aimerez peut-être aussi