Comment comprendre la disposition du système de fichiers dans un VPS Linux
Introduction
Si vous débutez avec Linux et les systèmes d'exploitation de type Unix, les méthodes de base pour interagir et naviguer dans votre système d'exploitation peuvent sembler alambiquées et déroutantes. Un domaine avec lequel les nouveaux utilisateurs se débattent est de savoir comment donner un sens à la façon dont le système de fichiers est structuré.
Dans cet article, nous aborderons les différentes parties du système de fichiers Linux standard. Nous explorerons certains des répertoires les plus intéressants et où rechercher divers composants dans votre environnement de serveur.
À des fins de démonstration, nous utiliserons un serveur Ubuntu 12.04. D'autres distributions Linux implémentent les choses de manière légèrement différente, donc si vous suivez et remarquez une différence avec votre propre système, consultez la documentation de votre distribution.
Quelques brèves notes sur l'historique de la disposition du système de fichiers Linux
Linux hérite bon nombre de ses concepts d'organisation du système de fichiers de ses prédécesseurs Unix. Dès 1979, Unix établissait des normes pour contrôler la façon dont les systèmes conformes organisaient leurs fichiers.
La Linux Filesystem Hierarchy Standard, ou FHS en abrégé, est une norme prescriptive maintenue par la Fondation Linux qui établit la structure organisationnelle que les distributions Linux doivent respecter pour l'interopérabilité, la facilité d'administration et la capacité à implémenter des applications inter-distributions de manière fiable.
Une chose importante à mentionner lorsqu'il s'agit de ces systèmes est que Linux implémente à peu près tout sous forme de fichier. Cela signifie qu'un fichier texte est un fichier, un répertoire est un fichier (simplement une liste d'autres fichiers), une imprimante est représentée par un fichier (les pilotes de périphérique peuvent envoyer tout ce qui est écrit dans le fichier de l'imprimante à l'imprimante physique), etc. .
Bien qu'il s'agisse dans certains cas d'une simplification excessive, cela nous renseigne sur l'approche que les concepteurs du système ont encouragée : passer du texte et des octets dans les deux sens et être capable d'appliquer des stratégies similaires pour éditer et accéder à divers composants.
Dans cet article, nous ne suivrons pas exactement la spécification, car les distributions s'écartent souvent de la norme réelle. Au lieu de cela, nous allons vérifier un serveur Ubuntu 12.04 pour trouver la structure de répertoire réelle qui a été implémentée. Ceci est beaucoup plus utile pour l'utilisateur moyen.
Avant de vous plonger dans la disposition du système de fichiers, vous devez connaître quelques notions de base sur la façon de naviguer dans un système de fichiers à partir de la ligne de commande. Nous couvrirons ici le strict minimum pour vous mettre sur pied.
Orientez-vous
La première chose que vous devez faire est de vous orienter dans le système de fichiers. Il existe plusieurs façons de procéder, mais l'une des plus élémentaires consiste à utiliser la commande pwd
, qui signifie « imprimer le répertoire de travail » :
pwd
/root
Cela renvoie simplement le répertoire dans lequel vous vous trouvez actuellement. Nous apprendrons à interpréter les résultats dans un instant.
Regardez autour de vous
Pour voir quels fichiers se trouvent dans le répertoire actuel, vous pouvez émettre la commande ls
, qui signifie « liste » :
ls
bin etc lib mnt root selinux tmp vmlinuz boot home lost+found opt run srv usr dev initrd.img media proc sbin sys var
Cela vous indiquera tous les répertoires et fichiers de votre répertoire actuel.
La commande ls
peut prendre des drapeaux optionnels. Les indicateurs modifient le comportement par défaut des commandes pour traiter ou afficher les données d'une manière différente.
Par exemple, si nous souhaitons différencier facilement les fichiers et les répertoires en affichant un "/" après les entrées de répertoire, vous pouvez ajouter le drapeau -F
:
ls -F
bin/ home/ media/ root/ srv/ var/ boot/ initrd.img@ mnt/ run/ sys/ vmlinuz@ dev/ lib/ opt/ sbin/ tmp/ etc/ lost+found/ proc/ selinux/ usr/
Les deux drapeaux les plus courants sont probablement -l
et -a
. Le premier indicateur force la commande à afficher des informations au format long :
ls -l
total 76 drwxr-xr-x 2 root root 4096 Apr 26 2012 bin drwxr-xr-x 3 root root 4096 Apr 26 2012 boot drwxr-xr-x 13 root root 3900 Dec 4 18:03 dev drwxr-xr-x 78 root root 4096 Dec 4 19:29 etc drwxr-xr-x 3 root root 4096 Dec 4 19:28 home lrwxrwxrwx 1 root root 33 Apr 26 2012 initrd.img -> /boot/initrd.img-3.2.0-24-virtual drwxr-xr-x 16 root root 4096 Apr 26 2012 lib . . .
Cela produit une sortie avec une ligne pour chaque fichier ou répertoire (le nom est à l'extrême droite). Cela contient beaucoup d'informations qui ne nous intéressent pas pour le moment. Une partie qui nous intéresse sont est le tout premier caractère, qui nous indique de quel type de fichier il s'agit. Les trois types les plus courants sont :
- - : fichier normal
- d : répertoire (un fichier d'un format spécifique qui répertorie d'autres fichiers)
- l : un lien matériel ou logiciel (essentiellement un raccourci vers un autre fichier sur le système)
Le drapeau -a
répertorie tous les fichiers, y compris les fichiers cachés. Sous Linux, les fichiers sont masqués automatiquement s'ils commencent par un point :
ls -a
. .. .bash_logout .bashrc .profile
Dans cet exemple, tous les fichiers sont masqués. Les deux premières entrées, .
et ..
sont spéciales. Le répertoire .
est un raccourci qui signifie « le répertoire courant ». Le répertoire ..
est un raccourci qui signifie « le répertoire parent du répertoire courant ». Nous allons apprendre quelques façons de les utiliser dans un instant.
Se déplacer
Maintenant que vous pouvez savoir où vous vous trouvez dans le système de fichiers et voir ce qui vous entoure, il est temps d'apprendre à vous déplacer dans le système de fichiers.
Pour changer de répertoire, vous émettez la commande cd
, qui signifie « changer de répertoire » :
cd /bin
Vous pouvez faire suivre la commande d'un chemin d'accès absolu ou relatif.
Un chemin absolu est un chemin de fichier qui spécifie l'emplacement d'un répertoire en haut de l'arborescence des répertoires (nous expliquerons cela plus tard). Les chemins absolus commencent par un "/", comme vous le voyez ci-dessus.
Un chemin relatif est un chemin de fichier relatif au répertoire de travail actuel. Cela signifie qu'au lieu de définir un emplacement à partir du haut de la structure du répertoire, il définit l'emplacement par rapport à l'endroit où vous vous trouvez actuellement.
Par exemple, si vous souhaitez vous déplacer vers un répertoire du répertoire actuel appelé documents
, vous pouvez lancer cette commande :
cd documents
L'absence de "/" au début indique d'utiliser le répertoire courant comme base pour rechercher le chemin.
C'est là que le répertoire ..
est utile. Pour vous déplacer dans le répertoire parent de votre répertoire courant, vous pouvez taper :
cd ..
Un aperçu de la disposition du système de fichiers Linux
La première chose que vous devez savoir lors de la visualisation d'un système de fichiers Linux est que le système de fichiers est contenu dans une seule arborescence, quel que soit le nombre de périphériques incorporés.
Cela signifie que tous les composants accessibles au système d'exploitation sont représentés quelque part dans le système de fichiers principal. Si vous utilisez Windows comme système d'exploitation principal, cela est différent de ce à quoi vous êtes habitué. Dans Windows, chaque disque dur ou espace de stockage est représenté comme son propre système de fichiers, qui sont étiquetés avec des désignations de lettres (C: étant le répertoire standard de niveau supérieur de la hiérarchie des fichiers système et les lecteurs ou espaces de stockage supplémentaires recevant d'autres étiquettes de lettres).
Sous Linux, chaque fichier et périphérique du système réside dans le répertoire "racine", qui est désigné par un "/" de départ.
Remarque : Ceci est différent de l'utilisateur administratif par défaut, également appelé « root ». Il est également différent du répertoire personnel de l'utilisateur administratif par défaut, qui se trouve à « /root ».
Ainsi, si nous voulons accéder au répertoire de niveau supérieur de l'ensemble du système d'exploitation et voir ce qu'il contient, nous pouvons taper :
cd / ls
bin etc lib mnt root selinux tmp vmlinuz boot home lost+found opt run srv usr dev initrd.img media proc sbin sys var
Chaque fichier, périphérique, répertoire ou application se trouve sous ce seul répertoire. En dessous, nous pouvons voir les débuts du reste de la structure du répertoire. Nous entrerons dans plus de détails ci-dessous :
/poubelle
Ce répertoire contient les commandes et programmes de base nécessaires pour obtenir un environnement de travail minimal au démarrage. Ceux-ci sont séparés de certains des autres programmes du système pour vous permettre de démarrer le système pour la maintenance même si d'autres parties du système de fichiers sont endommagées ou indisponibles.
Si vous effectuez une recherche dans ce répertoire, vous constaterez que ls
et pwd
résident ici. La commande cd
est en fait intégrée au shell que nous utilisons (bash), qui se trouve également dans ce répertoire.
/démarrage
Ce répertoire contient les fichiers, images et noyaux réels nécessaires pour démarrer le système. Alors que /bin
contient des utilitaires de base essentiels, /boot
contient les composants de base qui permettent réellement au système de démarrer.
Si vous avez besoin de modifier le chargeur de démarrage sur votre système, ou si vous souhaitez voir les fichiers du noyau et le disque virtuel initial (initrd), vous pouvez les trouver ici. Ce répertoire doit être accessible au système très en amont.
/dev
Ce répertoire contient les fichiers qui représentent les périphériques de votre système. Chaque disque dur, périphérique terminal, périphérique d'entrée ou de sortie disponible pour le système est représenté ici par un fichier. Selon l'appareil, vous pouvez utiliser les appareils de différentes manières.
Par exemple, pour un périphérique qui représente un disque dur, comme /dev/sda
, vous pouvez le monter sur le système de fichiers pour y accéder. D'un autre côté, si vous avez un fichier qui représente une imprimante ligne comme /dev/lpr
, vous pouvez y écrire directement pour envoyer les informations à l'imprimante.
/etc
C'est un domaine du système de fichiers où vous passerez beaucoup de temps si vous travaillez en tant qu'administrateur système. Ce répertoire est essentiellement un répertoire de configuration pour divers services à l'échelle du système.
Par défaut, ce répertoire contient de nombreux fichiers et sous-répertoires. Il contient les fichiers de configuration pour la plupart des activités du système, quelle que soit leur fonction. Dans les cas où plusieurs fichiers de configuration sont nécessaires, un sous-répertoire spécifique à l'application est souvent créé pour contenir ces fichiers. Si vous essayez de configurer un service ou un programme pour l'ensemble du système, c'est un excellent endroit où chercher.
/domicile
Cet emplacement contient les répertoires personnels de tous les utilisateurs du système (à l'exception de l'utilisateur administratif, root). Si vous avez créé d'autres utilisateurs, un répertoire correspondant à leur nom d'utilisateur sera généralement créé sous ce répertoire.
A l'intérieur de chaque répertoire personnel, l'utilisateur associé dispose d'un accès en écriture. En règle générale, les utilisateurs réguliers n'ont qu'un accès en écriture à leur propre répertoire personnel. Cela aide à garder le système de fichiers propre et garantit que tout le monde ne peut pas modifier les fichiers de configuration importants.
Dans le répertoire d'accueil, il s'agit souvent de fichiers et de répertoires cachés (représentés par un point de départ) qui permettent une configuration des outils spécifique à l'utilisateur. Vous pouvez souvent définir les valeurs par défaut du système dans le répertoire /etc
, puis chaque utilisateur peut les remplacer si nécessaire dans son propre répertoire personnel.
/lib
Ce répertoire est utilisé pour toutes les bibliothèques système partagées requises par les répertoires /bin
et /sbin
. Ces fichiers fournissent essentiellement des fonctionnalités aux autres programmes du système. C'est l'un des répertoires auxquels vous n'aurez pas à accéder souvent.
/perdu+trouvé
Il s'agit d'un répertoire spécial qui contient les fichiers récupérés par /fsck
, le programme de réparation du système de fichiers Linux. Si le système de fichiers est endommagé et que la récupération est entreprise, des fichiers sont parfois trouvés mais la référence à leur emplacement est perdue. Dans ce cas, le système les placera dans ce répertoire.
Dans la plupart des cas, ce répertoire restera vide. Si vous rencontrez des problèmes de corruption ou des problèmes similaires et que vous êtes obligé d'effectuer des opérations de récupération, c'est toujours une bonne idée de vérifier cet emplacement lorsque vous avez terminé.
/médias
Ce répertoire est généralement vide au démarrage. Son véritable objectif est simplement de fournir un emplacement pour monter des supports amovibles (comme des CD). Dans un environnement de serveur, cela ne sera pas utilisé dans la plupart des cas. Mais si votre système d'exploitation Linux monte un disque multimédia et que vous ne savez pas où il l'a placé, c'est une valeur sûre.
/mn
Ce répertoire est similaire au répertoire /media
en ce sens qu'il existe uniquement pour servir de point de montage d'organisation pour les périphériques. Dans ce cas, cet emplacement est généralement utilisé pour monter des systèmes de fichiers tels que des disques durs externes, etc.
Ce répertoire est souvent utilisé dans un environnement VPS pour monter des lecteurs accessibles par le réseau. Si vous avez un système de fichiers sur un système distant que vous souhaitez monter sur votre serveur, c'est un bon endroit pour le faire.
/opter
L'utilisation de ce répertoire est plutôt ambiguë. Il est utilisé par certaines distributions, mais ignoré par d'autres. En règle générale, il est utilisé pour stocker des packages facultatifs. Dans le monde de la distribution Linux, cela signifie généralement des packages et des applications qui n'ont pas été installés à partir des référentiels.
Par exemple, si votre distribution fournit généralement les packages via un gestionnaire de packages, mais que vous avez installé le programme X à partir de la source, alors ce répertoire serait un bon emplacement pour ce logiciel. Une autre option populaire pour les logiciels de cette nature se trouve dans le répertoire /usr/local
.
/proc
Le répertoire /proc
est en fait plus qu'un simple répertoire ordinaire. Il s'agit en fait d'un pseudo-système de fichiers qui est monté dans ce répertoire. Le système de fichiers proc ne contient pas de fichiers réels, mais est plutôt généré dynamiquement pour refléter l'état interne du noyau Linux.
Cela signifie que nous pouvons vérifier et modifier différentes informations du noyau lui-même en temps réel. Par exemple, vous pouvez obtenir des informations détaillées sur l'utilisation de la mémoire en tapant cat /proc/meminfo
.
/racine
Il s'agit du répertoire personnel de l'utilisateur administratif (appelé "root"). Il fonctionne exactement comme les répertoires personnels normaux, mais est hébergé ici à la place.
/Cours
Ce répertoire permet au système d'exploitation d'écrire des informations d'exécution temporaires au cours des premières étapes du processus de démarrage. En général, vous ne devriez pas avoir à vous soucier de la plupart des informations contenues dans ce répertoire.
/sbin
Ce répertoire ressemble beaucoup au répertoire /bin
en ce sens qu'il contient des programmes jugés essentiels à l'utilisation du système d'exploitation. La distinction est généralement que /sbin
contient des commandes qui sont disponibles pour l'administrateur système, tandis que l'autre répertoire contient des programmes pour tous les utilisateurs du système.
/selinux
Ce répertoire contient des informations concernant Linux à sécurité améliorée. Il s'agit d'un module du noyau utilisé pour fournir un contrôle d'accès au système d'exploitation. Pour la plupart, vous pouvez ignorer cela.
/srv
Ce répertoire est utilisé pour contenir des fichiers de données pour les services fournis par l'ordinateur. Dans la plupart des cas, ce répertoire n'est pas trop utilisé car ses fonctionnalités peuvent être implémentées ailleurs dans le système de fichiers.
/tmp
Il s'agit d'un répertoire utilisé pour stocker les fichiers temporaires sur le système. Il est accessible en écriture par n'importe qui sur l'ordinateur et ne persiste pas au redémarrage. Cela signifie que tous les fichiers dont vous avez besoin juste pour un petit moment peuvent être placés ici. Ils seront automatiquement supprimés une fois le système arrêté.
/usr
Ce répertoire est l'un des plus grands répertoires du système. Il comprend essentiellement un ensemble de dossiers qui ressemblent à ceux du répertoire racine /
, tels que /usr/bin
et /usr/lib
. Cet emplacement est essentiellement utilisé pour stocker tous les programmes non essentiels, leur documentation, leurs bibliothèques et d'autres données qui ne sont pas nécessaires pour l'utilisation la plus minimale du système.
C'est là que la plupart des fichiers du système seront stockés. Certains sous-répertoires importants sont /usr/local
, qui est une alternative au répertoire /opt
pour stocker les programmes compilés localement. Une autre chose intéressante à vérifier est le répertoire /usr/share
, qui contient de la documentation, des fichiers de configuration et d'autres fichiers utiles.
/var
Ce répertoire est supposé contenir des données variables. En pratique, cela signifie qu'il est utilisé pour contenir des informations ou des répertoires que vous prévoyez de développer au fur et à mesure de l'utilisation du système.
Par exemple, les journaux système et les sauvegardes sont hébergés ici. Une autre utilisation courante de ce répertoire consiste à stocker du contenu Web si vous utilisez un serveur Web.
Conclusion
Bien que les détails de l'endroit où les choses sont stockées puissent varier d'une distribution à l'autre, en général, les emplacements dont nous avons discuté devraient vous orienter dans la bonne direction.
La meilleure façon d'explorer le système de fichiers est simplement de parcourir les différents répertoires et d'essayer de découvrir à quoi servent les fichiers à l'intérieur. Vous commencerez à pouvoir associer différents répertoires à différentes fonctions et à deviner où aller pour des tâches spécifiques. Si vous voulez une référence rapide pour savoir à quoi sert chaque répertoire, vous pouvez utiliser les pages de manuel intégrées en tapant :
man hier
Cela vous donnera un aperçu d'une disposition typique du système de fichiers et des objectifs de chaque emplacement.