Académique Documents
Professionnel Documents
Culture Documents
Lo22 Median Corrige A03 V2
Lo22 Median Corrige A03 V2
Réponse :
Linux
Solaris
HP-UX
OpenBSD
Mac OSX [ 2 pts ]
1.2) Citer les 2 principales architectures matérielles en leur associant un ou plusieurs systèmes
d'exploitations utilisable(s) sur ces architectures.
Réponse :
x86 : windows NT, XP, linux, BeOS,FreeBSD, OpenBSD
powerpc : MacOS, Linux, FreeBSD [ 1 pt ]
1.3) Préciser ce qu'est un logiciel libre et rappeler les 4 libertés associées à ce type de logiciel
Réponse :
libertés d'utilisation, de recopie, d'étude/amélioration des sources et de diffusion. [ 2 pts]
1.4) Présenter, à l'aide d'un dessin , les différentes couches d'interaction caractéristiques de
beaucoup de systèmes Unix, dont Linux.
Mots clés proposés : utilisateur, système de fenêtre Xwindow, interpréteur de commandes, applications,
commandes, noyau, matériel
Réponse :
[ 2 pts ]
Page 1/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
1.5) Quelle commande faut-il utiliser pour changer un mot de passe sous Linux (et sous Unix en
général)
Réponse :
La commande passwd [ 0,5 pt ]
1.6)Donner les règles élémentaires de sécurité à respecter régissant le choix d'un mot de passe
Réponse :
Il n'existe pas de mot de passe sûr, mais les mots de passe prévisibles sont à proscrire. Pour
cela, ne pas utiliser de noms communs, ni nom de famille, ni prénom, ni date de naissance. Choisir un
mot de passe d'au moins 6 caractères, qui comporte des minuscules, des majuscules et des chiffres
mélangés. Il faut aussi éviter les caractères spéciaux qui risquent de ne pas être utilisables lors d'une
connexion à distance. Attention aussi aux problèmes de claviers azerty/qwerty [ 1 pt ]
1.7) A quel mot clé, dans la question 1.4 , peut-on associer le shell Bash ?
Réponse :
Le shell Bash sous Linux joue le rôle de l'interpréteur de commandes du dessin de la question 1.4
[ 0,5 pt ]
Réponse :
Les demandes de service faîtes au système d'exploitation sont faîtes à l'aide des appels systèmes
(“OS calls” ou “System calls”). Les services demandés peuvent :
– contrôler l'execution d'un processus
– faires des accès et de la gestion sur le système de fichiers
– faire et contrôler des accès réseau, créer et gérer de l'espace mémoire
– envoyer et recevoir des messages entre processus
– gérer ou s'informer sur l'état du système
– contrôler des permissions d'accès... [ 1 pt ]
1.9) Quelle est la différence essentielle entre une commande shell “builtin” et une commmande
externe au shell ?
Réponse :
Si le shell est linké statiquement à la libc, il n'a besoin de rien d'autre pour fonctionner. Si le shell est
linké dynamiquement à la libc, il faut la libc pour fonctionner. Toute autre application externe au shell
demandera d'installer autre chose (paquet “package en anglais”) pour fonctionner, à commencer par le
paquet contenant cette application. [ 1 pt ]
Page 2/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
dans le PATH d'un utilisateur normal ( avec la distribution Debian, par exemple ). Le shell par
défaut est le bash. On rappelle que la commande export est la commande qui permet de modifier
les variables d'environnement du shell pour le shell bash.
Réponse :
Il faut
– que le répertoire /sbin soit exécutable par l'utilisateur, pour que celui-ci puisse le “traverser”
– il faut aussi que l'utilisateur henri ait un droit de lecture et d'exécution sur /sbin/ifconfig.
Réponse :
C'est la commande pwd “print working directory” qui permet de savoir dans quel répertoire on se
trouve. [ 0,5 pt ]
2.1.3) On suppose que vous êtes dans le répertoire /home/henri. Donner, en utilisant obligatoirement
un chemin relatif, la commande permettant de lancer ifconfig avec l'option -a
Réponse :
La commande cherchée est : ../../sbin/ifconfig -a
../../ permet de remonter 2 répertoires (/home/henri), et ensuite on “redescend” dans /sbin . [ 0,5 pt ]
2.1.4) Donner la commande permettant d'ajouter temporairement le répertoire /sbin dans le PATH de
l'utilisateur henri que vous êtes. Pourquoi cette commande n'agit-elle que temporairement ?
Réponse :
export PATH=''$PATH:/sbin''
N.B. : si une commande ifconfig est déjà dans le PATH, elle sera trouvée avant celle se trouvant dans
le répertoire /sbin/
Cette commande n'agit que temporairement, car au prochain login, le PATH sera à nouveau celui
déclaré dans les fichers de configuration. [ 1 pt ]
2.1.5) Proposer une solution permettant d'ajouter définitivement ce répertoire dans le PATH de
l'utilisateur henri, quel que soit le shell utilisé.
Réponse :
Il faut que ce répertoire ne dépende pas du shell, on peut donc modifier le PATH lors du login. Le
fichier ~/.profile convient. On rajoutera donc la ligne : export PATH=''$PATH:/sbin'' dans ce fichier.
[ 1 pt ]
Page 3/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
2.1.6) Pourquoi la commande '' ln -s /sbin/ifconfig /usr/local/bin/ifconfig '', exécutée par l'utilisateur
henri échoue-t-elle, alors que /usr/local/bin est bien dans son PATH ?
Réponse : un utilisateur normal n'a pas le droit d'écrire dans le répertoire /sbin ni dans le répetoire /
usr/local/bin [ 1 pt ]
2.1.7) Donner la commande permettant de changer :
Réponse :
La commande cherchée est :
Remarque : chown henri.eric est obsolète, et il faut bien entendu que le groupe eric existe. [ 1 pt ]
Et la réponse est :
Remplir le tableau suivant (r,w ou x quand le droit existe, case vide sinon) :
Nom Type Propriétaire Groupe Autres
de fichier
/dev/cdrom lien symbolique r w x r x r x
/dev/hdb bloc (avec buffer) r w r w
/dev/null fichier ordinaire r w r w r w
/dev/usb/lp0 type caractère r w r w
/tmp/.X11-unix/X0 type socket r w x r w x r w x
[ 3 pts ]
Page 4/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
3.1) Quels sont par défaut : l'entrée standard, la sortie standard, la sortie d'erreur standard sous Unix ?
Réponse :
Entrée standard par défaut : le clavier ; sortie standard par défaut : l'écran ; sortie d'erreur standard par
défaut : l'écran aussi [ 1 pt ]
Réponse :
cat attend par défaut quelque chose sur l'entrée standard (le clavier) ; l'utilisateur donc donc taper un
texte. Quand le texte est complètement saisi, il faut faire CTRL-D pour terminer la commande cat.
EOF est ensuite ajouté en fin de fichier, et le tout est redirigé dans le fichier fichier.txt [ 2 pts ]
3.3) La variable aa vaut 13. Donner la commande shell permettant de calculer 18aa + 25 (aa multiplié
par 18 + 25
Réponse :
eric@alube:~$ aa=13
eric@alube:~$ echo $((( $aa * 18 ) + 25))
259
eric@alube:~$
Remarque : on aurait pu écrire echo $(( $aa * 18 + 25)) , car la multiplication est prioritaire devant
l'addition, mais c'est moins lisible. [ 2 pts ]
Réponse :
find trouve tous les sous-répertoires présents dans le répertoire courant, et les affiche. [ 0,5 pt ]
Page 5/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
la sequence {} permet d'appliquer ls -ld à la sortie de find, c'est à dire le fichier en cours de
traitement, ce qui augmente les possibilités de la commande find. Pour finir, le caractère “ \ ”
sert à échapper le ; qui termine la commande ls -ld (et pas la commande find) [ 2 pts ]
Réponse :
cat /etc/passwd | wc -l ; cat /etc/passwd > fichier.txt [ 1 pt ]
3.8) Donner la commande utilisant egrep, permettant de rechercher les fichiers d'en-tête contenant la
fonction pread et en affichant leurs noms dans le répertoire /usr/include
Réponse :
egrep -H pread /usr/include/* [ 1 pt ]
4) Structures de contrôle
N.B. : dans tout ce qui suit, le shell utilisé est le shell bash
4.1)Ecrire un shell script qui permet à l'utilisateur d'entrer un entier i < 10, et d'afficher, à l'aide d'une
boucle une valeur allant de 1 à 2i à la valeur entrée, par pas de 2, en utilisant une structure de
contrôle for...do...done (on supposera que l'utilisateur respecte ce qui est demandé).
Réponse :
1 #! /bin/bash
2
3 clear
4 echo "Entrer un entier inférieur à 10 : "
5 j=0 ; i=0
6 read i
7 clear ; echo 1
8 for j in $(seq 1 $i) ; do
9 echo $(( 2 * j ));
10 done [ 3 pts ]
Page 6/7
UTBM / LO22 Examen de janvier 2004 / ELEMENTS DE CORRECTION / Eric bachard
1 #! /bin/bash
2 clear
3 echo "Entrer un entier inférieur à 10 : "
4 read i ; echo 1
5 j=0 ; k=$(( 2 * $i ))
6 while ((j<k)) ; do
7 echo "valeur : $(( j + 2 ))" ;
8 j=$(( j + 2 ))
9 done [ 3 pts ]
5) Expliquer le fonctionnement du shell-script suivant (nommé ''touches'') :
Réponse :
1 #! /bin/bash # shebang : l'interpréteur est le shell bash
2
3 sleep 1 # attente d'un délai unitaire
4 sauvegarde_stty=$(stty -g) # on sauvegarde l'état du terminal avant de la modifier
5 stty -icanon time 1 min 0 -echo # on modifie le terminal : plus besoin d'appuyer sur entrée
6 # pour saisir un caractère, et il n'y a plus d'echo lors de la
# saisie de celui-ci.
Page 7/7