LINUX

Fichiers et répertoires

Sommaire


 

Les fichiers
 

1.1 Les noms de fichiers

Le système de fichiers ext2fs de Linux admet des noms de fichiers ayant jusqu'à 256 caractères. L'extension du nom de fichier est facultative, elle est en général choisie en relation avec le logiciel utilisé. Par exemple, monprog.c s'applique a un source C. Linux distingue tous les caractères ASCII, par exemple les fichiers TUTU, Tutu et tutu sont distincts car majuscules (upcase) et minuscules (lowcase) ne sont pas ééts.
1.2 Les attributs des fichiers

Les fichiers peuvent avoir trois types d'attributs non mutuellement exclusifs:

read/write   Autorisé en lecture et écriture  (rw-)

read only    Autorisé en lecture seule  (r--)

exec         Exécutable  (--x)
Ces attributs sont définis pour trois types d'utilisateurs:
owner        Le propriétaire du fichier

group        Le groupe auquel appartient le propriétaire du fichier

others       Le reste du monde
sommaire
 

2 Les liens (links)
 

Le principe des links autorise un fichier à avoir plusieurs noms. On distingue deux types de links.
2.1 hardlink

Créé par la commande ln . Si nous avons un fichier nommé lotus, et que nous entrons la commande

  ln lotus iris
Nous pouvons maintenant accéder à ce fichier sous l'un ou l'autre nom et ces deux noms sont parfaitements équivalents. Il existe un seul exemplaire du fichier, la création d'un hard link ne prend pas de place sur le disque. Si nous effaçons lotus, nous pouvons encore accéder au fichier par iris. L'effacement du dernier link supprime le fichier. Tous les hard links d'un fichier doivent être sur le même disque physique, les links sur des répertoires peuvent générer des problèmes dans certains cas . Ainsi il est souvent préférable d'utiliser les 'symbolic links'.
2.2 symbolic link

Créé par la commande ln -s . Un symbolic link est aussi un alias de fichier, mais dans ce cas le fichier et les links sont distincts, si on efface le fichier les links n'ont plus de signification. Entrons la commande

  ln -s   lotus  iris
Si maintenant nous tapons
  ls -l
le link est clairement affiché en fin de ligne
   .................... lotus
   .................... iris  ->  lotus
Nous pouvons accéder au fichier sous l'un ou l'autre nom, par contre si nous effaçons lotus, iris devient un link invalide et n'autorise plus l'accès au fichier.
sommaire
 

3 Les fichiers spéciaux
 

En fait sous Linux tout est fichier, nous distinguerons principalement:
3.1 Les périphériques

Pour communiquer avec un périphérique on écrit dans un fichier spécial qui représente ce périphérique, par exemple /dev/fd0 pour écrire ou lire sur le floppy.
3.2 Les 'pipes' ou tubes

Ils sont utiles pour enchainer des commandes, par exemple : ls|lp , ls envoie les données dans l'entrée du pipe ( | ) et lp les reprend a la sortie, le répertoire ne sera pas affiché mais dirigé vers l'imprimante.
sommaire
 

4 L'arborescence des fichiers
 

Linux voit ses disques comme une arborescence unique. Une partition contient la racine ( / ) du système de fichiers, d'autres partitions, disque, floppy, peuvent être accrochés a des répertoires au moyen de la commande mount. On y accède ensuite de facon transparente, exactement comme a un fichier. La structure standard des répertoires est décrite par le Filesystem Hierarchy Standard (FHS), auquel se conforment la plupart des distributions Linux.

Cette arborescence comporte un certain nombre de répertoires et sous répertoires. Ils peut y avoir des variations d'une distribution à une autre, toutefois les répertoires / , /bin, /sbin, /dev, /etc/, /usr , /var , /proc, /root, sont toujours présents et constituent la base de la hiérarchie des fichiers.


/             Racine ou root: racine du système de fichiers, contient:  
              System.map, vmlinuz (Slackware), ou aucun fichier (Red Hat).

/bin          Binaires exécutables: programmes pour démarrer en 'single' et 
              commandes de base: ls, cat, rm, cp, sync ...

/boot         Kernels et boot maps; aussi vmlinuz dans les distributions 
              Red Hat et Mandrake. 

/dev          Descripteurs de périphériques (devices).

/etc          Fichiers de configuration, données pour les programmes: passwd, 
              group, inittab, fstab, profile, ..., avec ses différents sous-
              répertoires:

              /rc.d              Scripts 'run commands':  
                                 rc.S, rc.local, rc.keymap, ...

              /skel              Scripts de configuration 'users':  
                                 .inputrc, .bash_profile, ..., recopiés dans 
                                 le HOMEDIR d'un 'new user' à la création d'un nouveau 
                                 compte avec la commande 'adduser' .

              /vga               Configuration VGA et 'mouse', 
                                 libvga.config (Slackware)

              /X11               Configuration pour Xwindow, Xfree86, fvwm, ...

/home         Racine des répertoires personnels des 'users' 

/lib          'shared libraries' (libc.so, libtermcap.so, ...) Librairies
              partagées nécessaires aux programmes de démarrage situés 
              dans /bin et /sbin .

/mnt          Point de montage par la commande 'mount' , avec différents sous-
              répertoires: 

              /floppy            pour le floppy, par exemple /dev/fd0

              /cdrom             pour le CDROM

              /disk              pour un disque amovible

/root         Répertoire personnel de l'administrateur système, programmes 
              et scripts écrits par root pour le système.

/sbin         Programmes nécessaires au fonctionnement du système, 
              programmes executés par 'root' : mkfs, fsck, lilo, agetty

/tmp          Fichiers temporaires

/var          Fichiers changeant souvent: logs de l'activité système, queues,
              crontabs des users, games scores, ...  Ses principaux sous-
              répertoires sont:

              /lock              Fichiers de verrouillage: lock, LCK.. 

              /log               Journal de l'activité système

              /spool             Files d'attente 

              /spool/cron        Entrées de crontab pour l'automatisation 
                                 des tâches

              /spool/lpd         Fichiers en attente d'impression

              /spool/mail        Mailboxes et messages des 'users'

              /spool/smail       Fichiers en attente de distribution par 'smail'

/proc         Réservé au systéme, contient des infos sur l'état du systéme 
              et des process, il n'occupe aucune place sur le disque.

/lost+found   Strictement réservé au système,utilisé pour la 
              reconnection d'inodes en cas de crash pendant une création 
              de fichier.

/usr          Contient une arborescence complète de données que les 'users' peuvent
              se partager. /usr peut être le point de montage d'un disque 
              autre que celui ontenant la racine. Il peut être monté en 
              réseau et partagé entre plusieurs machines. Ses principaux 
              sous-répertoires sont:

              /include           Fichiers .h pour gcc : print.h, malloc.h, gpm.h

              /lib               Librairies utilisées par les programmes: 
                                 /kbd/keytables, consolefonts, ...

              /lib/X11           Lien symbolique vers /usr/X11R6/lib/X11

              /local             Programmes (/usr/local/bin), 
                                 Librairies (/usr/local/lib), 
                                 documentations (/usr/local/doc) 
                                 spécifiques au système ou au site. 
                                 On y installe les nouveaux programmes ou scripts.

              /bin               Répertoire général des programmes 
                                 utilisables sur le système

              /bin/X11           Lien symbolique vers /usr/X11R6/bin qui 
                                 contient les exécutables pour Xwindow

              /src               Sources des applications installées, 
                                 sources de Linux

              /man               Manuels en ligne: pages man

              /spool             Fichiers intermédiaires: cron, lpd, uucp, 
                                 mqueue, gestion des imprimantes

              /etc               Fichiers configuration pouvant être partagés 
                                 entre plusieurs machines, généralement liens
                                 symboliques vers /etc/...  

              /X11R6             Dédié à Xwindow, un lien symbolique est habi-
                                 tuellement créé vers /usr/X11, parfois 
                                 /usr/X386 ,depuis ce répertoire

              /X11R6/bin         Exécutables pour le système Xwindow

              /X11R6/lib         Librairies pour les programmes situés dans 
                                 /usr/X11R6/bin

              /X11R6/lib/X11     Librairies utiles au démarrage du serveur 
                                 Xwindow

              /X11R6/include/X11 Fichiers 'header' pour développement 
                                 d'applications X11 

/opt          Ce répertoire (installé par Red Hat 5.1 et SuSE 6.2 par exemple)
              a sa propre structure, chaque application y a son propre sous-
              répertoire lequel contient tout ce qui est nécessaire à son 
              exécution, par exemple /opt/kde contient: /bin, /lib, ...
sommaire
 

5 Permissions et droits d'accès
 

5.1 Les droits d'accès vus avec la commande ls -l

Exemple pour un répertoire

-:normal file,b:block_dev,c:char_dev,d:directory,l:link
| 
|            number of hard links               dirname 
|            |                                  |
drwxr-xr-x   2 f3wm   users   1024 Sep 30 11:42 wshop/
Exemple pour un fichier
normal file    owner  group     size            filename
|              |      |         |               |   
-rwxr-xr-x   1 f3wm   users  14943 Oct 01 16:46 jstarrc
  |  |  |                          |
  |  |  others:read,execute        last modif date,time
  |  group:read,execute
  owner:read,write,execute
5.2 Les bits de permission pour la commande chmod

On entend par 'user' un utilisateur potentiel qui justifie d'une ID(entification) par l'un des moyens suivants : password, su + password, setuid, ... Cela l'autorise à bénéficier des permissions plus ou moins étendues qui lui sont accordées.

  
    USER (u)          GROUP (g)         OTHERS (o)  
read write exec    read write exec     read write exec  
400   200   100    40    20    10      4     2     1   
valeurs en octal

 

Exemple: 755 = 400+200+100 + 40+10 + 4+1  = -rwxr-xr-x
                    |          |      |
                    |          |      others: read+execute (r-x)
                    |          group: read+execute (r-x)
                    user: read+write+execute (rwx)

5.3 Les permissions d'accès spéciales

Elles peuvent être attribuées seulement par 'root' ou par le 'owner' du fichier ou répertoire. Les valeurs en octal sont respectivement 4000, 2000, 1000 . Les bits setuid et setgid définissent ce que l'on appelle les droits d'accè étendus. Ceux-ci permettent, le temps d'un traitement, de donner à un 'user' les droits qui sont normalement ceux du 'owner' .

setuid      Commande  chmod u+s  ou chmod 4xxx. Le 'user' peut exécuter le
            fichier avec les permissions 'owner'. Par exemple pour le 
            programme /usr/bin/passwd  ls -l  affiche  -rwsr-xr-x,  x est remplacé 
            par s dans les permissions owner. Ainsi il est possible de changer son
            mot de passe bien que /usr/bin/passwd et /etc/passwd appartiennent
            à root. Quand le 'user' n'a pas la permission 'execute', alors  S 
            est affiché à la place de  s .

setgid      Commande  chmod g+s  ou chmod 2xxx. Le groupe peut exécuter le 
            fichier avec les permissions du 'owner'.  La commande  ls -l  
            affiche  -rwxr-sr-x, x  est remplacé par s dans les permissions 
            du groupe. Si le groupe n'a pas la permission 'execute', alors S  
            est affiché à la place de  s .

sticky bit  Commande  chmod u+t  ou  chmod 1xxx  . Le sticky bit concerne 
            principalement les répertoires. Si un 'user' a la permission 
            'execute' sur un répertoire, il peut faire un 'rm' de n'importe 
            quel fichier dont il n'est pas 'owner'. Avec le sticky bit 
            positionné, seulement le 'owner' du fichier et root peuvent 
            l'effacer.  La commande  ls -l  affiche  drwxr-xr-t  , x  est 
            remplacé par t  dans les permissions 'others' (autres).
Le bit d'accès spécial est placé en tête du nombre octal qui définit les permissions.

Exemple:

1755 = 1000 + 400+200+100 + 40+10 + 4+1  = drwxr-xr-t
        |          |          |      |
        sticky     |          |    others: read+execute 
                   |        group: read + execute (r-x)
                  user: read + write + execute (rwx)


sommaire
 


File : linux.html , Robert Billon, F3WM, 2000-03-01