1. Introduction
Rappel des commandes rencontrées et de leur usage basique :
| commande | rôle | usage |
|---|---|---|
man |
lire les pages de manuel | man nomdecommande |
apropos |
trouver des pages de manuel | apropos mot-clef |
who |
qui est connecté | who [-H] |
ls |
afficher le contenu d’un dossier | ls [chemin] |
cd |
se déplacer dans l’arborescence | cd [chemin] |
mkdir |
créer un dossier | mkdir [-p] nomdossier |
pwd |
afficher le dossier courant | pwd |
rmdir |
supprimer un dossier | rmdir nomdossier |
rm |
supprimer un fichier | rm [-r] fichier |
mv |
déplacer ou renommer | mv source... dest |
cp |
copier | cp source... dest |
touch |
créer un fichier (ou changer son timestamp) | touch fichier |
cat |
afficher le contenu d’un fichier | cat [fichier] |
2. Droits
Rappels :
hainry@backus17:~$ ls -l /home/profs/ehainry
drwxrwxrwx 3 ehainry profs 4096 Sept 21 10:21 autorise
-rw-rw-rw- 1 ehainry profs 63 Sept 21 10:21 autre
-rw-r--r-- 1 ehainry profs 64 Sept 21 10:21 essai
drwxr-x--- 5 ehainry profs 4096 Sept 21 10:21 interdit
drwxr-xr-x 5 ehainry profs 4096 Sept 21 10:21 lecture
Les colonnes représentent respectivement les droits, le nombre de liens, le login du propriétaire, le groupe du propriétaire, la taille du fichier, la date de création et enfin le nom.
Analysons les droits sur interdit.
d-
Le premier caractère indique le type du fichier.
dsignifie qu’il s’agit d’un dossier.-que c’est un fichier régulier. Nous verrons d’autres types prochainement. rwx-
Les trois caractères suivants représentent les droits accordés au
propriétaire (ici
ehainry). Ils représentent respectivement les droits de lecture (read), d’écriture (write) et d’exécution (execute). r-x-
Les trois caractères suivants représentent les droits accordés au
groupe (ici
profs). Les membres du groupe ont ici droit de lecture et d’exécution mais pas d’écriture (le - représente l’absence du droit). ---- Les trois derniers caractères représentent les droits accordés aux personnes qui n’appartiennent pas aux groupes (cela inclut dans notre exemple les élèves par exemple).
Sur un fichier, le droit d’écriture permet de modifier le contenu du
fichier, le droit de lecture permet d’afficher le contenu du fichier. Le
droit d’exécution permet l’exécution (voir les fichiers dans
/usr/bin).
Sur un dossier, le droit de lecture permet de connaître la liste des fichiers contenus, le droit d’exécution (exploration) permet d’aller dans le dossier en question, le droit d’écriture permet de modifier la liste des fichiers, c’est-à-dire de créer ou supprimer des fichiers dans ce dossier.
2.1. Les modes octal et symbolique
En lisant les parties SYNOPSIS et DESCRIPTION de la page de man de
chmod, on apprend qu’il y a deux modes différents pour changer les
droits d’un fichier ou dossier avec chmod : le mode octal et le mode
symbolique.
Le mode symbolique
Dans le mode symbolique, on cherche à exprimer les droits à modifier sous la forme : 1. À qui s’adresse le changement ; 2. S’agit-il d’un ajout ou d’une suppression de droits ; 3. Quels droits sont concernés.
Cela se réalise en mettant un u (user), g (group), o (other) ou un
a (all), puis un + ou un - et enfin une combinaison de r, w et
x.
Par exemple
chmod a-w nomdefichier
retire le droit d’écriture à tout le monde (propriétaire, groupe et
autres) sur le fichier nomdefichier. Notons que l’on peut réaliser
plusieurs changements en une seule fois en les séparant par des
virgules. Par exemple chmod u+rw,g-w,o-rw ff.
Le mode octal
Le mode octal décrit sous forme numérique les droits que l’on veut voir
appliquer au fichier. Par exemple, supposons que l’on veuille donner les
droits rwxr--r-x au fichier nomfichier.
Premièrement, on remplace les - par des 0 et les lettres par des 1. On
obtient donc dans notre exemple 111100101.
Deuxièmement, on convertit ce nombre binaire en octal. Dans l’exemple, on trouve 745. Notons que le premier chiffre correspond aux droits pour le propriétaire, le deuxième chiffre aux droits du groupe et le troisième chiffre aux droits des autres car 3 chiffres binaires correspondent exactement à un chiffre octal.
Questions
- Donnez deux façons de mettre les droits
-r-----r--à un fichier. - Créez un dossier
uploaddans votre «home» dans lequel vos camarades (membres du même groupe que vous) peuvent écrire mais dont ils ne pourront pas lire les fichiers, et sur lequel les autes utilisateurs n’auront aucun droit. - Créez un dossier
partagedans lequel les membres du groupe profs pourront lire les fichiers mais les autres élèves n’auront aucun droit. - Dans le répertoire
partage, créez un fichier que les profs peuvent modifier. Peuvent-ils le supprimer ? - Déposez un fichier dans le dossier
uploadde vos voisins. Peuvent-ils le supprimer ? - (Optionnel) Proposez une façon de déposer dans le dossier
uploadde vos voisins un dossier que ceux-ci ne pourront supprimer.
Il est important de se rappeler que le droit de supprimer un fichier ne dépend pas des droits de ce fichier mais uniquement des droits sur le dossier le contenant.
2.2. umask et les droits par défaut (Optionnel)
Les fichiers et dossiers que vous créez le sont avec des droits par
défaut, droits que l’on peut ensuite changer avec chmod. Ces droits
par défaut correspondent au umask. Cette commande affiche ou modifie le
masque des permissions. L’umask est le complémentaire à 777 du mode
octal des droits des fichiers par défaut. Ainsi un umask de 022
correspond à des droits par défaut de 755.
Questions
- Ouvrez plusieurs fenêtres de terminal. Changez l’umask dans un des terminaux. L’umask a-t-il changé dans les autres fenêtres ?
- Changez l’umask dans un terminal et lancez un terminal depuis ce
terminal (
xterm &ourxvt &). Quel est l’umask dans ce nouveau terminal ? - Changez l’umask de façon à ce que les fichiers que vous créez vous octroient tous les droits possibles mais n’en offre à personne d’autre.
3. Inodes et liens
Les fichiers et dossiers sont identifiés sur le disque dur par une
adresse sous forme d’un numéro. Ce nombre est nommé inoeud (inode en
anglais). Pour connaître cet inoeud, on peut utiliser l’option -i de
la commande ls.
Utilisons la commande suivante : ls -il, exemple de résultat
301241 -rw-rw-rw- 1 hainry profs 36 sep 28 17:07 autre
Inode droits n proprio grp taille date nom de fichier
Où n représente le nombre de liens pointant vers le fichier. En effet, un fichier est écrit sur le disque dur au lieu pointé par l’inoeud et plusieurs noms de fichier peuvent le désigner. Ces différents noms sont des liens vers le fichier. S’il y a plusieurs liens vers un contenu, l’inoeud sera le même pour tous ces fichiers qui sont en nombre n. Notons que quand nous faisons ce que nous appelions précédemment supprimer un fichier, nous ne supprimons en réalité qu’un lien vers ce fichier, tant que le nombre de liens est supérieur à 1, le contenu est toujours acessible.
La commande ln permet de créer des liens. Lire le manuel de la
commande ln. Il est possible de créer des liens physiques (ou liens
durs : hard links en anglais) qui sont les liens qui nous intéressent
ici mais aussi des liens symboliques (symlinks).
3.1. Introduction aux liens symboliques et physiques
Créer un dossier
lienset s’y placer.Créer un fichier
a. Écrire quelque chose dedans. Quel est son inode ? Combien de liens pointent vers son contenu ?Créer un fichier
blien vers le fichiera. Quel est son inode ? Combien de liens pointent vers son contenu ?La commande
du(disk usage) permet de connaître la taille totale occupée par un dossier. Les fichiersaetboccupent combien de place à eux deux ?Créer un lien symbolique
cversa.Aller dans un autre dossier (par exemple
~/Desktop). Faire un lien symbolique versaen utilisant un chemin relatif.Supprimer
a. Quel est le contenu deb? Quid dec.?Les liens physiques ne peuvent pas être créés pour des dossiers, uniquement pour des fichiers. De plus, on ne peut créer de lien physique pour un fichier que sur la partition où ce fichier est. Notons enfin que certains systèmes de fichiers ne permettent pas la création de liens physiques.
Les liens symboliques par contre peuvent aller d’une partition vers une autre, ils peuvent également pointer vers un dossier.
3.2. Liens symboliques et liens physiques
Le tableau suivant présente quelques titres de films en français, anglais et en version originale, ainsi que la langue de la version originale.
| Titre en vo | Titre en vf | Titre en anglais | Langue originale | Réalisateur |
|---|---|---|---|---|
| Lola Rennt | Cours Lola, cours | Run Lola run | allemand | Tom Tykwer |
| Le fabuleux destin d’Amélie Poulain | Le fabuleux destin d’Amélie Poulain | Amelie from Montmartre | français | Jean-Pierre Jeunet |
| The hangover | Very bad trip | The hangover | anglais | Todd Philips |
| Il buono, il brutto, il cattivo | Le bon, la brute et le truand | The good, the bad and the ugly | italien | Sergio Leone |
| Shichinin no samurai | Les sept samouraïs | The seven samurai | japonais | Akira Kurosawa |
| North by Northwest | La mort aux trousses | North by Northwest | anglais | Alfred Hitchcock |
| M | M le maudit | M | allemand | Fritz Lang |
| Wo hu cang long | Tigre et dragon | Crouching tiger, hidden dragon | chinois | Ang Lee |
Créer, dans un dossier
films, pour chaque film une fiche (un fichier texte) portant pour nom son titre original La fiche de chaque film pourra être de la forme suivante :Lola Rennt (Cours Lola cours) film allemand de Tom TykwerLa création des fiches pourra être réalisée à l’aide d’un éditeur de texte (
nano,geditouleafpad) ou bien avecechopar exemple avec une commande similaire àecho "Lola rennt (Cours Lola, cours) film allemand de Tom Tykwer" > Lola_renntPour plus d’informations sur cette ligne de commande, attendre le TP sur les entrées sorties et redirections
À l’aide de la commande
ln, créer des liens pour que les différents noms de chaque film soient présents dans le dossierfilms. Vous devez obtenir une arborescence contenant :. |-- Amelie_from_Montmartre |-- Cours_Lola_cours |-- Le_fabuleux_destin_dAmelie_Poulain |-- Lola_rennt `-- Run_Lola_RunQuels sont les inodes des différents fichiers ?
Combien y a-t-il de liens pour le fichier Lola_rennt ? Pour les autres fichiers ?
Comparer les contenus de
Lola_rennt, deCours_Lola_courset deRun_Lola_runà l’aide decat.Créer des dossiers
original,francais,anglaisdans lesquels vous déplacerez les fichiers dont le nom est dans la langue en question. Tous les films sont-ils représentés dans tous les dossiers ? L’arborescence à obtenir ressemblera à :. |-- anglais | |-- .... | `-- Run_Lola_run |-- francais | |-- .... | `-- Cours_Lola_cours `-- original |-- .... `-- Lola_renntComparer les contenus de
Lola_rennt, deCours_Lola_courset deRun_Lola_runà l’aide decat.Combien y a-t-il de liens pour le fichier Lola_rennt ? Pour les autres fichiers ?
Modifier
Very_bad_trippour qu’il ne soit plus un film anglais mais américain. Quel est le contenu deThe hangover?Ajouter à tous les films le siècle dans lequel ils ont été tournés (vingtième pour tous sauf the hangover) à l’aide d’une commande de la forme
echo "XXe siècle" >> original/Lola_renntCombien de commandes sont nécessaires ?
anglais/Ma-t-il la même date queoriginal/M?Dans le dossier
original, créer un lien vers le dossierfrançaisen utilisant un chemin relatif. Quelle sorte de lien choisir ?Supprimer le dossier
francais. Les contenus des fichiers sont-ils toujours accessibles ? Peut-on connaître le titres en vf de tous les films ?Créer un lien symbolique
Ameliedans~qui pointe versfilms/original/Le_fabuleux_destin_dAmélie_Poulain.Créer un dossier
vodans~. Y ajouter des liens symboliques qui pointent vers les fichiers du dossieroriginal.Comparer les contenus de
vo/Le_fabuleux_destin_dAmélie_Poulain,Amelie,films/original/Le_fabuleux_destin_dAmélie_Poulain.Modifier
Ameliede façon à ce qu’il pointe versvo/Le_fabuleux_destin_dAmélie_Poulain.Quels sont les inodes des fichiers et dossiers créés ?
Épilogue
À retenir :
- Droits liés au propriétaire, au groupe et aux autres.
- Représentation octale des droits.
- Le droit de supprimer un fichier dépend du droit d’écriture sur le dossier où est ce fichier.
- La possibilité de supprimer dépend du droit de supprimer son contenu et du droit d’écriture sur le dossier le contenant.
- Lien physique = nouveau nom pour le même fichier. Uniquement possible sur une même partition. Impossible (en général) pour les dossiers.
- Lien symbolique = raccourci dans l’arborescence. Peut être cassé. Possible d’une partition à une autre, peut pointer vers un dossier.
- Si chemin relatif pour un lien symbolique, ce chemin doit être valide relativement au dossier où sera créé le lien.
- Droits sur les liens symboliques (lrwxrwxrwx) immuables (et sans grande signification).