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 [20/03/2015 22:19] enicar [La sortie de ls -l] |
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [21/03/2015 08:18] enicar [Pérégrination autour de ls -l] |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
* [[doc:systeme:ls|commande ls]] | * [[doc:systeme:ls|commande ls]] | ||
+ | * [[doc:systeme:ln|commande ln]] | ||
* [[doc:systeme:droits-unix|droit unix]] | * [[doc:systeme:droits-unix|droit unix]] | ||
+ | * [[doc:systeme:chmod]] | ||
+ | * [[doc:systeme:chown]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 15: | Ligne 18: | ||
</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/btrfs). | + | les divers type de fichiers qui existent sur un système de fichier linux (ext2/ext3/ext4). |
- | Certaines 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 ;) |
Donc je vais d'abord exposer ces notions essentielles, et ensuite on va revenir sur des exemples | Donc je vais d'abord exposer ces notions essentielles, et ensuite on va revenir sur des exemples | ||
Ligne 26: | Ligne 29: | ||
</code> | </code> | ||
- | <file bash Ce qui me donne> | + | <file - Ce qui me donne> |
-rw-r--r-- 1 enicar enicar 1436 avril 23 2014 /home/enicar/.bashrc | -rw-r--r-- 1 enicar enicar 1436 avril 23 2014 /home/enicar/.bashrc | ||
</file> | </file> | ||
Ligne 42: | Ligne 45: | ||
|/home/enicar/.bashrc| Le nom du fichier| | |/home/enicar/.bashrc| Le nom du fichier| | ||
- | Détaillons tout cela un peu plus. | + | <note> |
- | === Type de fichier et permissions === | + | Deux options (entre autre) permettent de modifier l'affichage de **ls -l** |
+ | * **-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. | ||
+ | </note> | ||
+ | ===== Type de fichier 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 | + | * **-** : C'est une fichier normal (voir Type de fichier ci-dessous) |
* **rw-** : Permission pour le propriétaire du fichier | * **rw-** : Permission pour le propriétaire du fichier | ||
* **r--** : Permission pour le groupe auquel appartient le fichier | * **r--** : Permission pour le groupe auquel appartient le fichier | ||
* **r--** : Permission pour les autres (ceux qui ne sont ni le propriétaire, ni le groupe). | * **r--** : Permission pour les autres (ceux qui ne sont ni le propriétaire, ni le groupe). | ||
- | == Type de fichier == | + | ==== Type de fichier ==== |
Dans un système de fichier de type unix, il existe plusieurs types de fichiers. La commande « ls -l » | Dans un système de fichier 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 : | ||
Ligne 64: | Ligne 71: | ||
|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és 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 un vecteur de bits. C'est à dire que chaque bit de cet entier | ||
Ligne 72: | Ligne 79: | ||
<note>J'expliquerai plus tard ce que sont les inodes</note> | <note>J'expliquerai plus tard ce que sont les inodes</note> | ||
- | Signification pour les trois champs des lettres « **rwx** » sont : | + | 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 | ||
+ | peuvent être positionné ou non. | ||
+ | |||
+ | La signification pour les trois groupe des attributs « **rwx** » est : | ||
^Code^Signification^ | ^Code^Signification^ | ||
|r|Accès en lecture autorisé| | |r|Accès en lecture autorisé| | ||
|w|Accès en écriture autorisé| | |w|Accès en écriture autorisé| | ||
|x|Droits d'exécution ou droit de faire un « cd »| | |x|Droits d'exécution ou droit de faire un « cd »| | ||
- | |-|Aucun droit| | + | |-|L'attribut n'est pas positionné| |
- | Les droits sont toujours dans le même ordre : lecture, écriture, exécution. | ||
Quelques exemples éclaircirons les choses : | Quelques exemples éclaircirons les choses : | ||
^Code^Signification^ | ^Code^Signification^ | ||
Ligne 92: | Ligne 102: | ||
|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 | ||
+ | quand c'est l'attribut du groupe. | ||
Par exemple : | Par exemple : | ||
<code user> | <code user> | ||
- | ls -l bin/su | + | ls -l /bin/su |
</code> | </code> | ||
- | <file bash Nous affiche> | + | <file - Affiche> |
-rwsr-xr-x 1 root root 38868 nov. 19 22:03 /bin/su | -rwsr-xr-x 1 root root 38868 nov. 19 22:03 /bin/su | ||
</file> | </file> | ||
Ici, nous voyons que la commande « su » a son bit setuid positionné. | Ici, nous voyons que la commande « su » a son bit setuid positionné. | ||
- | Je reviendrais plus tard sur la signification et l'usage des setuid et setgid. | + | <note>Je reviendrais plus tard sur la signification et l'usage des setuid et setgid.</note> |
Pour terminer avec les droits, le champ « rwx » des autres (c'est à dire ceux qui ne sont ni le propriétaire, | Pour terminer avec les droits, le champ « rwx » des autres (c'est à dire ceux qui ne sont ni le propriétaire, | ||
Ligne 114: | Ligne 127: | ||
ls -ld /tmp | ls -ld /tmp | ||
</code> | </code> | ||
- | <file bash Nous affiche> | + | <file - Affiche> |
drwxrwxrwt 9 root root 8192 mars 20 20:25 /tmp | drwxrwxrwt 9 root root 8192 mars 20 20:25 /tmp | ||
</file> | </file> | ||
Nous voyons bien que le bit **t** est positionné. | Nous voyons bien que le bit **t** est positionné. | ||
- | === Propriétaire et groupe === | + | ===== Propriétaire et groupe ===== |
Dans un système unix chaque fichier appartient à un utilisateur (que l'on appelle son propriétaire) et à | Dans un système unix chaque fichier appartient à un utilisateur (que l'on appelle son propriétaire) et à | ||
un groupe. Chaque utilisateur fait aussi partie d'un groupe au moins (Voyez ce qu'affiche la commande « **groups** » | un groupe. Chaque utilisateur fait aussi partie d'un groupe au moins (Voyez ce qu'affiche la commande « **groups** » | ||
Ligne 129: | Ligne 142: | ||
sur les systèmes qui sont vraiment utilisés par plusieurs personnes. | sur les systèmes qui sont vraiment utilisés par plusieurs personnes. | ||
- | === Taille du fichier === | + | ===== Taille du fichier ===== |
Par défaut « **ls -l** » affiche la taille en octets. On peut obtenir un affichage plus parlant avec l'option | Par défaut « **ls -l** » affiche la taille en octets. On peut obtenir un affichage plus parlant avec l'option | ||
« **-h** » (comme **h**uman readable, c'est à dire lisible pour un humain): | « **-h** » (comme **h**uman readable, c'est à dire lisible pour un humain): | ||
Ligne 135: | Ligne 148: | ||
ls -lh ~/.bashrc | ls -lh ~/.bashrc | ||
</code> | </code> | ||
- | <file bash Affiche> | + | <file - Affiche> |
-rw-r--r-- 1 enicar enicar 1,5K avril 23 2014 /home/enicar/.bashrc | -rw-r--r-- 1 enicar enicar 1,5K avril 23 2014 /home/enicar/.bashrc | ||
</file> | </file> | ||
Ligne 144: | Ligne 157: | ||
alors que un méga = 1000 * 1000.</note> | alors que un méga = 1000 * 1000.</note> | ||
- | === Date de dernière modification === | + | ===== Date de dernière modification ===== |
Par défaut « **ls -l** » affiche la date de dernière modification. Chaque fichiers, possèdent | Par défaut « **ls -l** » affiche la date de dernière modification. Chaque fichiers, possèdent | ||
plusieurs horodatages. Il en existe 3 : | plusieurs horodatages. Il en existe 3 : | ||
Ligne 155: | Ligne 168: | ||
stat ~/.bashrc | stat ~/.bashrc | ||
</code> | </code> | ||
- | <file bash Affiche> | + | <file - Affiche> |
Fichier : « /home/enicar/.bashrc » | Fichier : « /home/enicar/.bashrc » | ||
Taille : 1436 Blocs : 8 Blocs d'E/S : 4096 fichier | Taille : 1436 Blocs : 8 Blocs d'E/S : 4096 fichier | ||
Ligne 166: | Ligne 179: | ||
</file> | </file> | ||
On voit les trois différentes dates. La date de dernière modification est changée lorsqu'on modifie | On voit les trois différentes dates. La date de dernière modification est changée lorsqu'on modifie | ||
- | les données du fichier. La date de dernier « changement » indique la date du dernier changement de droit, de propriétaire ou de groupe. La date de dernier accès est changé lors d'un accès en lecture et aussi quand l'une | + | 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 |
- | des dates de modification ou de changement est changée. | + | |
On peut obtenir les dates de derniers accès et de dernier changement avec « **ls -l** ». Une option | On peut obtenir les dates de derniers accès et de dernier changement avec « **ls -l** ». Une option | ||
Ligne 173: | Ligne 185: | ||
courtes sont aussi disponibles : | courtes sont aussi disponibles : | ||
^//mode//^option courte^affichage^ | ^//mode//^option courte^affichage^ | ||
- | |atime, access ou use|-a|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| | ||
+ | ===== Nom du fichier ===== | ||
+ | Nous avons ici : | ||
+ | <file bash> | ||
+ | /home/enicar/.bashrc | ||
+ | </file> | ||
+ | **ls** n'affiche pas le nom des fichiers avec le chemin en entier. C'est le shell qui a substitué le « **~** » en « /home/enicar ». | ||
+ | La même chose se passe quand on utilise un méta caractère du shell comme «** * **». | ||
+ | Pour vous en convaincre, comparez les sorties des deux commandes : | ||
+ | <code user> | ||
+ | ls * | ||
+ | echo * | ||
+ | </code> | ||
+ | Nous voyons que **ls** met en forme la sortie alors que **echo** fait juste un… écho ! | ||