La ligne de commande pour les nuls - partie 2 - (attributs de fichier)

Publié le 21 janvier 2011 par Free_culture

Dans le précédent article, nous avons vu comment se situer dans l'arborescence, et naviguer de répertoires en répertoires. Maintenant, nous allons voir comment lister les fichiers d'un répertoire, et surtout comment interpréter les résultats.

Pour l'exemple, je vais aller dans mon répertoire ~/freeculture

Exemple simpliste

Pour lister le contenu du répertoire, je vais faire utiliser la commande ls.

guillaume@neo ~/freeculture $ ls

et j'obtiens

guillaume@neo ~/freeculture $ ls
articles  config.yaml  pelican  README  src

Malheureusement, je ne peux mettre la couleur dans cet exemple. Mais les différentes couleurs indique s'il s'agit d'un simple fichier, un dossier ou un répertoire.

Exemple plus complet

Nous allons essayer d'en savoir plus avec ls -l

total 12
lrwxrwxrwx 1 guillaume guillaume   41 21 janv. 15:17 articles -> /home/guillaume/Sauvegarde/blog/articles/
-rw-r--r-- 1 guillaume guillaume   76  2 déc.  02:08 config.yaml
lrwxrwxrwx 1 guillaume guillaume   38 21 janv. 15:14 pelican -> /home/guillaume/Programmation/pelican/
-rw-r--r-- 1 guillaume guillaume  179  2 déc.  02:08 README
drwxr-xr-x 3 guillaume guillaume 4096  2 déc.  02:08 src

Bon, ça commence à devenir barbare pour certains. On va commencer par la ligne la plus simple :

-rw-r--r-- 1 guillaume guillaume  179  2 déc.  02:08 README

et la décomposer en 7 parties :

-rw-r--r--
Nous donne deux informations, le type de fichier et les permissions d'accès.
1
Indique le nombre de liens physiques. Pour un fichier standart, il est à 1. Une valeur de trois pour un dossier indique une profondeur de trois répertoires.
guillaume
Nom du propriétaire du fichier
guillaume
Nom du groupe du fichier
179
Taille du fichier en octets
2 déc. 02:08
Date de dernière modification du fichier
README
Nom du fichier

Les permissions d'accès

Ça demande un peu plus d'explication. Il faut commencer par découper la ligne -rw-r--r-- en quatre parties :

- / rw- / r-- / r--

  • La première partie indique le type de fichier. - pour un fichier standart, d pour un répertoire -- directory, l pour un lien ;
  • La seconde indique les droits de l'utilisateur, ici guillaume ;
  • La troisième, les droits des utilisateurs du groupe, c'est à dire les utilisateurs étant dans le groupe guillaume ;
  • La quatrième, les droits des autres utilisateurs, c'est à dire ni guillaume, ni ceux qui appartiennent au groupe guillaume.

Les droits utilisateurs

Ils sont au nombre de trois :

  • r pour lecture -- read ;
  • w pour écriture -- write ;
  • x pour eXecution ;

et sont toujours dans cet ordre rwx. Si vous avez un tiret au lieu de la lettre, vous n'avez pas le droit en question.

Reprenons donc notre exemple du fichier README -rw-r--r--. Ce fichier est donc un fichier standart lisible et modifiable par moi même, et uniquement lisible pour les personne de mon groupe et ceux n'appartenant pas à mon groupe.

Cas du dossier src

Allez on reprend la ligne en question :

drwxr-xr-- 3 guillaume guillaume 4096 21 janv. 15:39 src

src est bien un répertoire (d), lisible, modifiable et executable par guillaume, lisible et executable pour les autres membres du groupe guillaume, et seulement lisible pous les autres.

Qu'est ce que l'éxécution d'un répertoire ? C'est la possibilité de rentrer dedans tout simplement. Un utilisateur n'appartenant pas à on groupe tentant de faire un cd src se verrai afficher ce message :

bash: cd: src/: Permission non accordée

Si par contre, les autres utilisateurs avaient la permission --x il pourraient rentrer dans le répertoire, mais un ls -l leur renverrait ce message :

ls: impoossible d'ouvrir le répertoire .: Permission non accordée

Cas du lien article

lrwxrwxrwx 1 guillaume guillaume   41 21 janv. 15:17 articles -> /home/guillaume/Sauvegarde/blog/articles/

Le l indique qu'il s'agit d'un lien. C'est a dire que le dossier articles vous emmenera dans le dossier /home/guillaume/Sauvegarde/blog/articles/ tout en restant dans ~/freeculture. Pratique si pour certaines raisons vous avez des fichiers un peu partout. Dans mon cas, le répertoire ~/Sauvegarde correspond à la sauvegarde quotidienne de mon serveur.

Comment savoir si le lien est un répertoire ou un fichier ? C'est très simple en fait. Si le lien fini par /, c'est un répertoire, autrement c'est un fichier.

Conclusion

Faire le point sur les attributs de fichiers me parraissait indispensable pour ne pas être perdu. Je vous parlerai des autres options de ls dans un autre article car certaines peuvent être intéressantes.