Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [21/03/2015 09:55] enicar [La sortie de ls -l] |
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [22/03/2015 09:36] enicar [Date de dernière modification] |
||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
* [[doc:systeme:chmod|commande chmod]] | * [[doc:systeme:chmod|commande chmod]] | ||
* [[doc:systeme:chown|commande chown]] | * [[doc:systeme:chown|commande chown]] | ||
+ | * [[doc:systeme:touch|commande touch]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 18: | Ligne 19: | ||
</code> | </code> | ||
Ceci permettra d'aborder les droits sur les fichiers, les notions de propriétaires et de groupe et | Ceci permettra d'aborder les droits sur les fichiers, les notions de propriétaires et de groupe et | ||
- | les divers type de fichiers qui existent sur un système de fichier linux (ext2/ext3/ext4). | + | les divers types de fichiers qui existent sur un système de fichiers linux (ext2/ext3/ext4). |
La plupart de ces notions sont aussi vraies pour d'autres systèmes de fichiers unix, bien sûr ;) | La plupart de ces notions sont aussi vraies pour d'autres systèmes de fichiers unix, bien sûr ;) | ||
Ligne 37: | Ligne 38: | ||
Nous avons, de la gauche vers la droite : | Nous avons, de la gauche vers la droite : | ||
^ champ ^ signification^ | ^ champ ^ signification^ | ||
- | |-rw-r--r--| [[peregrination-autour-de-ls-l?&#type-de-fichier-et-permissions|Type de fichier, et permissions]] (c'est à dire droits)| | + | |-rw-r--r--| [[peregrination-autour-de-ls-l?&#types-de-fichiers-et-permissions|Types de fichiers, et permissions]] (c'est à dire les droits)| |
| 1|Le nombre de liens ([[peregrination-autour-de-ls-l?&#liens-et-inodes|Liens et inodes]])| | | 1|Le nombre de liens ([[peregrination-autour-de-ls-l?&#liens-et-inodes|Liens et inodes]])| | ||
|enicar|Le propriétaire du fichier ([[peregrination-autour-de-ls-l?&#proprietaire-et-groupe|Propriétaire et groupe]])| | |enicar|Le propriétaire du fichier ([[peregrination-autour-de-ls-l?&#proprietaire-et-groupe|Propriétaire et groupe]])| | ||
Ligne 46: | Ligne 47: | ||
<note> | <note> | ||
- | Deux options (entre autre) permettent de modifier l'affichage de **ls -l** | + | Deux options (entre autres) permettent de modifier l'affichage de **ls -l** |
* **-i** permet d'afficher en plus le numéro d'inode | * **-i** permet d'afficher en plus le numéro d'inode | ||
* **-g** est identique à **-l**, mis à part qu'elle n'affiche pas le nom du propriétaire. | * **-g** est identique à **-l**, mis à part qu'elle n'affiche pas le nom du propriétaire. | ||
</note> | </note> | ||
- | ===== Type de fichier et permissions ===== | + | ===== Types de fichiers et permissions ===== |
Détaillons, le champ : | Détaillons, le champ : | ||
<file bash>-rw-r--r--</file> | <file bash>-rw-r--r--</file> | ||
- | Il est composé de 4 sous champs. De la gauche vers la droite : | + | Il est composé de 4 sous-champs. De la gauche vers la droite : |
- | * **-** : C'est une fichier normal (voir Type de fichier ci-dessous) | + | * **-** : C'est un fichier normal (voir Types de fichiers ci-dessous) |
- | * **rw-** : Permission pour le propriétaire du fichier | + | * **rw-** : Permissions pour le propriétaire du fichier |
- | * **r--** : Permission pour le groupe auquel appartient le fichier | + | * **r--** : Permissions pour le groupe auquel appartient le fichier |
- | * **r--** : Permission pour les autres (ceux qui ne sont ni le propriétaire, ni le groupe). | + | * **r--** : Permissions pour les autres (ceux qui ne sont ni le propriétaire, ni le groupe). |
- | ==== Type de fichier ==== | + | ==== Types de fichiers ==== |
- | Dans un système de fichier de type unix, il existe plusieurs types de fichiers. La commande « ls -l » | + | Dans un système de fichiers de type unix, il existe plusieurs types de fichiers. La commande « ls -l » |
utilise un caractère pour nous informer sur ce type : | utilise un caractère pour nous informer sur ce type : | ||
^Code^ Type de fichier^ | ^Code^ Type de fichier^ | ||
|-|Fichier normal| | |-|Fichier normal| | ||
- | |d|Répertoire (**d**irectory)| | + | |d|Répertoire (**d**irectory) ([[peregrination-autour-de-ls-l?&#les-repertoires|Les répertoires]])| |
|l|Lien symbolique (symbolic **l**ink)| | |l|Lien symbolique (symbolic **l**ink)| | ||
|p|Tube nommé (**p**ipe)| | |p|Tube nommé (**p**ipe)| | ||
- | |s|Socket unix| | + | |s|**S**ocket unix| |
|b|Périphérique avec accès de type **b**loc| | |b|Périphérique avec accès de type **b**loc| | ||
|c|Périphérique avec accès de type **c**aractère| | |c|Périphérique avec accès de type **c**aractère| | ||
==== Permissions ==== | ==== Permissions ==== | ||
- | Les permissions sont stockés dans le premier inode (au moins) du fichier sous la forme | + | Les permissions sont stockées dans le premier inode (au moins) du fichier sous la forme |
- | d'un entier. Cet entier un vecteur de bits. C'est à dire que chaque bit de cet entier | + | d'un entier. Cet entier est un vecteur de bits. C'est à dire que chaque bit de cet entier |
- | à une signification soit le propriétaire, soit pour le groupe soit pour les autres | + | à une signification soit pour le propriétaire, soit pour le groupe, soit pour les autres |
pour un droit en lecture, en écriture ou en exécution. C'est pour cela que je parlerai, | pour un droit en lecture, en écriture ou en exécution. C'est pour cela que je parlerai, | ||
- | par exemple, du bit de lecture pour le propriétaire. | + | par exemple, du bit de lecture pour le propriétaire. FIXME MAL DIT |
- | <note>J'expliquerai plus tard ce que sont les inodes</note> | + | <note>Voir [[peregrination-autour-de-ls-l?&#liens-et-inodes|ici]] ce que sont les inodes</note> |
Le champ des permissions est organisé en trois groupes qui correspondent aux permissions pour | Le champ des permissions est organisé en trois groupes qui correspondent aux permissions pour | ||
le propriétaire, pour le groupe et pour les autres. Pour chacun de ces groupes, trois attributs | le propriétaire, pour le groupe et pour les autres. Pour chacun de ces groupes, trois attributs | ||
- | peuvent être positionné ou non. | + | peuvent être positionnés ou non. |
- | La signification pour les trois groupe des attributs « **rwx** » est : | + | La signification pour les trois groupes des attributs « **rwx** » est : |
^Code^Signification^ | ^Code^Signification^ | ||
|r|Accès en lecture autorisé| | |r|Accès en lecture autorisé| | ||
Ligne 90: | Ligne 91: | ||
|-|L'attribut n'est pas positionné| | |-|L'attribut n'est pas positionné| | ||
- | Quelques exemples éclaircirons les choses : | + | Quelques exemples éclairciront les choses : |
^Code^Signification^ | ^Code^Signification^ | ||
|rwx|Les droits en lecture, en écriture et en exécution sont positionnés| | |rwx|Les droits en lecture, en écriture et en exécution sont positionnés| | ||
Ligne 98: | Ligne 99: | ||
- | À la place du x dans le champ rwx du propriétaire ou du groupe nous pouvons avoir : | + | À la place du x dans le champ **rwx** du propriétaire ou du groupe nous pouvons avoir : |
^Code^signification^ | ^Code^signification^ | ||
|S|Le bit setuid ou setgid est positionné, mais pas le droit en exécution| | |S|Le bit setuid ou setgid est positionné, mais pas le droit en exécution| | ||
|s|Le bit setuid ou setgid est positionné ainsi que le droit en exécution| | |s|Le bit setuid ou setgid est positionné ainsi que le droit en exécution| | ||
- | On parle de setuid pour c'est l'attribut du propriétaire qui est positionné, et de setgid | + | On parle de setuid quand c'est l'attribut du propriétaire qui est positionné, et de setgid |
quand c'est l'attribut du groupe. | quand c'est l'attribut du groupe. | ||
Ligne 139: | Ligne 140: | ||
se nomment de la même façon, sont deux choses différentes. | se nomment de la même façon, sont deux choses différentes. | ||
- | Les groupes sont souvent utilisés pour gérer les droits plus finement ou pour réunir un ensemble d'utilisateur | + | Les groupes sont souvent utilisés pour gérer les droits plus finement ou pour réunir un ensemble d'utilisateurs |
sur les systèmes qui sont vraiment utilisés par plusieurs personnes. | sur les systèmes qui sont vraiment utilisés par plusieurs personnes. | ||
Ligne 163: | Ligne 164: | ||
* Date de dernière modification (mtime) | * Date de dernière modification (mtime) | ||
* Date de dernier changement des droits (ctime) | * Date de dernier changement des droits (ctime) | ||
- | J'ai écrit entre parenthèses l’abréviation qui est employé pour chacune. | + | J'ai écrit entre parenthèses l’abréviation qui est employée pour chacune. |
On peut afficher ces trois dates à l'aide de la commande « **stat** » : | On peut afficher ces trois dates à l'aide de la commande « **stat** » : | ||
<code user> | <code user> | ||
Ligne 181: | Ligne 182: | ||
les données du fichier. La date de dernier changement indique la date dernier changement des méta données concernant le fichier (c'est à dire, les informations, comme sa taille, son propriétaire, son groupe, ses droits, son nombre de liens,…)FIXME. La date de dernier accès est changé lors d'un accès en lecture et aussi quand l'une des dates de modification ou de changement est changée. FIXME | les données du fichier. La date de dernier changement indique la date dernier changement des méta données concernant le fichier (c'est à dire, les informations, comme sa taille, son propriétaire, son groupe, ses droits, son nombre de liens,…)FIXME. La date de dernier accès est changé lors d'un accès en lecture et aussi quand l'une des dates de modification ou de changement est changée. FIXME | ||
- | On peut obtenir les dates de derniers accès et de dernier changement avec « **ls -l** ». Une option | + | On peut obtenir les dates de dernier accès et de dernier changement avec « **ls -l** ». Une option |
longue de la forme « **--time=//mode//** » permet de choisir quelle date affichée. Des options | longue de la forme « **--time=//mode//** » permet de choisir quelle date affichée. Des options | ||
courtes sont aussi disponibles : | courtes sont aussi disponibles : | ||
Ligne 187: | Ligne 188: | ||
|atime, access ou use|-u|date de dernier accès| | |atime, access ou use|-u|date de dernier accès| | ||
|ctime ou status|-c|date de dernier changement| | |ctime ou status|-c|date de dernier changement| | ||
+ | | |-t|date de dernière modification| | ||
+ | |||
+ | De plus, les options courtes trient selon la date sélectionnée. | ||
===== Nom du fichier ===== | ===== Nom du fichier ===== | ||
Ligne 241: | Ligne 245: | ||
+ | Nous allons faire quelques expérience pratique pour démontrer ce fonctionnement. | ||
+ | J'ai dit plus [[peregrination-autour-de-ls-l?&#la-sortie-de-ls--l|haut]] que l'option **-i** permettait de | ||
+ | connaître le numéro d'inode. C'est cette option que nous allons utiliser. | ||
+ | Mais avant, nous allons créer un répertoire de test afin d'éviter de faire des | ||
+ | bêtises… | ||
+ | <code user> | ||
+ | mkdir ~/essai-de-liens | ||
+ | cd ~/essai-de-liens | ||
+ | </code> | ||
+ | |||
+ | Vous devriez, à présent, vous trouvez dans le répertoire **essai-de-liens**. | ||
+ | Créons un nouveau fichier que nous allons appelé **machin** | ||
+ | <code user> | ||
+ | touch machin | ||
+ | </code> | ||
+ | Nous pouvons vérifier que machin existe bien : | ||
+ | <code user> | ||
+ | ls -l machin | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | -rw-r--r-- 1 enicar enicar 0 mars 21 17:02 machin | ||
+ | </file> | ||
+ | Donc le fichier existe, sa taille est nulle et son compteur de lien est &gale à 1. | ||
+ | Bien, on va créer un lien sur **machin** avec la commande **ln** : | ||
+ | <code user> | ||
+ | ln machin bidule | ||
+ | </code> | ||
+ | Regardons les numéros d'inode de nos deux fichiers : | ||
+ | <code user> | ||
+ | ls -i machin bidule | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | 6488098 bidule 6488098 machin | ||
+ | </file> | ||
+ | Le numéro d'inode sera différent chez vous, bien entendu. Mais ça devrait être le même | ||
+ | numéro d'inode. C'est ce qui est important. Ça démontre que les deux fichiers sont | ||
+ | en fait les mêmes ! | ||
+ | Essayons, de modifier **machin** : | ||
+ | <code user> | ||
+ | echo "je suis machin" >machin | ||
+ | cat machin | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | je suis machin | ||
+ | </file> | ||
+ | Voyons à présent ce qu'il y a dans **bidule** | ||
+ | <code user> | ||
+ | cat bidule | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | je suis machin | ||
+ | </file> | ||
+ | Voilà ! En modifiant, les données de **machin** nous avons modifié celle de **bidule**, car les deux | ||
+ | fichiers ont les mêmes données sur le disque. Tenez, regardons le compteur de lien de nos deux fichiers : | ||
+ | <code user> | ||
+ | ls -l bidule machin | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | -rw-r--r-- 2 enicar enicar 15 mars 21 17:11 bidule | ||
+ | -rw-r--r-- 2 enicar enicar 15 mars 21 17:11 machin | ||
+ | </file> | ||
+ | Oh ! Le compteur de lien de machin a été incrémenté de 1, celui de bidule est aussi de 2 ! | ||
+ | On va aller plus loin, grâce à la commande **stat** : | ||
+ | <code user> | ||
+ | stat bidule machin | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | Fichier : « bidule » | ||
+ | Taille : 15 Blocs : 8 Blocs d'E/S : 4096 fichier | ||
+ | Périphérique : fe05h/65029d Inœud : 6488098 Liens : 2 | ||
+ | Accès : (0644/-rw-r--r--) UID : ( 1000/ enicar) GID : ( 1000/ enicar) | ||
+ | Accès : 2015-03-21 17:11:49.642004857 +0100 | ||
+ | Modif. : 2015-03-21 17:11:43.670004690 +0100 | ||
+ | Changt : 2015-03-21 17:11:43.670004690 +0100 | ||
+ | Créé : - | ||
+ | Fichier : « machin » | ||
+ | Taille : 15 Blocs : 8 Blocs d'E/S : 4096 fichier | ||
+ | Périphérique : fe05h/65029d Inœud : 6488098 Liens : 2 | ||
+ | Accès : (0644/-rw-r--r--) UID : ( 1000/ enicar) GID : ( 1000/ enicar) | ||
+ | Accès : 2015-03-21 17:11:49.642004857 +0100 | ||
+ | Modif. : 2015-03-21 17:11:43.670004690 +0100 | ||
+ | Changt : 2015-03-21 17:11:43.670004690 +0100 | ||
+ | Créé : - | ||
+ | </file> | ||
+ | Vous pouvez vérifier que pour **bidule** et **machin** les dates de dernier accès sont les mêmes. Il en | ||
+ | est de même pour les dates de changement et dernière modification. Les deux fichiers sont indiscernables, | ||
+ | tant au niveau de leur données que de leurs métadonnées. | ||
+ | |||
+ | Supprimons **machin** : | ||
+ | <code user> | ||
+ | rm machin | ||
+ | </code> | ||
+ | Voyons, ce qu'il y a dans **bidule** : | ||
+ | <code user> | ||
+ | cat bidule | ||
+ | </code> | ||
+ | <file - Affiche> | ||
+ | je suis machin | ||
+ | </file> | ||
+ | Le fichier **bidule** existe toujours, ses données n'ont pas changé. | ||
+ | |||
+ | ===== Les répertoires ===== | ||
FIXME À SUIVRE... | FIXME À SUIVRE... |