Vous êtes sur la page 1sur 43

TP n°1

Infos système

 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.

Corrections des exercices du TP n°1

Infos système

Quel est le système uname -a


installé? Linux hector 2.6.15-27-386 #1 PREEMPT Fri Dec 8
17:51:56 UTC 2006 i686 GNU/Linux
Quelle est la cat /etc/issue
distribution Ubuntu 6.06.1 LTS \n \l
installée?
Quels sont les who
utilisateurs en nico :0 2007-01-14 16:25
cours du système?
Ouvrir un nouveau su user
terminal en
utilisant un autre
compte.
Fermer ce exit
terminal.
La commande man

Tester la man man


commande man man is the systems manual pager. Each page
pour obtenir de argument given to man is normally the name of a
l'aide sur man. program, utility or function.
Quelles sont les
commandes
susceptibles d'être
documentées dans
man?

Contenu de répertoires et de fichiers ascii (texte)

Lister le contenu du ls /etc


répertoire /etc.
Lister de manière ls -l /etc
détaillée le contenu du ls -la /etc
répertoire /etc. Tous ces fichiers sont bien présents.
Les fichiers nommés
"passwd", "shadow",
"group" et "gpasswd"
sont-ils présents dans
/etc?
Lister le contenu du ls /dev
répertoire /dev.
Lister le contenu du cat /etc/passwd
fichier /etc/passwd. root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
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/nico:/bin/bash
Lister le contenu du cat /etc/shadow
fichier /etc/shadow. Lecture refusée.
Afficher par ordre cat /etc/passwd | sort
alphabétique les backup:x:34:34:backup:/var/backups:/bin/sh
utilisateurs définis dans bin:x:2:2:bin:/bin:/bin/sh
le fichier /etc/passwd. cupsys:x:100:106::/home/cupsys:/bin/false
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
dhcp:x:101:101::/nonexistent:/bin/false
games:x:5:60:games:/usr/games:/bin/sh
...
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
syslog:x:102:102::/home/syslog:/bin/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 les grep root /etc/*
fichiers du répertoire ...
/etc contenant la chaine
de caractères "root".
Rechercher la find / -name stdio.h
localisation du fichier ...
"stdio.h" dans le find: /tmp/kde-root: Permission non accordée
système de fichier de /usr/include/bits/stdio.h
votre installation. /usr/include/stdio.h
A l'aide de la commande od -x monfichier.dos
"od", illustrer la 0000000 6e75 0a0d 6564 7875 0a0d 7274 696f
différence majeure 0d73
existant entre les types 0000020 710a 6175 7274 0d65 630a 6e69 0d71
de fichier ascii (texte) 730a
DOS, UNIX et Macintosh. 0000040 7869 0a0d 6573 7470 0a0d 0a0d 0a0d
Utiliser le fichier ascii 0a0d
Dos montexte.dos fourni 0000060 0a0d 0a0d
en lien et créer les 0000064
fichiers ascii Unix od -c monfichier.dos
"montexte.unix" et ascii 0000000 u n \r \n d e u x \r \n t r o i s \r
Macintosh 0000020 \n q u a t r e \r \n c i n q \r \n s
"montexte.mac" avec le 0000040 i x \r \n s e p t \r \n \r \n \r \n \r \n
même contenu au 0000060 \r \n \r \n
moyen d'un éditeur 0000064
texte (Kate par od -x monfichier.unix
exemple) puis comparer 0000000 6e75 640a 7565 0a78 7274 696f 0a73
(version Macintosh si 7571
l'éditeur le permet). 0000020 7461 6572 630a 6e69 0a71 6973 0a78
Quelle est la différence? 6573
0000040 7470 0a0a 0a0a 0a0a
0000050
od -c monfichier.unix
0000000 u n \n d e u x \n t r o i s \n q u
0000020 a t r e \n c i n q \n s i x \n s e
0000040 p t \n \n \n \n \n \n
0000050
od -x monfichier.mac
0000000 6e75 640d 7565 0d78 7274 696f 0d73
7571
0000020 7461 6572 630d 6e69 0d71 6973 0d78
6573
0000040 7470 0d0d 0d0d 0d0d
0000050
od -c monfichier.unix
0000000 u n \r d e u x \r t r o i s \r q u
0000020 a t r e \r c i n q \r s i x \r s e
0000040 p t \r \r \r \r \r \r
0000050
Codage des fins de ligne sous Dos par les deux
caracteres 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 commandes cmp monfichier.unix monfichier.dos
de comparaison de monfichier.unix monfichier.dos
fichiers de Linux pour sont différents: octet 3, ligne 1
tester le contenu d'un
même fichier texte en diff monfichier.unix monfichier.dos
version Unix et Dos. 1,12c1,12
< un
< deux
< trois
< quatre
< cinq
< six
< 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 lignes, de wc monfichier.unix
mots et de caractères 12 7 40 monfichier.unix
comportent les fichiers wc monfichier.dos
"montexte.unix", 12 7 52 monfichier.dos
"montexte.dos" et wc monfichier.mac
"montexte.mac"? 0 7 40 monfichier.mac

Commandes

Se localiser dans la pwd


hiérarchie.
Détecter la ls -la
présence de total 8
fichiers/répertoires. drwxr-xr-x 2 nico nico 4096 2007-02-01 11:25 .
drwxr-xr-x 22 nico nico 4096 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 de cat Mon_fichier
Mon_fichier. aaaaaaaaaaaaaaaaaa
Lister son propre ls
répertoire. Mon_fichier
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 catalogues ls /bin
/bin et /dev. ls /dev
Créer sous votre mkdir Source Data
répertoire 2 sous-
répertoires:
"Source" et "Data".
Se positionner sous cd source
"Source".
Lister le répertoire. ls -la
total 8
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 ..
répertoire de rmdir Source
départ et détruire
"Source".
Créer un deuxième touch Mon_fichier_2
fichier ls -la
Mon_fichier_2. total 16
drwxr-xr-x 3 nico nico 4096 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 Mon_fichier_2.old
.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 répertoire mkdir old
"Old".
Déplacer les fichiers mv *.old Old
avec l’extension .old ls -la Old
dans le répertoire total 12
"Old". drwxr-xr-x 2 nico nico 4096 2007-02-01 11:39 .
drwxr-xr-x 4 nico nico 4096 2007-02-01 11:39 ..
-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 fichiers cp * Data
sans extension dans cp: omission du répertoire `Data'
le répertoire "Data". cp: omission du répertoire `Old'
ls -la Data
total 12
drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 .
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 répertoire ln Mon_fichier_2 Mon_lien
de départ, créer un ls -la
lien matériel total 20
"Mon_lien" drwxr-xr-x 4 nico nico 4096 2007-02-01 11:54 .
équivalent à drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 ..
"Mon_fichier_2". 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-- 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
fichiers "Mon_lien" total 20
et "Mon_fichier_2" 16457 drwxr-xr-x 4 nico nico 4096 2007-02-01
en affichant leur 11:54 .
numéro d’inode. 868403 drwxr-xr-x 22 nico nico 4096 2007-02-01
Que remarquez 11:43 ..
vous? 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-- 2 nico nico 0 2007-02-01 11:31
Mon_fichier_2
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
"Mon_lien". ls -lai
"Mon_fichier_2" a-t- total 20
il disparu? 16457 drwxr-xr-x 4 nico nico 4096 2007-02-01
11:56 .
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_lien"
sur "Mon_fichier_2".
Lister les deux ls -la
fichiers total 20
"Mon_nouveau_lien" drwxr-xr-x 4 nico nico 4096 2007-02-01 11:57 .
et "Mon_fichier_2". drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 ..
Que remarquez drwxr-xr-x 2 nico nico 4096 2007-02-01 11:41 Data
vous? -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
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
"Mon_fichier_2". ls -la
"Mon_nouveau_lien" total 20
a-t-il disparu? drwxr-xr-x 4 nico nico 4096 2007-02-01 11:59 .
drwxr-xr-x 22 nico nico 4096 2007-02-01 11:43 ..
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 taille du -b
totale des fichiers 4115 ./Old
contenus dans votre 4115 ./Data
répertoire? 12358 .
La taille est approximative en raison de l'utilisation de
blocs de 512 octets.
Effacer tous les rm -r *
fichiers créés. ls -la
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./:13545: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
TP n°2

Pellisier.
Dans notre exemple, on choisit plutôt la valeur 067.
Ecriture de shells

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:

0x5=0
1x5=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

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

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.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à.

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:

0x5=0
1x5=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
TP n°3

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

Droits d’accès

 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 puisse 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
cron

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/MesaDemos-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

R
cron

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".

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 "MonArchiveCompressee.tar.gz".
tar -zcvf MonArchiveCompressee.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/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/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/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.

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=w2k3/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.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.

TP n°5

Administration en ligne de commande


Indiquer quelles sont les commande "ligne de commande"
permettant de réaliser les opérations suivantes dans les
environnement unix et windows NT:

 Affichage de la liste des fichiers et/ou répertoires d'un


répertoire.
 Copie d'un fichier
 Copie d'un répertoire.
 Déplacement d'un fichier.
 Effacement d'un répertoire.
 Changement du nom d'un fichier.
 Changement du nom d'un répertoire.
 Effacement d'un fichier.
 Effacement d'un répertoire.
 Création d'un répertoire.
 Affichage du répertoire implicite.
 Changement du répertoire implicite.
 Création d'un lien.

 Affichage complet du contenu d'un fichier.


 Affichage progressif du contenu d'un fichier.
 Tri par ordre alphabétique des lignes d'un fichier texte.
 Comparaison de deux fichiers.
 Recherche d'une chaine de caratères dans un ou
plusieurs fichiers.

 Création d'un groupe d'utilisateurs.


 Suppression d'un groupe d'utilisateurs.
 Modification des caractéristiques d'un groupe
d'utilisateurs.
 Création d'un utilisateur.
 Suppression d'un utilisateur.
 Modification des caractéristiques d'un utilisateur.
 Modification du mot de passe d'un utilisateur.

 Modification des autorisations sur un fichier ou un


répertoire.
 Modification du propriétaire d'un fichier ou un
répertoire.
 Copie de fichiers ou de répertoires avec préservation
des autorisations.
 Copie de fichiers ou de répertoires avec préservation
des propriétaires.
 Copie de fichiers ou de répertoires avec préservation
des informations d'audit.

 Montage d'un répertoire réseau.


 Création d'un partage réseau.

 Vérification d'un système de fichiers.


 Lancement de l'utilitaire de defragmentation.
 Lancement de l'utilitaire de gestion des partition.
 Lancement de l'utilitaire de création de systèmes de
fichier.

 Création d'une variable d'environnement.

 Affichage de la date du système.


 Affichage de l'heure du système.

 Affichage de l'état instantané de la liste des processus en


cours de fonctionnement.
 Lancement d'un programme en tant que super-user.
 Terminaison forcée d'un processus.
 Lancement de commandes à l'heure indiquée.
 Planification de commandes répétitives.
 Arrêt du système.

 Affichage de la configuration des interfaces réseau sous


TCP/IP présentes dans la machine.
 Interrogation d'un éventuel serveur DNS configuré sous
TCP/IP.
 Lancement d'un client ftp en ligne de commande.

Vous aimerez peut-être aussi