tp1 PDF
tp1 PDF
tp1 PDF
Exercice 1.....................................................................................................................................................4
Exercice 2 ..................................................................................................................................................11
Exercice 3 ..................................................................................................................................................19
Exercice 4 ..................................................................................................................................................28
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
1. Le shell Linux
Shell (pour coquille ou coque) est le terme anglais utilis pour dsigner l'interface avec le systme d'un
systme d'exploitation (OS, Operating System). Le dessin suivant reprsente les diffrentes couches d'un OS.
Les OS bass sur Unix disposent de deux types d'interfaces avec le systme :
Les terminaux texte Linux sont bass sur un interprteur de commandes : l'utilisateur saisit des commandes sous
la forme de lignes de texte qui sont ensuite excutes par l'interprteur de commandes.
Les systmes Linux disposent de plusieurs interprteurs de commandes. Les plus courants sont :
sh : (Bourne Shell, /usr/bin/sh) l'anctre de tous les interprteurs de commandes, il est install sur
tous les OS bass sur le systme Unix.
bash : (Bourne Again Shell, /usr/bin/bash) une amlioration du Bourne Shell, est l'interprteur de
commandes par dfaut de tous les OS bass sur Unix.
sh est plus pauvre en fonctionnalits que les autrse interprteurs de commandes mais reste toujours plus rpandu
que bash.
Lorsqu'on ouvre un terminal texte, une ligne s'affiche qui ressemble cela :
jdupont@etudiants:~ $
Cette ligne est une invite de commandes (prompt en anglais) qui indique que l'interprteur de commandes est
inactif et qu'il attend que l'utilisateur lui donne des commandes excuter. L'invite de commande se dcompose
ainsi :
jdupont @etudiant : ~ $
nom d'utilisateur nom de la machine chemin du rpertoire courant type d'utilisateur connect
(le login)
Le symbole $ indique que l'utilisateur actuellement connect est un utilisateur ordinaire. Ce symbole est remplac
par un caractre # si l'utilisateur connect est root, l'administrateur de la machine :
jdupont@etudiants:~ #
Lorsque l'utilisateur saisit une commande dans le terminal texte, par exemple la commande allo, l'interprteur
de commandes suit la procdure suivante pour l'excuter :
(1) Si allo est l'une de ses commandes internes, il l'excute puis redonne la main l'utilisateur (en raffichant
l'invite de commandes).
Sinon, il passe l'tape suivante.
(2) Il parcourt le contenu d'une variable d'environnement appele PATH (nous reviendrons sur les variables
d'environnement plus loin). Le contenu de PATH est une liste de rpertoires dans lesquels il faut chercher
les binaires correspondant la commande excuter. Par exemple, si PATH contient les rpertoires
suivants (dans l'ordre) :
/usr/bin
/bin
/home/jdupont/bin
(3) Si aucun de ces rpertoires ne contient une commandes allo, l'interprteur de commandes affiche un
message d'erreur pour indiquer l'utilisateur qu'il ne connat pas cette commande.
jdupont@etudiants:~ $ allo
allo: commande introuvable
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Exercice 1
1. Vrifiez que votre machine a les 7 interfaces systme.
2. Que reprsente le caractre $ au dbut de la ligne de commande ?
3. Quel est le caractre qui indique que l'utilisateur actuellement connect est l'administrateur root ?
6. Affichez la liste des rpertoires de la variable PATH avec la commande echo $PATH. Les rpertoires de la
liste sont spars par ':''. Parcourez les diffrents rpertoires trouvs et observez leur contenu.
7. Affichez la liste des interprteurs de commandes installs sur votre machine (/etc/shells).
Rendez-vous ensuite dans la premire interface en ligne de commande et connectez-vous avec votre login et votre
mot de passe. Excutez la commande who.
Puis rendez-vous dans la troisime interface en ligne de commande et connectez-vous. Excutez nouveau la
commande who.
Affichage l'cran
echo : permet de raliser des affichages l'cran.
Certains caractres ont une signification spciale pour l'interprteur de commandes (par exemple, \n permet de
provoquer un saut de ligne). Pour dsactiver l'interprtation de ces caractres, on utilise la commande echo avec
l'option -e et en encadrant le texte afficher dans des guillemets (simples ou doubles).
$ echo a\nb
a\nb
$ echo -e a\nb
anb
$ echo -e 'a\nb'
a
b
$ echo -e a\nb
a
b
La commande echo -n Entrez vos nom et prnom > affiche le texte entre guillements sans
afficher de retour la ligne ensuite. L'utilisateur entre alors les mots julien et dupont spars par un espace.
La commande read a b place alors ces deux mots dans les variables a et b, respectivement.
L'option -t de la commande read permet de limiter le temps laiss l'utilisateur pour saisir le texte demand,
en nombre de secondes.
Avec la commande read -t 3 a, l'utilisateur a 3 secondes pour entrer son login. Aprs ces 3 secondes
coules, le terminal reprend la main.
L'option -s de read permet de masquer le texte saisit par l'utilisateur, ce qui peut tre utile pour entrer un mot
de passe par exemple.
la deuxime ligne, l'utilisateur a entr son mot de passe mais sa saisie est reste invisible.
$ ls -lisa ~/Desktop
$ cd ~/Desktop ; pwd ;
/home/jdupont/Desktop
La premire ligne de commande utilise la commande ls avec ses options -l, -i, -s et -a et avec pour
argument le rpertoire ~/Desktop. La deuxime ligne de commande dplace l'utilisateur dans le rpertoire
~/Desktop avec la commande cd et affiche le chemin absolu de sa position avec la commande pwd.
$ ls
$ ls . (ces deux premires lignes sont quivalentes)
$ cd
$ cd ~
$ cd /home/jdupont
(ces trois lignes sont quivalentes, l'utilisateur courant est 'jdupont')
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
L'argument par dfaut de la commande ls est ., le rpertoire courant. L'argument par dfaut de la commande cd
est ~, le rpertoire personnel de l'utilisateur.
$ ls -l -R -a
$ ls -lRa
$ ls -Ral (ces trois lignes sont quivalentes)
$ rm -f -i toto.txt
$ rm -fi toto.txt
$ rm -force -interactive toto.txt (ces trois lignes sont quivalentes)
Arguments
Si on utilise plusieurs options, l'argument qui est demand par chaque option est fourni juste aprs le nom de cette
option : commande -optionX argument_de_X optionY argument_de_Y
$ read -s -t 3 pwd
Cette commande masque la saisie de l'utilisateur (option -s), limite son temps de saisie 3 secondes (option -t
et son argument 3) et place la saisie de l'utilisateur dans la variable pwd.
En cas d'ambigut (par exemple un argument qui commence par un caractre comme celui qu'on place devant
les options), on spare les options des arguments par - (aprs ces deux caractres, le shell interprte toutes les
chanes de caractres comme des arguments et non des options).
Utilisateurs du systme
who : liste les utilisateurs actuellement connects sur le systme
who -q : liste uniquement les noms de connexion et fait le total du nombre d'utilisateurs actuellement connects
who am i : affiche uniquement la ligne concernant l'utilisateur qui est actuellement connect
finger : affiche une description plus prcise des utilisateurs actuellement connects (nom, login, terminal de
connexion, temps de connextion, date de connexion, etc.).
finger <utilisateur> : affiche encore plus d'informations sur l'utilisateur utilisateur.
$ who
jdupont pts/0 2013-01-25 21:02 (:0)
kdurand pts/1 2013-01-24 02:13 (:0)
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
$ who -q
julien root
# utilisateurs=2
$ who am i
jdupont pts/0 2013-01-25 21:02 (:0)
$ whoami
jdupont
$ finger
Login Name Tty Idle Login Time Office Office Phone
marie marie pts/0 - Jan 25 21:02 (:0)
$ finger jdupont
Login: jdupont Name: Julien Dupont
Directory: /home/jdupont Shell: /bin/bash
On since Fri Jan 25 21:02 (CET) on pts/0 from :0
No mail.
No Plan.
Dconnexion
La dconnexion d'un terminal texte se fait de trois manires diffrentes :
Temps
date : indique la date et l'heure du systme,
2.4 Documentation
man
Le systme Linux dispose d'un manuel lectronique install par dfaut. Ce manuel est divis en 9 sections
principales :
Section 1 : commandes utilisateurs
Section 2 : appels systme
Section 3 : bibliothques de programmation (Perl, libc, etc.)
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
$ man finger
Pour forcer la recherche dans une section prcise du manuel (par exemple la section 7) :
$ man 7 signal
apropos <arg> : cette commande affiche les pages du manuel qui concernent l'lment arg.
$ apropos who
at.allow (5) - determine who can submit jobs via at or batch
at.deny (5) - determine who can submit jobs via at or batch
bsd-from (1) - print names of those who have sent mail
from (1) - print names of those who have sent mail
w (1) - Show who is logged on and what they are doing.
w.procps (1) - Show who is logged on and what they are doing.
who (1) - show who is logged on
whoami (1) - print effective userid
whois (1) - client for the whois directory service
--help
Les commandes Linux disposent de l'option -help qui permet d'afficher la syntaxe gnrale de la commande
et ses options les plus utilises.
/usr/share/doc
Les sous-rpertoire de /usr/share/doc contiennent une documentation dtaille des applications installes
sur le compte utilisateur.
which
Cette commande cherche dans les rpertoires de la variable d'environnement PATH le fichier excutable
correspondant au nom de son argument.
Par exemple :
$ which ls
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Affichage
C+l ou clear : efface le contenu du terminal et repositionne l'invite de commandes sur la premire ligne du
terminal (sans effacer l'historique des commandes utilises)
M-Page suiv : descend d'une demi-page dans l'affichage du terminal
dition
Deb : dplace le curseur en dbut de ligne
Historique
C+r : recherche une chane de caractres dans l'historique de commandes. Si la chane est contenue dans
plusieurs commandes de l'historique, une pression supplmentaire sur C+r permet de remonter encore dans la
liste des commandes de l'historique qui contiennent cette chane de caractres.
C+j ou Echap : termine une recherche initie avec C+r et permet l'utilisateur de modifier la ligne de
commande trouve avant de l'excuter
C+g : annule une recherche initie avec C+r
Divers
C+c : interrompt la commande en cours sans attendre la fin de son excution normale
C+d : termine la saisie au clavier attendue par une commande en lui envoyant le caractre de fin de fichier EOF
(End of File)
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Exercice 2
1. Quelles sont les commandes dont la syntaxe est valide parmi les suivantes :
a. $ commande -p -o
b. $ commande -o-p
c. $ commande -po
f. $ commande -p --arg_option_p
g. $ commande arg1arg2
h. $ commande
i. $ commande arg -p -o
6. Effacez rapidement les dernires commandes de votre terminal texte de manire revenir en premire
ligne. Existe-t-il une autre manire de le faire ?
7. Comment faire pour rappeler la dernire commande excute ?
8. Affichez la chane de caractres ''a e i o '' sans les guillemets, avec un espace entre 'a' et
'e', deux espaces entre 'e' et 'i', cinq espaces entre 'i' et 'o', et 3 espaces aprs 'o'. Que se
passe-t-il ?
9. Affichez prsent votre nom et votre prnom spars par une tabulation et suivis d'un retour la ligne.
10. Affichez la date et l'heure actuelles dans ce format : Nous sommes le <nom_jour> <num_jour> /
<mois>', il est <heure> heures, <minute> minutes et <seconde> secondes
Par exemple : Nous sommes le samedi 03 / 01, il est 20 heures, 15 minutes et 51 secondes
11. Affichez le calendrier du mois de juin de l'anne 2007.
12. Que fait la commande time ? Donnez-en trois exemples d'utilisation de complexit variable.
15. Quelle documentation faut-il consulter pour obtenir des informations sur l'utilisation d'une commande du
systme (date, who, ).
19. Utilisez les commandes head et tail pour extraire du fichier les lignes 10 20 /etc/passwd.
20. Quels sont les excutables des commandes suivantes : ls, cp, mv, man, info, cd, cron, chroot ?
21. Quel fichier faut-il diter pour modifier l'ordre de parcours de man dans le manuel ?
22. Affichez l'aide du shell avec la commande man bash et parcourez le fichier.
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Le systmes de fichiers Linux est organis sous la forme d'une hirarchie de rpertoires (un arbre) donc la racine
est / (slash). Voici les principaux rpertoires que contient la racine :
Un chemin est une suite de rpertoires et sous-rpertoires spars par le caractre / (slash).
repertoire/sous-repertoire/sous-sous-repertoire/...
Il existe trois diffrentes manires de spcifier le chemin d'un fichier ou d'un rpertoire qui peuvent tre utilises
indiffremment.
Le chemin absolu
Tout chemin absolu commence par / (la racine) et indique tous les rpertoires qu'il faut traverser partir de la
racine pour arriver jusqu'au fichier ou rpertoire en question. Le rpertoire absolu d'un fichier/rpertoire est donc
toujours le mme quelle que soit la position o l'on se trouve dans l'arborescence.
Exemple : Le chemin absolu du sous-rpertoire /include qui est dans /usr/local est donc
/usr/local/include.
Le chemin personnel
Tout chemin personnel commence par ~utilisateur (qui rfrence le rpertoire personnel
/home/utilisateur de l'utilisateur utilisateur) et indique tous les rpertoires qu'il faut traverser
partir de /home/utilisateur pour arriver jusqu'au fichier/rpertoire en question. Le chemin personnel est
donc diffrent en fonction du compte utilisateur o l'on se trouve. Attention : dans un chemin, le caractre ~ ne
peut tre prcd de rien d'autre.
Exemple : Le chemin personnel du sous-rpertoire /include qui est dans /usr/local peut tre :
Un chemin relatif
C'est un chemin qui indique la position du fichier/rpertoire en question par rapport la position o l'on se trouve
dans l'arborescence. Il existe donc au moins autant de chemins relatifs d'un fichier/rpertoire que de positions o
l'on peut se trouver dans l'arborescence.
Chaque rpertoire du systme contient deux fichiers spciaux :
. : qui rfrence le rpertoire courant
Exemple : Le chemin relatif du sous-rpertoire /include qui est dans /usr/local peut tre :
un inode (index node) unique : une structure qui contient toutes les informations relatives ce fichier
l'exception de son nom
et des blocs de donnes : qui contiennent les donnes stockes dans le fichier par l'utilisateur
Le systme de fichiers Linux est spar en deux parties distinctes :
la table des inodes, dans laquelle chaque inode est identifi par un numro
et les blocs de donnes de tous les fichiers et rpertoires de la table des inodes
Un fichier peut avoir plusieurs liens, donc plusieurs noms. Il suffit pour cela que tous ses noms pointent sur le
mme inode.
L'inode d'un fichier/rpertoire contient les informations suivantes :
type : le type de fichier, ordinaire (-), rpertoire (d), lien symbolique (l), bloc (b), caractre (c), tube
(p) ou socket (s).
droits : les droits qu'ont les utilisateurs de la machine sur le fichier (on reviendra plus tard sur les droits
d'utilisation d'un fichier)
liens : le nombre de noms diffrents (liens physiques) qui pointent vers les blocs de donnes du fichier
GID : (Group ID) l'identifiant du groupe auquel appartient l'utilisateur propritaire du fichier
(une machine peut avoir plusieurs groupes d'utilisateurs)
Dans le systme de fichiers Linux, le nom d'un fichier peut tre dupliqu par des pseudonymes qu'on appelle
liens . Cela peut se faire de deux manires :
soit en crant un nouveau lien vers les blocs de donnes du fichier ; c'est ce qu'on appelle lien physique
soit en crant un nouveau lien vers le nom du fichier ; c'est ce qu'on appelle lien symbolique
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Navigation
cd : (change directory) permet de changer de rpertoire courant. Prend en argument le chemin du rpertoire o
l'on veut aller.
L'argument par dfaut de cette commande est ~, le rpertoire personnel de l'utilisateur connect dans le terminal
texte en cours.
- est le rpertoire prcdent (dans l'historique)
pwd : (print working directory) affiche le chemin absolu du rpertoire courant. Ne ncessite aucun argument.
Affichage
ls : (list) liste le contenu d'un rpertoire. Prend en argument les chemins d'un ou plusieurs rpertoires dont on
veut afficher le contenu.
L'argument par dfaut de cette commande est ., le rpertoire courant.
-t : la sortie est trie par date de modification du plus ancien au plus rcent
$ pwd
/home/jdupont/
(les deux commandes suivantes sont quivalentes)
$ ls
Bureau Documents Images Musique Public Tlchargements Vidos
Workspace tp1.txt
$ ls .
Bureau Documents Images Musique Public Tlchargements Vidos
Workspace tp1.txt
$ cd Documents
$ pwd
/home/jdupont/Documents
$ ls -l .. (affiche le contenu du rpertoire parent: /home/jdupont)
drwxr-xr-x 7 jdupont jdupont 4096 2013-01-23 23:57 Bureau
drwxr-xr-x 3 jdupont jdupont 4096 2012-12-25 11:10 Documents
drwxr-xr-x 2 jdupont jdupont 4096 2011-10-28 14:50 Images
drwxr-xr-x 3 jdupont jdupont 4096 2011-11-06 10:42 Musique
drwxr-xr-x 2 jdupont jdupont 4096 2011-10-28 14:50 Public
drwxr-xr-x 2 jdupont jdupont 4096 2012-11-21 06:24 Tlchargements
drwxr-xr-x 2 jdupont jdupont 4096 2011-10-28 14:50 Vidos
drwxr-xr-x 3 jdupont jdupont 4096 2011-11-21 18:23 workspace
-rwxr-xr-x 3 jdupont jdupont 4096 2011-11-21 18:23 tp1.txt
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
type droits liens UID GID taille mtime nom
Cration/Suppresion
mkdir : (make directory) cre un rpertoire ou une arborescence. Prend en argument le nom du ou des
rpertoires crer
-p : cre aussi les rpertoires parents qui n'existent pas
$ ls
tp1 tp2 tp3 tp4 tp5
$ mkdir -p tp6/exo1 tp6/exo2
$ ls tp6
exo1 exo2
rm : (remove) supprime un fichier ou un rpertoire. Prend en argument une liste d'un ou plusieurs chemins de
rpertoires et/ou fichiers supprimer
-i : --interactive. Demande confirmation avant de supprimer chaque fichier/rpertoire
-R : --recursive. Suppression rcursive pour les rpertoires (supprime aussi leurs sous-rpertoires)
rmdir : (remove directory) supprime un rpertoire ou une arborescence. Prend en argument une liste d'une ou
plusieurs arborescences
Dplacement
cp : (copy) copier un fichier ou un rpertoire. Prendre en arguments : (i) une liste d'un ou plusieurs
fichiers/rpertoires copier et (ii) le chemin du rpertoire de destination
-r : --recursive. Pour un rpertoire, copie aussi le contenu de ses sous-rpertoires
Lorsqu'on copie un fichier, on peut donner un nom diffrent sa copie en spcifiant son nouveau nom :
mv : (move) dplace un fichier. Prend en arguments : (i) une liste d'un ou plusieurs chemins de fichiers dplacer
et (ii) la destination du dplacement
Exercice 3
1. Quels sont les fichiers dont le nom commence par le caractre ''.''.
2. Recherchez dans votre systme de fichiers au moins un fichier de chacun des types suivants :
a. un fichier ordinaire :
b. un rpertoire :
c. un lien symbolique :
d. un bloc de donnes :
e. un caractre :
f. un tube :
g. un socket :
3. Quel est le type des chemins suivants : absolu (A), personnel (P) ou relatif (R) ?
a. /usr/local/bin:
b. ~/alire.txt :
c. /etc :
d. ./services :
e. ../home :
f. ~/Desktop :
6. Dplacez-vous dans le rpertoire /Desktop de votre compte utilisateur. Retournez ensuite dans votre
rpertoire personnel (/home/utilisateur) sans taper son chemin. Puis redescendez dans le rpertoire
/Desktop (le rpertoire o vous tiez juste avant) galement sans taper son chemin.
7. Dans votre rpertoire personnel, listez la totalit du contenu du rpertoire courant en affichant le contenu de
l'inode de chaque lment.
8. Depuis votre rpertoire personnel, affichez le contenu des rpertoires /usr/local et /usr/share sans
vous y dplacer et en utilisant une seule commande.
9. Toujours depuis votre rpertoire personnel, affichez l'arborescence du rpertoire /usr/local.
10. Affichez les informations relatives votre rpertoire personnel sans lister son contenu.
11. O sont stocks les noms des fichiers sur un systme de fichiers Linux ?
a. dans les blocs de donnes rservs aux fichiers
b. dans l'inode des fichiers
c. dans les blocs de donnes rservs aux rpertoires
d. dans l'inode des rpertoires
12. quoi servent les commandes find et locate ?
13. Donnez deux couples d'exemples d'utilisation de find et de locate qui donnent le mme rsultat.
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
14. Quelle commande permet d'afficher les informations contenuees dans l'inode d'un fichier ou rpertoire ?
15. quoi correspond l'inode de .. ?
16. Placez-vous dans votre rpertoire personnel et crez-y l'arborescence suivante en utilisant le moins de
commandes possible :
Indice : Vous pourrez, entre autres, utiliser les commandes mkdir et cp avec leurs options. Les fichiers
.sh sont vides pour le moment et seront complts au fur et mesure des TPs.
~/l2-s4-cours-unix-shell mes-notes.txt
/tp1..6 notes-cours.txt
/scripts exo1.sh
exo2.sh
exo3.sh
exo4.sh
exo5.sh
Affichez l'inode de ces deux fichiers (avec la commande ls). Que remarquez-vous ?
prsent, modifiez le contenu du fichier mes-notes.txt puis affichez le contenu du fichier mes-
notes.txt.link. Le fichier mes-notes.txt.link est-il modifi ? Qu'en concluez-vous ?
23. Utilisez l'option -links de la commande find pour afficher la liste des fichiers ordinaires qui ont moins
de 2 liens symboliques. Affichez ensuite la liste des fichiers ordinaires qui ont plus de 2 liens symboliques.
24. Affichez le numro d'inode des entres de votre rpertoire personnel.
25. Que fait la commande suivante ?
$ ls -lSr /dev
26. Choisissez un fichier parmi ceux qui ont t affichs lorsque vous avez lanc la deuxime commande de la
question prcdente. Affichez son numro d'inode. Utilisez ensuite l'option -inum de la commande find
pour afficher la liste des liens qui pointent sur son inode.
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Le systme Linux est multiutilisateur. Chaque personne utilisant une machine possde un compte utilisateur
sur le systme et peut partager des fichiers avec d'autres utilisateurs de la machine. Le systme Linux propose en
effet la notion de groupe d'utilisateurs . Un utilisateur doit obligatoirement tre membre d'un groupe au moins.
Les diffrents utilisateurs d'un systme Linux sont identifis par : (i) un numro unique : l'UID (User's Identifier),
(ii) un nom d'utilisateur unique (login) et (iii) un mot de passe unique (password).
Les groupes d'utilisateurs sont reprsents par : (i) un nom unique et (ii) un numro unique : le GID (Group's
Identifier).
Lorsqu'un nouveau fichier est cr, c'est l'UID de l'utilisateur qui l'a cr et le GID de son groupe principal qui
sont utiliss comme utilisateur et groupe propritaire, respectivement.
Les droits d'utilisation d'un fichier ou rpertoire sont dfinis pour :
Pour bien comprendre les droits sur les rpertoires, on peut considrer ces derniers comme une table associant les
inodes aux noms des entres du rpertoire :
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
x r
inode nom
45678 .
33756 ..
765543 /tp1
w 12609 tp1.c
x permet de connatre leur numro d'inode, qui est ncessaire pour les manipuler puisque c'est
l'inode qui permet d'accder :
Par exemple, la commande passwd permet aux utilisateurs de changer leur mot de passe que les droits d'accs
au fichier /etc/shadow (qui contient les mots de passes des utilisateurs) sont ainsi positionns :
$ ls -l /etc/shadow
-r-------- 1 root root 1130 2013-01-05 16:32 /etc/shadow
(seul root a le droit de lecture sur ce fichier)
Les utilisateurs ordinaires peuvent modifier leur mot de passe car les droits du fichier /usr/bin/passwd, le
fichier binaire qui est excut lorsqu'on lance cette commande, a les droits suivants :
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
$ ls -l /usr/bin/passwd
-rws--x--x 1 root root 42824 2011-06-24 11:28 /usr/bin/passwd
Lorsqu'on lance cette commande, elle est excute sous l'identit de root, son propritaire, grce au droit SUID.
umask : cette commande permet d'afficher et de dterminer les droits d'accs par dfaut (ou masque) des
fichiers crss.
chmod : cette commande permet l'utilisateur et root de modifier les droits d'utilisation d'un fichier/rpertoire.
Elle peut tre utilise de deux manires, selon qu'on note les droits d'utilisateurs en notation symbolique ou en
notation numrique.
Notation symbolique
La commande chmod (change mode) permet de modifier les droits d'utilisation sur un fichier/rpertoire. En
notation symbolique, sa syntaxe est la suivante :
Avec la notation symbolique, les diffrents droits d'utilisation sont nots ainsi :
$ ls -l tp1.txt
-rw---x-wx 3 jdupont jdupont 4096 2011-11-21 18:23 tp1.txt
$ chmod u+x tp1.txt
(ajoute l'utilisateur 'u' le droit d'excution 'x' sur le fichier 'tp1.txt')
$ ls -l tp1.txt
-rwx--x-wx 3 jdupont jdupont 4096 2011-11-21 18:23 tp1.txt
$ chmod g-w toto.txt
(supprime au groupe 'g' le droit d'criture 'w' sur le fichier)
$ ls -l tp1.txt
-rwx--x--x 3 jdupont jdupont 4096 2011-11-21 18:23 tp1.txt
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Notation numrique
En notation numrique, la syntaxe de chmod est la suivante :
En notation octale, les droits de chaque utilisateur sont nots ainsi : lecture : r = 0 ou 4
criture : w = 0 ou 2
excution : x = 0 ou 1
Avec la notation numrique, les diffrents droits d'utilisation sont nots ainsi :
Exemple :
les droits de l'utilisateur propritaire : rwx = r + w + x = 4 + 2 + 1 = 7
les droits de son groupe principal : -wx = r + w + x = 0 + 2 + 1 = 3
les droits des autres utilisateurs : r-x = r + w + x = 4 + 0 + 1 = 5
$ ls -l tp1.txt
-rw---x-wx 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chmod 735 tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Exemple :
$ ls -l tp1.txt
-rw---x-wx 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chmod 4735 tp1.txt
$ ls -l tp1.txt
-rws-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
chown : (change owner) cette commande permet de changer le propritaire et le groupe d'un fichier
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chown root tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 root famille 4096 2011-11-21 18:23 tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chown :root tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont root 4096 2011-11-21 18:23 tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chown root:root tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 root root 4096 2011-11-21 18:23 tp1.txt
Pour changer de propritaire seulement si l'actuel propritaire est un certain utilisateur, par exemple jdupont :
chown --from=<actuel_proprietaire> <nouv_proprietaire> fichier
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chown -from=jdupont root tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 root famille 4096 2011-11-21 18:23 tp1.txt
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Pour changer de groupe seulement si l'actuel groupe est un certain groupe donn, par exemple famille :
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont famille 4096 2011-11-21 18:23 tp1.txt
$ chown from=:famille amis tp1.txt
$ ls -l tp1.txt
-rwx-wxr-x 3 jdupont amis 4096 2011-11-21 18:23 tp1.txt
Licence 2 Semestre 4 TP Unix/Shell Partie I Myriam RAKHO 2021/2013
Exercice 4
1. Utilisez les commandes id et groups pour afficher les informations en rapport avec tous les utilisateurs
et groupes d'utilisateurs de votre machine. Utilisez la documentation de ces commandes pour connatre les
diffrentes manires de les utiliser.
Affichez la liste des groupes auxquels vous appartenez.
2. quoi sert le compte root ?
b. rwxrwxr-x :
c. -------w- :
d. rwxrr-- :
e. rr----- :
b. rwxrwxr-x :
c. -------w- :
d. rwxrr-- :
e. rr----- :
7. Changez le masque de votre compte 0002. Crez un fichier vide f1.txt et un rpertoire vide r1.txt.
Quels sont les droits de chacun ?
8. Changez maintenant votre masque 27. Crez un fichier vide f2.txt et un rpertoire vide r2.txt. Que
signifie le masque 27 ?
10. Donnez aux autres utilisateur les droits r, w et x sur r1. Assignez au rpertoire r2 les mmes droits que
r1. Crez un rpertoire r3 et donnez-lui les mmes droits qu' r1 et r2.
11. Crez un fichier secret dans r3 et modifiez ses droits de manire ne laisser que le droit de lecture
l'utilisateur propritaire (tous les autres droits sont supprims).
12. Connectez-vous au premier terminal texte tty1 avec le login et le mot de passe d'un camarade.
Affichez les droits du fichier binaire original et de sa copie ~/tmp/monls. Quelle est la diffrence ?
Ajoutez le droit UID ~/tmp/monls. Vous utiliserez pour cela la commande chmod avec la notation
symbolique des droits.
Positionnez les droits d'accs au fichier ~/tmp/monls de manire ce que votre voisin puisse excuter la
copie du binaire. Demandez-lui d'afficher le contenu de son rpertoire personnel en utilisant la copie du
binaire.
15. Utilisez l'option -perm de la commande find pour afficher la liste des fichiers de votre compte personnel
qui ont les droits suivants : rwxr--r--. Les droits doivent tre exprims en notation octale.
16. Utilisez l'option -perm de la commande find pour afficher la liste des fichiers de votre compte personnel
qui ont au moins le droit SUID. Les droits doivent tre exprims en notation octale.
17. Les rpertoires /tmp et /var/tmp contiennent des donnes temporaires. Le rpertoire /tmp peut tre
purg n'importe quel moment. Dans la plupart des distributions, il est nettoy chaque dmarrage du
systme. Les donnes contenues dans /var/tmp sont quand elles conserves d'un dmarrage l'autre.
Mme si elles sont temporaires, les entres du rpertoire /tmp ne doivent pas tre supprimes sans raison.
En effet, elles peuvent reprsenter des donnes qui sont en cours d'utilisation par une ou plusieurs
applications. Leur suppression peut donc entraner un plantage du systme.
Que fait la commande suivante ?
Crez un fichier et un rpertoire quelconques dans le rpertoire /tmp. Demandez ensuite vos camarades
de le modifier. Que se passe-t-il ? Pourquoi ?