Le système de fichiers Linux
État :
Sommaire
Pré-requis
Avoir déjà installé Linux (voir Installation)
Objectifs
- Introduction aux répertoires de base et aux concepts issus de la FHS (Filesystem Hierarchy Standard) ou norme de la hiérarchie des systèmes de fichiers
- Formater une partition en EXT2 ou EXT3
- Contrôler l'espace libre par périphérique ou répertoire
- Comprendre les droits sur les fichiers et les répertoires dans le monde UNIX
La structure du système de fichiers
Un système de fichiers est similaire à une arborescence. La racine de l'arborescence est au sommet et les feuilles en dessous.
Comme nous l'avons déjà vu, vous devez donner un point de montage aux partitions que vous créez. En général, on le fait au moment de l'installation. Pour mieux comprendre où se trouvent les choses, jetons un œil à l'arborescence typique d'un système de fichiers Linux.
Au sommet de l'arborescence, on trouve la racine (root) : /. C'est un peu comme le C:\ sous DOS, sauf que C:\ est également le premier périphérique, alors que la racine peut correspondre à n'importe quel périphérique de votre système.
Répertoires de base
/ <--- racine | bin dev etc lib | mnt proc sbin | | | | | | | | ----------------------------------------------- | | | | | | | | boot home root tmp usr /usr/local opt var Répertoires dont le point de montage peut être un périphérique autre que celui de la racine : boot home root tmp usr /usr/local opt var
Les répertoires de base sont les premiers sous-répertoires sous la racine. Sur un système de type RedHat, ils sont installés par un paquet rpm du nom de filesystem :
$ rpm -ql filesystem
Au démarrage du système, le noyau monte la partition racine (/). Pour pouvoir monter et vérifier les autres partitions et systèmes de fichiers, un certain nombre de programmes comme fsck, insmod ou mount doivent être accessibles.
Remarque : les répertoires /dev, /bin, /sbin, /etc et /lib doivent être sur la partition racine. De plus, la racine doit contenir un répertoire /proc vide. Il est utilisé par le noyau pour informer sur le statut du système d'exploitation (processus, statistiques d'utilisation de la mémoire, etc.).
Rôle des répertoires de base
- /bin et /sbin : contient les binaires nécessaires au démarrage et les commandes essentielles
- /dev : fichiers périphériques ou fichiers spécifiques
- /etc : fichiers et répertoires de configuration spécifiques à la machine
- /lib : bibliothèques partagées pour les binaires de /bin et /sbin. Contient également les modules du noyau.
- /mnt ou /media : points de montage pour les systèmes de fichiers externes
- /proc : informations du noyau. En lecture seule sauf pour /proc/sys.
- /boot : contient le noyau Linux, le System.map (carte des symboles du noyau) et les chargeurs d'amorçage secondaires.
- /home (facultatif) : répertoires utilisateurs, avec, en général, une copie du contenu de /etc/skel.
/root : répertoire de l'utilisateur root.
- /tmp : fichiers temporaires.
/usr : User Specific Ressource. Contenu essentiellement statique et partageable. NdT : /usr est composé de sous-répertoires bin, sbin, lib, slib et autres qui contiennent l'essentiel des programmes et bibliothèques de votre système non essentielles ni nécessaires au démarrage.
- /usr/local ou /opt : programmes et bibliothèques supplémentaires. NdT : en général, c'est dans ces répertoires que l'on place les programmes qui ne font pas partie des paquets des distributions.
- /var : données variables comme les spool ou les journaux. Les sous-répertoires peuvent être soit partageables (comme /var/spool/mail) soit non partageables (comme /var/log).
/var/www, /var/ftp ou /srv : pages web ou fichiers ftp anonymes.
Formatage et cohérence des systèmes de fichier
Il est nécessaire de créer un système de fichiers pour organiser les données sur une partition. La procédure d'installation vous demande quel type de système de fichier vous souhaitez utiliser.
Vous avez un choix important de système de fichiers. Le format ext2, aussi connu comme le format natif pour Linux, est utilisé par défaut. Pour les programmes d'installation plus récents, ext3 (NdT et même aujourd'hui ext4 !) est utilisé par défaut. Ext3 est en fait un système ext2 journalisé.
Pour la mémoire paginée (swap), vous n'avez pas le choix, vous devez utiliser le système de fichiers swap.
Ext2
Regardons ext2 d'un peu plus prêt. Ext2 est constitué de blocs de 1024 octets (par défaut). Sans aller trop loin dans les détails, il y a 3 types de blocs : * les superblocs : répétés tous les 8193 blocs, les superblocs contiennent des informations sur la taille des blocs, les inodes libres, le dernier montage, etc. * les inodes : contient des pointeurs sur les blocs de données. Les 12 premiers blocs de données sont accédés directement. Si les données vont au-delà des 12 Ko, alors les inodes indirectes font le relai. * les blocs de données : correspondant aux fichiers ou aux répertoires, ils contiennent les données.
Outils de formatage
Les systèmes de fichiers gérés par le noyau nous permettent de lire les disques déjà formatés. Pour créer des systèmes de fichiers sur un système en fonction, nous devons installer et utiliser les outils correspondants.
Pour ext2, le programme de formatage est mkfs.ext2 ou mke2fs. De la même façon, pour le système de fichiers de Silicon Graphics xfs, vous utiliserez mkfs.xfs que vous devrez sans doute installer.
Le programme mkfs agit comme une interface pour les outils spécifiques à chaque système de fichier. Sa syntaxe est :
mkfs –t <type de système> <périphérique>
Vous noterez de nouveau qu'ext3 est un système de fichiers ext2 auquel on a ajouté la journalisation (voir plus loin les exercices).
Exemple 1 : formatage en jfs
mkfs -t jfs /dev/hda12
Exemple 2 : formatage en ext2fs
mke2fs /dev/hda11 [or mkfs –t ext2 /dev/hda11]
Cohérence des systèmes de fichiers
Vous devez utiliser fsck quand le système de fichiers est endommagé ou corrompu, mais cela nécessite au minimum de démonter la partition ou de la monter en lecture seule.
Comme mkfs, fsck se comporte comme une interface qui détecte automatiquement le type de système de fichiers de la partition. Ensuite, les programmes fsck.ext2, fsck.ext2, etc. sont appelés. Comme EXT2 est le système de fichiers principal de Linux, il existe une commande e2fsck qui ne gère que ce système de fichiers.
Vous pouvez préciser le type de système de fichiers en utilisant la syntaxe suivante :
fsck –t <type de système> <périphérique>
Exemple : vérification d'un système de fichiers reiserfs sur le périphérique /dev/sdb10 :
fsck –t reiserfs /dev/sdb10 fsck.reiserfs /dev/sdb10
Commandes de déboguage des systèmes de fichiers
Les commandes debugs et dumpe2fs sont rarement utilisées mais elles peuvent être utiles pour vous donner des informations de bas niveau sur un système de fichiers ext2 ou ext3.
debugfs [ -b tailledebloc ] [ -s superbloc ] [ -f cmd_file ] [ -R request ] [ -V ] [ [ -w ] [ -c ] [ -i ] [ périphérique ] ]
Le programme debugfs est un débogueur de système de fichiers interactif. Il peut être utilisé pour examiner ou modifier l'état d'un système de fichiers ext2/3.
Une fois dans le shell de debugfs, vous pouvez utiliser les commandes internes pour parcourir l'arborescence, examiner les données d'inode, supprimer des fichiers, créer des liens, récupérer le journal d'ext3, etc. Cette commande est très puissante et doit être utilisée avec précaution, en général seulement pour essayer d'avancer alors que fsck a échoué.
dumpe2fs [ -bfhixV ] [ -ob superbloc ] [ -oB tailledebloc ] <périphérique>
dumpe2fs affiche les informations des superblocs et des groupes de blocs pour le système de fichiers sur le périphérique.
dumpe2fs /dev/hda1 dumpe2fs 1.35 (28-Feb-2004) Filesystem volume name: /boot1 Last mounted on: <not available> Filesystem UUID: d741042c-3eaf-49ee-94c1-7dd8c5459764 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 25584 Block count: 102280 Reserved block count: 5114 Free blocks: 80564 Free inodes: 25537 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 1968 Inode blocks per group: 246 Filesystem created: Sat May 7 10:40:51 2005 Last mount time: Sun May 29 04:08:01 2005 Last write time: Sun May 29 04:08:01 2005 Mount count: 10 Maximum mount count: -1 Last checked: Sat May 7 10:40:51 2005 Check interval: 0 (<none>) Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: tea Directory Hash Seed: 50108791-6a0a-41ff-9608-0485c993eaf9 Journal backup: inode blocks Group 0: (Blocks 1-8192) Primary superblock at 1, Group descriptors at 2-2 Block bitmap at 259 (+258), Inode bitmap at 260 (+259) Inode table at 261-506 (+260) 0 free blocks, 1942 free inodes, 2 directories Free blocks: Free inodes: 27-1968 [....]
Contrôle de l'utilisation des disques
Avec mount et df
Ces deux outils fonctionnent au niveau des périphériques et non pas au niveau des répertoires. Les commandes mount et umount mettent à jour la liste des systèmes de fichiers montés dans /etc/mtab.
mount sans option affiche la liste des systèmes de fichiers actuellement montés, qui est équivalente au contenu de /etc/mtab. Le noyau garde également une trace des systèmes de fichiers montés dans /proc/mounts.
df' affiche également les systèmes de fichiers montés mais il affiche également l'espace disque utilisé et disponible. Par défaut, l'espace est donné en blocs de 1K.
df -h Filesystem Size Used Avail Use% Mounted on /dev/hda9 289M 254M 20M 93% / /dev/hda2 23M 7.5M 14M 35% /boot none 62M 0 61M 0% /dev/shm /dev/hda5 1.4G 181M 1.1G 13% /share /dev/hda7 787M 79M 669M 11% /tmp /dev/hda3 4.3G 3.4G 813M 81% /usr /dev/hda6 787M 121M 627M 17% /var //192.168.123.2/share 12G 8.8G 3.7G 71% /mnt/smb
Utilisation de du
Cette commande affiche l'utilisation du disque, mais cette fois en se basant sur les répertoires, et non plus les périphériques. Vous noterez que du ne peut pas afficher l'espace disponible sur le disque puisque cette information n'est accessible qu'au niveau du périphérique.
La commande suivante affiche la taille utilisée pour /etc en utilisant une unité compréhensible par les humains (-h) et n'affiche que le total (-s : summary).
du -sh /etc 62M /etc/
Droits d'accès et attributs des fichiers
Changement des permissions et des propriétaires
Exemple :
-rw-rw-r-- 1 utilisateur groupe 13281 2007-03-09 11:00 STATS.ods /\ /\ /\ chmod chown chown/chgrp
Comme vous pouvez le voir dans l'exemple précédent, chmod est utilisé pour modifier les permissions. Il y a trois types de propriétaire pour chaque fichier ou répertoire :
- u : un utilisateur existant dans /etc/passwd
- g : un groupe existant valide de /etc/group
- o : les autres
Exemple :
-rw-rw-r-- 1 jade sales 24880 Oct 25 17:28 libcgic.a
Modification des permission avec chmod :
chmod g=r,o-r libcgic.a chmod g+w libcgic.a
Modification de l'utilisateur et du groupe avec chown et chgrp :
chown root libcgic.a chgrp apache libcgic.a
Remarque : Les trois outils chmod, chown et chgrp ont l'option très pratique -R qui applique les modifications récursivement sur les répertoires et fichiers indiqués.
Notation symbolique et octale
Les permissions sont soit la lecture read=r, l'écriture write=w et l'exécution execute=x. Voici les valeurs octales correspondant à ces permissions :
Symbolique |
Octal |
Binaire |
r |
4 |
'100' |
w |
2 |
'010' |
x |
1 |
'001' |
Ces permissions s'appliquent à l'utilisateur, au groupe et aux autres. Un élément a un ensemble de 3 permissions groupées pour chacune de ces catégories.
Exemple : Interprétation d'une permission 755 ou -rwxr-xr-x :
utilisateur : rwx, c'est à dire 4+2+1 = 7
groupe r-x, c'est à dire 4+1 = 5
autres r-x, c'est à dire 4+1 = 5
Les permissions standard
Les systèmes UNIX créent des fichiers et répertoires avec des permissions standard comme suit :
Fichiers | 666 |
-rw-rw-rw- |
Répertoires | 777 |
-rwxrwxrwx |
Umask
Chaque utilisateur peut définir un umask qui altère la permission standard. Pour obtenir les permissions d'un fichier, on soustrait (*) la valeur octale du umask à la valeur octale de la permission standard. Cette permission n'a pas de nom mais on pourrait l'appeler la permission effective.
(*) Même si la soustraction fonctionne dans la plupart des cas, vous devriez noter que la formule utilisée pour calculer les permissions est :
Permissions finales = Permissions standard ET(logique) NON umask
Sur les systèmes où les utilisateurs appartiennent à différents groupes, la valeur du umask peut être 002. Pour les systèmes où tous les utilisateurs sont dans le groupe users, le umask a toutes les chances d'être fixé à 022.
Le SUID
On peut assigner une permission spéciale à un programme de façon à ce qu'il soit toujours lancé en tant que le propriétaire du fichier. On appelle cette permission SUID, ce qui signifie « set user ID » (définition de l'identifiant utilisateur). La valeur symbolique pour cette permission est s et la valeur numérique 4000.
Les outils d'administration peuvent avoir le SUID défini de façon à permettre aux utilisateurs de modifier des fichiers système.
Par exemple, la commande passwd peut être lancée par n'importe quel utilisateur pour lui permettre de changer son mot de passe, qui sera écrit soit dans /etc/passwd, soit dans /etc/shadow. Pourtant, ces deux fichiers appartiennent à l'utilisateur root et leurs permissions respectives sont 644 et 600.
On résout ce problème en plaçant le bit SUID sur la commande passwd, ce qui la force à être lancée en tant que root et lui permet de modifier les fichiers /etc/passwd et /etc/shadow.
Le SUID sur passwd :
ls -l $(which passwd) -r-s--x--x 1 root root 18992 Jun 6 2003 /usr/bin/passwd
Remarque : dans la commande précédente, le SUID est affiché dans sa forme symbolique. Vous pouvez obtenir plus d'information sur un fichier en utilisant stat et en regardant la représentation octale des permissions :
stat /usr/bin/passwd File: `/usr/bin/passwd' Size: 18992 Blocks: 40 IO Block: 4096 regular file Device: 305h/773d Inode: 356680 Links: 1 Access: (4511/-r-s--x--x) Uid: ( 0/ root) Gid: ( 0/ root)
Attention : La permission SUID pose souvent des problèmes de sécurité. En voici un exemple :
- Un utilisateur cherche à lire les mails du root. D'abord, il change sa variable d'environnement MAIL :
export MAIL=/var/spool/mail/root
- Ensuite, il lance la commande mail :
mail /var/spool/mail/root: Permission denied
Ça ne fonctionne pas, ça aurait été trop facile ! Mais si un administrateur s'est laissé convaincre de placer le bit SUID sur la commande mail, les commandes précédentes permettraient à n'importe quel utilisateur de lire les mails de n'importe quel autre (root compris) !
Les exemples suivants sont également dangereux, pourquoi ?
chmod 4755 /bin/cat chmod u+s /bin/grep
Le SGID
Le SGID est une permission similaire au SUID mais pour le groupe. Sa valeur symbolique est s et sa valeur octale est 2000.
Si vous placez le SGID sur un répertoire, les fichiers qui y seront ensuite créés appartiendront au groupe propriétaire de ce répertoire. Il n'est donc pas nécessaire d'utiliser newgrp pour modifier le groupe du processus utilisé pour la création du fichier (voir l'exercice plus loin).
Exemples :
chmod 2755 /home/data chmod g+s /bin/wc
Le sticky bit
La permission sticky bit avec la valeur 1000 a l'effet suivant :
appliqué à un répertoire, il empêche les utilisateurs de supprimer les fichiers dont ils ne sont pas propriétaires (idéal pour un répertoire partagé par un groupe) (NdT : le sticky bit est typiquement utilisé pour /tmp).
appliqué à un fichier, il était utilisé pour charger le fichier en mémoire pour en accélérer les futurs accès ou exécutions. La valeur symbolique pour un exécutable est t, T pour un fichier non exécutable. Aujourd'hui comme le cache des systèmes de fichier est plus courant et plus performant, le sticky bit pour les fichiers tend à ne plus être supporté.
Exemples :
chmod 1666 /data/store.txt chmod o+t /bin/bash
Les attributs sur les fichiers
Au côté des permissions standard, il existe un autre système pour modifier la façon dont on peut accéder à un fichier. Les attributs de fichiers ne s'affichent pas avec la commande ls mais avec la commande lsattr. On utilise la commande chattr pour paramétrer ou supprimer ces attributs.
Les attributs suivants existent. Veuillez noter les cas d'utilisation : * « A » : Quand on accède à un fichier avec l'attribut A, sa valeur atime (temps d'accès) n'est pas modifiée. Ceci évite un certain nombre d'accès disques, ce qui est plutôt pratique pour des fichiers temporaires. Attention cependant, certains outils comme tmpwatch se basent sur la valeur du atime pour déterminer l'utilisation récente d'un fichier, donc si le atime n'est pas mis à jour l'état du fichier sera mal interprété.
- « a » : L'accès en écriture aux fichiers avec l'attribut « a » est limité en ajout (append). Seul le super utilisateur ou un processus disposant de la capacité CAP_LINUX_IMMUTABLE peut définir ou supprimer cet attribut. L'utilisation la plus évidente est pour les fichiers journaux système, pour empêcher un intrus de retirer les traces de leur passage. Cependant, vous devriez garder à l'esprit qu'un intrus a besoin des droits root pour éditer ces fichiers journaux. Par conséquent, s'il les a, il peut retirer l'attribut « a », modifier les fichiers puis rétablir l'attribut « a ».
- « c » : un fichier avec l'attribut « c » est automatiquement compressé par le noyau. Vous accédez à vos données décompressées en lecture, et l'écriture sur le fichier compresse les données avant de les stocker sur le disque. Note : Même si l'attribut est défini sur un fichier et qu'il est affiché avec la commande lsattr, il n'est pas traité par les pilotes du noyau pour Ext2 ou Ext3.
- « D » : les modifications sur un répertoire avec l'attribut « D » sont écris de façon synchrone sur le disque. C'est l'équivalent de l'option dirsync de mount mais ici appliquée à un sous-ensemble de fichiers. Avec cet attribut, les opérations suivantes sont synchrones dans le répertoire : create, link, unlink, symlink, mkdir, rmdir, mknod et rename.
- « d » : un fichier avec l'attribut « d » ne sera pas sauvegardé quand la commande dump sera lancée.
- « i » : un fichier avec l'attribut « i » (immutable = immuable) ne peut pas être modifié. Il est impossible de le supprimer ou de le renommer, ni de créer un lien vers ce fichier, ni d'écrire dans le fichier. Seul le superutilisateur ou un processus ayant la capacité CAP_LINUX_IMMUTABLE peut définir ou retirer cet attribut.
- 'j' : les données d'un fichier ayant l'attribut « j » sont inscrites dans le journal ext3 avant d'être inscrites dans le fichier si le système de fichiers est monté avec l'option « data=ordered » ou « data=writeback ». Lorsque le système de fichiers est monté avec l'option « data », l'attribut est sans effet puisque les données de tous les fichiers sont écrites dans le journal. Seul le super utilisateur ou un processus ayant la capacité CAP_SYS_RESSOURCE peut définir ou retirer cet attribut.
- « s » : lorsqu'un fichier avec l'attribut « s » est supprimé, ses blocs sont remis à zéro et réinscrits sur le disque. Note : comme pour l'attribut « c », cet attribut n'est pas traité par les pilotes de système de fichiers ext2 et ext3.
- « S » : les données d'un fichier ayant l'attribut « S » sont inscrites sur le disque de façon synchrones. C'est l'équivalent de l'option de « sync » de mount appliquée à un sous-ensemble de fichiers. Cet attribut est généralement utilisé pour les fichiers dits « cooked files », les fichiers dans lesquels les serveurs de bases de données stockent leurs informations. Ainsi, on contourne l'ensemble des deux systèmes de cache des pilotes du noyau et le cache de la base de données, optimisé, écrit directement sur le disque.
- « T » : l'attribut « T » n'est disponible qu'à partir des noyaux 2.6.x. Son but est d'indiquer le sommet de la hiérarchie, fonctionnalité utilisée par l'algorithme « Orlov block allocator ». Les nouvelles règles d'allocation de fichiers sur les systèmes de fichiers ext2 et ext3 rapprochent les sous-répertoires de façon à accélérer les accès sur une arborescence, si l'arborescence a été créée avec un noyau 2.6.
- « t » : le dernier bloc d'un fichier avec l'attribut « t » ne pourra pas être partagé avec d'autres fichiers (pour les systèmes de fichiers qui gèrent le « tail-merging »). C'est nécessaire pour des applications comme LILO qui accèdent directement au système de fichier et qui ne sont pas capables d'interpréter les blocs partagés. Note : au moment de l'écriture de la documentation, ext2 et ext3 ne font pas, en dehors de rustines très expérimentales, de « tail-merging ».
- « u » : lorsqu'on supprime un fichier ayant l'attribut "u", son contenu est sauvegardé. Ainsi, l'utilisateur peut demander sa récupération. Encore un attribut qui est géré par tout sauf le noyau.
Exemple :
# lsattr testfile ------------- testfile # chattr +i testfile # lsattr testfile ----i-------- testfile # rm -f testfile rm: cannot remove `testfile': Operation not permitted # chattr -i testfile # rm -f testfile # ls testfile ls: testfile: No such file or directory
Résumé et exercices
Questions de révision
Oui ou Non
- Le répertoire /usr doit toujours se trouver sur la partition racine puisqu'il contient des données essentielles au démarrage
- Il est possible que certaines opérations ne fonctionnent pas si le répertoire personnel d'un utilisateur se trouve ailleurs que dans /home
- La création d'un système de fichiers sur une partitin détruit toujours toutes les données de cette partition
Glossaire
Terme |
Description |
Répertoires de base |
Sous-répertoires se trouvant directement sous la racine |
Bloc de données |
Bloc utilisé pour stocker les données sur le système de fichiers. Ils sont référencés par les inodes |
Sous-répertoires de la racine essentiels |
Répertoires devant se trouver sur le système de fichiers racine pour le démarrage du système |
ext2 |
Second extended file system : système de fichiers par défaut sur Linux (NdT : aujourd'hui remplacé par Ext3 puis Ext4) |
ext3 |
Third extended filesystem : évolution de ext2 avec les mêmes fonctionnalités plus un système de journalisation |
Permissions sur les fichiers |
Attributs stockés dans l'inode du fichier pour les droits en lecture, écriture et exécution attribués au propriétaire (u), au groupe (g) ou aux autres (o) ainsi que des permissions plus avancées comme le SUID, le SGID et le "sticky bit" |
FHS |
Filesystem Hierarchy Standard (« norme de la hiérarchie des systèmes de fichiers »). Ce standard consiste en un ensemble de règles et de recommandations pour le placement des fichiers et des répertoires sur les systèmes de la famille UNIX. L'objectif de ces règles est d'améliorer l'interopérabilité des applications, outils d'administration ou de développement, et des scripts, ainsi que d'uniformiser la documentation sur ces systèmes. Voir http://www.pathname.com/fhs/ |
Inode |
Bloc utilisé pour stocker les informations sur les fichiers, répertoires et les liens symboliques. La localisation des données des fichiers, les permissions, l'horodatage et le type de fichier (répertoire, fichier ou lien symbolique) se trouvent dans l'inode. |
Orlov block allocator |
Algorithme qui améliore les performances des systèmes de fichiers EXT2/EXT3. Disponible uniquement sur les noyaux 2.6. Cette fonctionnalité a été portée de BSD puis améliorée par Alexander Viro, Andrew Morton, et Ted Ts'o. Son auteur originel est Grigory Orlov. Cette fonctionnalité peut être activée avec la commande chattr sous Linux |
Superbloc |
Le superbloc est lu au montage du système de fichiers. Il contient différentes informations comme la taille des blocs du système de fichiers (1024 par défaut), le nombre d'inodes libres, le nombre de montage et le nombre maximum de montages utilisés pour déterminer si une vérification du système de fichiers doit être lancée |
Fichiers
Fichier |
Description |
/etc/mtab |
Fichier utilisé par mount pour conserver la trace des périphériques montés |
/proc/mounts |
Fichier utilisé par le noyau pour conserver la trace des périphériques montés |
Commandes
Commande |
Description (apropos) |
chattr |
Modifier les attributs des fichiers d'un système de fichiers Linux |
chgrp |
Changer le groupe propriétaire d'un fichier |
chmod |
Changer les permissions d'un fichier |
chown |
Modifier le propriétaire et le groupe d'un fichier |
df |
Indiquer l'espace occupé par les systèmes de fichiers |
du |
Évaluer l'espace disque occupé par des fichiers |
e2fsck |
Vérifier un système de fichiers Linux ext2/ext3/ext4 |
fsck |
Vérifier et réparer un système de fichiers Linux |
lsattr |
Afficher les attributs des fichiers sur une partition Linux de type ext2 |
mke2fs |
Créer un système de fichiers ext2/ext3/ext4 |
mkfs |
Créer un système de fichiers Linux |
mount |
Tous les fichiers accessibles sur un système de fichiers Unix sont rangés sur une arborescence unique, la hiérarchie des fichiers dont la racine est /. Ces fichiers peuvent être répartis sur différents périphériques. La commande mount est utilisée pour attacher le système de fichiers d'un périphérique sur l'arborescence. À l'inverse, la commande umount détache ce système de fichiers de l'arborescence |
umask |
Outil utilisé pour configurer le masque de création de mode de fichier - voir help umask |
Travaux pratiques
Systèmes de fichiers
Créez deux nouvelles partitions de plus de 50 Mo sur /dev/hda (ou /dev/sda) en utilisant fdisk.
- Conseils :
Pour créer une nouvelle partition, tapez n. Le type de partition par défaut est 83 (Linux)
Pour écrire la table des partitions, tapez w.
- Le système doit lire votre nouvelle partition : redémarrez votre ordinateur !
- Conseils :
Formatez la première partition en ext2 et la seconde en reiserfs.
Conseil : Le programme mkfs est une interface à mkfs.ext2 ou mkfs.reiserfs, etc. Sa syntaxe est :
mkfs –t <type_de_système> <périphérique>
Créez deux répertoires dans /mnt et montez vos deux partitions
mkdir /mnt/ext2 mkdir /mnt/reiserfs
- Vérifiez l'état de votre système :
Utilisez mount pour lister les périphériques montés. Les permissions configurés dans fstab sont également visibles.
Utilisez df pour voir le nombre total de blocs utilisés. L'option -k converti le nombre de blocs en kilo-octets (taille par défaut pour un bloc sur ext2)
Lancez fsck sur l'un des deux systèmes de fichiers créés. Le programme fsck est une interface à fsck.ext2, fsck.ext3, fsck.reiserfs, etc. Sa syntaxe est :
fsck <périphérique>
Aller plus loin : passer de ext2 à ext3
Passez le périphérique monté sur /mnt/ext2 en ext3 avec tune2fs, qui ajoutera un journal au système de fichiers existant. Assurez-vous d'adapter votre fichier /etc/fstab pour prendre en compte cette modification.
tune2fs –j /dev/hdaN
À ce stade, le système a ajouté un journal à la partition /dev/hdan, qui est devenue une partition ext3. Ce procédé est non-destructif et réversible. Si vous montez un système de fichiers ext3 en ext2, le fichier .journal est écrasé. Vous pouvez le recréer avec tune2fs.
Permissions sur les fichiers
Connectez vous en utilisateur normal (pas root). Créez un fichier en utilisant touch et vérifiez que les permissions effectives sur ce fichier sont 664.
Changez le umask en 027. Si vous créez un nouveau fichier, quelles seront les permissions effectives sur ce fichier ? Où configure-t-on la valeur du umask ? Suivant les systèmes, ce sera dans /etc/profile ou /etc/bashrc.
- Créez deux utilisateurs :
useradd util1 useradd util2
Initialisez leurs mots de passe avec passwd util1 et passwd util2
Créez le groupe ventes
groupadd ventes
- Ajoutez les utilisateurs au groupe ventes
gpasswd -a util1 ventes gpasswd -a util2 ventes
Créez un répertoire /news avec comme groupe propriétaire ventes et en lecture/écriture pour ce groupe.
mkdir -m 770 /news ; chown .ventes /news
- Placez le GID sur le répertoire /news
chmod g+s /news
Quelles sont les permissions symboliques (-rwxr-xr-x) sur /news ? (Utilisez ls -ld /news)Vérifiez qu'un membre du groupe ventes n'a pas besoin de taper "newgrp ventes" pour créer des fichiers avec les bonnes permissions. Les membres du groupe ventes peuvent-ils modifier n'importe quel fichier de ce répertoire ?
Ajoutez le sticky-bit sur /news. Vérifiez que seuls les propriétaires peuvent modifier leurs fichiers dans ce répertoire. Comment se présentent les permissions dans /news ?
En tant que root, placez le SUID root sur xeyes. Connectez-vous en utilisateur normal et vérifiez que le programme est lancé par le root.
chmod u+s `which xeyes`
Connectez-vous en utilisateur normal et lancez xeyes, puis :
ps aux | grep xeyes
Le programme devrait être lancé par root.
Réponses aux questions
Non : aucun programme placé dans /usr n'est nécessaire au démarrage du système
Non : on peut placer le répertoire personnel d'un utilisateur n'importe où sur le système
Oui
Page consultée 506 fois