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 mondesommaire
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 irisNous 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'.
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 irisSi maintenant nous tapons
ls -lle link est clairement affiché en fin de ligne
.................... lotus .................... iris -> lotusNous 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.
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
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.sommaire. /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, ...
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,execute5.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)