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 19:12] enicar [La sortie de ls -l] |
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [20/03/2015 22:22] enicar [La sortie de ls -l] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Titre de Votre Tuto ====== | + | ====== Pérégrination autour de ls -l ====== |
* Objet : Aborder les droits unix et types de fichiers à travers la sortie de ls | * Objet : Aborder les droits unix et types de fichiers à travers la sortie de ls | ||
Ligne 5: | Ligne 5: | ||
* Commentaires : Cet article n'a qu'un seul but, apprendre | * Commentaires : Cet article n'a qu'un seul but, apprendre | ||
* 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:droits-unix|droit unix]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
Je propose d'aborder les concepts de droits unix et de type de fichier en prenant exemple | Je propose d'aborder les concepts de droits unix et de type de fichier en prenant exemple | ||
sur la sortie de la commande : | sur la sortie de la commande : | ||
- | [code=user] | + | <code user> |
ls -l | ls -l | ||
- | [/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/btrfs). | ||
Certaines de ces notions sont aussi vraies pour d'autres systèmes de fichiers unix, bien sûr ;) | Certaines 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 | ||
+ | pour entériner tout cela. | ||
===== La sortie de ls -l ===== | ===== La sortie de ls -l ===== | ||
Faisons : | Faisons : | ||
Ligne 26: | Ligne 30: | ||
</file> | </file> | ||
- | Décodons tout cela, de la gauche vers la droite : | + | Donc nous allons décoder tout cela, en exposant quelques notions, puis nous reviendrons sur |
+ | des exemples pratiques. | ||
+ | Nous avons, de la gauche vers la droite : | ||
^ champ ^ signification^ | ^ champ ^ signification^ | ||
|-rw-r--r--| Type de fichier, et permissions (c'est à dire droits)| | |-rw-r--r--| Type de fichier, et permissions (c'est à dire droits)| | ||
Ligne 41: | Ligne 47: | ||
<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 |
- | * 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 == | ||
Ligne 59: | Ligne 65: | ||
== Permissions == | == Permissions == | ||
- | Signification pour les trois champs des lettres « rwx » sont : | + | 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 | ||
+ | à une signification soit 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, | ||
+ | par exemple, du bit de lecture pour le propriétaire. | ||
+ | <note>J'expliquerai plus tard ce que sont les inodes</note> | ||
+ | |||
+ | Signification pour les trois champs des lettres « **rwx** » sont : | ||
^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| | |
+ | |||
+ | Les droits sont toujours dans le même ordre : lecture, écriture, exécution. | ||
+ | Quelques exemples éclaircirons les choses : | ||
+ | ^Code^Signification^ | ||
+ | |rwx|Les droits en lecture, en écriture et en exécution sont positionnés| | ||
+ | |---| Aucun droit| | ||
+ | |r--| Droit en lecture uniquement| | ||
+ | |r-x| Droit en lecture et en exécution| | ||
+ | |||
+ | |||
+ | À la place du x dans le champ rwx du propriétaire ou du groupe nous pouvons avoir : | ||
+ | ^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é ainsi que le droit en exécution| | ||
+ | |||
+ | Par exemple : | ||
+ | <code user> | ||
+ | ls -l bin/su | ||
+ | </code> | ||
+ | <file bash Nous affiche> | ||
+ | -rwsr-xr-x 1 root root 38868 nov. 19 22:03 /bin/su | ||
+ | </file> | ||
+ | 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. | ||
+ | |||
+ | Pour terminer avec les droits, le champ « rwx » des autres (c'est à dire ceux qui ne sont ni le propriétaire, | ||
+ | ni le groupe) peut prendre deux autres formes. À la place du x nous pouvons avoir. | ||
+ | ^code^Signification pour les répertoires^ | ||
+ | |T|Dans ce répertoire seul les propriétaires des fichiers peuvent supprimer ces fichiers. Le bit en exécution pour les autres n'est pas positionné| | ||
+ | |t|Même chose que précédemment, mais le bit en exécution pour les autres est positionné| | ||
+ | |||
+ | Dans linux, ce bit **t** n'est utilisé que pour les répertoires. Il est utilisé notamment pour | ||
+ | les répertoires temporaires, par exemple : | ||
+ | <code user> | ||
+ | ls -ld /tmp | ||
+ | </code> | ||
+ | <file bash Nous affiche> | ||
+ | drwxrwxrwt 9 root root 8192 mars 20 20:25 /tmp | ||
+ | </file> | ||
+ | Nous voyons bien que le bit **t** est positionné. | ||
+ | |||
+ | === Propriétaire et groupe === | ||
+ | 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** » | ||
+ | pour votre utilisateur). La plupart du temps un fichier appartient à un groupe dont fait partie le propriétaire | ||
+ | du fichier, mais ce n'est pas obligatoire. Aussi, il faut bien noter que le propriétaire et le groupe, même s'ils | ||
+ | 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 | ||
+ | sur les systèmes qui sont vraiment utilisés par plusieurs personnes. | ||
+ | |||
+ | === Taille du fichier === | ||
+ | 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): | ||
+ | <code user> | ||
+ | ls -lh ~/.bashrc | ||
+ | </code> | ||
+ | <file bash Affiche> | ||
+ | -rw-r--r-- 1 enicar enicar 1,5K avril 23 2014 /home/enicar/.bashrc | ||
+ | </file> | ||
+ | Nous obtenons la taille en kébi octets, dans ce cas mais pour des fichiers faisant plusieurs | ||
+ | méga octets, « **ls -lh** » nous donnera la taille en mébi octets. C'est très pratique pour se | ||
+ | faire une idée de la taille d'un fichier. | ||
+ | <note> un kébi = 1024, alors que un kilo = 1000. De même, un mébi = 1024 * 1024, | ||
+ | alors que un méga = 1000 * 1000.</note> | ||
+ | |||
+ | === Date de dernière modification === | ||
+ | Par défaut « **ls -l** » affiche la date de dernière modification. Chaque fichiers, possèdent | ||
+ | plusieurs horodatages. Il en existe 3 : | ||
+ | * Date de dernier accès (atime) | ||
+ | * Date de dernière modification (mtime) | ||
+ | * Date de dernier changement des droits (ctime) | ||
+ | J'ai écrit entre parenthèses l’abréviation qui est employé pour chacune. | ||
+ | On peut afficher ces trois dates à l'aide de la commande « **stat** » : | ||
+ | <code user> | ||
+ | stat ~/.bashrc | ||
+ | </code> | ||
+ | <file bash Affiche> | ||
+ | Fichier : « /home/enicar/.bashrc » | ||
+ | Taille : 1436 Blocs : 8 Blocs d'E/S : 4096 fichier | ||
+ | Périphérique : fe05h/65029d Inœud : 6293947 Liens : 1 | ||
+ | Accès : (0644/-rw-r--r--) UID : ( 1000/ enicar) GID : ( 1000/ enicar) | ||
+ | Accès : 2015-03-19 22:10:12.848911153 +0100 | ||
+ | Modif. : 2014-04-23 10:24:33.099434481 +0200 | ||
+ | Changt : 2014-04-23 10:24:33.133434850 +0200 | ||
+ | Créé : - | ||
+ | </file> | ||
+ | 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 | ||
+ | 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 | ||
+ | longue de la forme « **--time=//mode//** » permet de choisir quelle date affichée. Des options | ||
+ | courtes sont aussi disponibles : | ||
+ | ^//mode//^option courte^affichage^ | ||
+ | |atime, access ou use|-u|date de dernier accès| | ||
+ | |ctime ou status|-c|date de dernier changement| | ||
+ | |||
+ | |||