Comment comprendre la structure du système de fichiers Ubuntu?

220

Dans Windows, il n’ya peut-être que quelques dossiers importants (par important, je veux dire important dans ma représentation logique du système de fichiers Windows) dans le lecteur d’installation (dans mon cas C:\). À savoir Program Fileset Windows. Je reste simplement à l'écart du Windowsdossier et l'option «ajouter des fichiers de programme» suffit à gérer le program filesdossier de Windows. Bien sûr, il existe un dossier nommé Usersoù les utilisateurs (qui ne sont pas des administrateurs) peuvent accéder uniquement à leurs dossiers.

Le système de fichiers Windows a donc une idée claire du problème. Dans Ubuntu, lorsque j'arrive à l'emplacement /, il y a une énorme liste de dossiers, dont la plupart ne m'ont aucune idée de ce qu'ils contiennent. Le /bindossier semble être l'équivalent du Windowsdossier dans Windows. Le /usrdossier semble être l'équivalent du Usersdossier sous Windows. Mais même le /homedossier semble pouvoir faire l'affaire.

S'il vous plaît, comprenez que je comprends, Ubuntu (Linux) a un caractère différent de celui de Windows, c’est-à-dire qu’il n’est pas nécessaire qu’il y ait un équivalent exact des fonctions Windows dans Ubuntu. Tout ce que je recherche, c’est une image un peu plus claire du système de fichiers Ubuntu.

Cette question fait partie d'une plus grande question que je divise pour la rendre plus responsable. La question initiale peut être trouvée ici:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/

Shashank Sawant
la source
3
Voir aussi la balise de structure de répertoire sous Unix et Linux . Toutes les distributions Linux suivent le même modèle.
Gilles
Merci pour toutes vos réponses. Je suis un peu confus sur quelques points: Sous Windows, la configuration fournit généralement, à l’aide d’une invite, une option permettant d’installer un logiciel pour tous les utilisateurs. Comment faire cette distinction dans Ubuntu? C'est également un problème habituel dans la configuration des logiciels de développement pour leurs IDE. Dans Windows, par exemple, dans "fichiers de programme \ miktex \ bin", vous trouverez le fichier "pdflatex.exe". Ainsi, je peux pointer l'IDE sur ce fichier et le configurer. Comment s'y prendre avec ce processus dans Ubuntu? Où se trouve le fichier binaire général associé à un logiciel (notamment du point de vue de la configuration)?
Shashank Sawant
2
Dans Ubuntu, vous installez normalement un logiciel pour tous les utilisateurs. Tout ce que vous faites via le gestionnaire de paquets est pour tous les utilisateurs. Je ne comprends pas le reste de votre commentaire. on ne "configure" pas le "fichier binaire associé à un logiciel". Vous devriez poser cette question séparément et donner une meilleure explication de ce que vous essayez de faire.
Gilles
Je l'ai. Je vais formuler une nouvelle question. Même dans ce cas, voici une brève explication de ce que je voulais dire: Dans Windows, les fichiers .exe peuvent être facilement localisés. Par exemple: "C: \ Python27 \ python.exe". Donc, je sais où le programme Python commence. Maintenant, si je dois utiliser l'EDI Eclipse, je peux simplement le pointer vers python.exe, et c'est ce que je voulais dire par "configurer". J'ai configuré l'EDI pour Python. Sous Ubuntu, où se trouve l’installation du programme? C'est ce qui m'évite encore.
Shashank Sawant
2
@ Gilles Soyez prudent lorsque vous dites all. Le projet GoboLinux utilise en réalité une structure de répertoires plus semblable à Windows.
new123456

Réponses:

250

Vous pouvez lire ceci par exemple sur wikipedia. Un extrait:

La norme FHS ( Filesystem Hierarchy Standard ) définit les répertoires principaux et leur contenu dans les systèmes d'exploitation Linux. Pour la plupart, il s’agit d’une formalisation et d’une extension de la hiérarchie traditionnelle des systèmes de fichiers BSD.

La FHS est gérée par la Linux Foundation, une organisation à but non lucratif composée des principaux fournisseurs de logiciels et de matériels, tels que HP, Red Hat, IBM et Dell. La version actuelle est la version 3.0, publiée le 3 juin 2015.

Une représentation visuelle avec une courte description:

entrez la description de l'image ici

Fondamentalement, Linux a divisé la structure de répertoires en fonction de ce qui est nécessaire pour rendre le système aussi sécurisé que possible avec le minimum d'autorisations nécessaires. Sinon, quelqu'un est obligé de faire beaucoup de travail évitable.

N'oubliez pas que Unix et Linux ont été créés en tant que systèmes multi-utilisateurs et que Windows a été créé pour un seul utilisateur. Tout le reste peut être expliqué à partir de cette idée. Vous pouvez expliquer chaque répertoire en pensant qu'il est multi-utilisateur et sécurisé.

3 exemples:

  • Vous verrez que les fichiers et les répertoires qui ne sont que des administrateurs sont rassemblés dans le même répertoire: s in /sbinet /usr/sbinand /usr/local/sbinsignifie system. Un utilisateur normal ne peut même pas démarrer les programmes qui s'y trouvent. Les fichiers qu'un utilisateur normal peut démarrer se trouvent dans / bin, / usr / bin, / usr / local / bin en fonction de l'endroit où il devrait logiquement résider. Mais s’ils ne sont que des administrateurs, ils doivent accéder à la sversion de ce répertoire. Il y a un utilitaire célèbre appelé fuser. Vous pouvez tuer des processus avec cela. Si un utilisateur normal pouvait utiliser ceci, il pourrait tuer votre session.

  • Il en va de même pour /home: / home / user1 est la propriété de user1. / home / user2 est la propriété de user2. user2 n'a pas d'activité professionnelle dans le logement de l'utilisateur1 (l'inverse est également vrai: utilisateur1 n'a pas d'activité professionnelle dans le domicile de l'utilisateur2). Si tous les fichiers se trouvent dans / home sans nom d'utilisateur, vous devez donner des autorisations pour chaque fichier et chaque cale si quelqu'un est autorisé à écrire / supprimer ces fichiers. Un cauchemar si vous avez des dizaines d'utilisateurs.

  • Ajout concernant les bibliothèques.

    /lib/, /usr/lib/et /usr/local/lib/sont les emplacements d'origine d'avant les systèmes multilib et les moyens d'empêcher la rupture. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/Sont des 32- / inventions multilib 64 bits.

Ce n'est en aucun cas un concept statique. D'autres versions de Linux ont peaufiné cette disposition. Par exemple; actuellement, vous verrez que debian et Ubuntu changent beaucoup dans la mise en page de la FHS puisque le SSD est mieux avec des fichiers en lecture seule. Il y a un mouvement vers une nouvelle mise en page où les fichiers sont scindés en un répertoire / groupe "en lecture seule" et "en écriture" afin que nous puissions avoir une partition racine pouvant être montée en lecture seule (partition pour un ssd) et en écriture (sata hdd). Le nouveau répertoire utilisé pour cela (pas dans l'image) est /run/.

Rinzwind
la source
18
+1 Rinzwind. J'aime l'image, en cherchais une.
Luis Alvarado,
5
ha pensait que cela attirerait l'attention: + @LuisAlvarado
Rinzwind
4
Il ne peut y avoir de meilleure réponse!
Shashank Sawant
1
N'était- /mntce pas ce qui /mediaest maintenant, il y a quelques années?
RobinJ
9
@RobinJ: La différence est celle qui /mnta été historiquement gérée manuellement. Avec la montée en puissance de nombreux périphériques transitoires (lecteurs flash, etc.) et le montage automatique devenant la norme, il devenait nécessaire de gérer automatiquement les points de montage. Un nouveau répertoire était nécessaire pour éviter les conflits avec la configuration manuelle existante. Ainsi, ces jours /mntont été relégués au rôle de fournir un point de montage temporaire commode.
Scott Severance
104

Essayez cette commande ...

man 7 hier

Vous pouvez également consulter cette page de manuel ici: http://manpages.ubuntu.com/manpages/fr/man7/hier.7.html

J'espère que ça aide

Pritesh Wadhia
la source
1
bon appel! J'oublie toujours celui-là même s'il est toujours présent (même lorsque le filet est en panne;))
Rinzwind
1
l'homme devrait être renommé "it". :)))
Apache
man hierest maintenant parmi mes commandes préférées! Les explications me paraissent plus claires que le doco de FHS, notamment en distinguant «local à la machine» et «au niveau du site», pour un utilisateur inexpérimenté d’Ubuntu, passant d’une expérience DOS / Windows modérée.
WillC
BTW le nombre 7 correspond à la section Divers de la page de manuel.
Pablo Un
hmm. Pour ce que cela vaut, cela me rappelle une réponse sous forme de lien uniquement, même s'il est probable que toutes les versions d'ubuntu l'auront. Pouvez-vous incorporer une partie du contenu de la page de manuel dans votre réponse?
jrh
45

Réponse tardive - J'ai créé une feuille de route pour les débutants. S'ils recherchent un fichier mais ne savent pas où chercher, ils peuvent utiliser la carte pour naviguer approximativement. Vous pouvez télécharger un fichier PNG haute résolution ici . Vous pouvez trouver le post connexe ici . Je continuerai à mettre à jour le fichier et la publication lorsque le temps le permettra, en incorporant des commentaires utiles.

d4nyll
la source
Idée intéressante et utile pour produire un organigramme, mais malheureusement, il semble y avoir certaines impasses. Ma question est si je suis en train d'exécuter un mysqldumpoù dois-je sortir le fichier?
BadHorsie
@BadHorsie bien sûr, cela dépendrait toujours de votre cas d'utilisation spécifique, mais le placer dans un /home/badhorsie/mysqldumprépertoire suffirait. Si vous exécutez de nombreuses applications, vous pouvez créer un nouvel utilisateur pour exécuter chaque application et la vider dans le homerépertoire de cette application / utilisateur .
d4nyll
@ paranoid-panda, pourriez-vous expliquer un peu plus pourquoi vous ne permettez pas que l'image soit cliquable en résolution maximale? La version intégrée dans ce message est pratiquement illisible.
waldyrious
@waldyrious: Si vous regardez l' historique des révisions, vous verrez que je n'ai corrigé qu'une faute d'orthographe. C'est un autre utilisateur qui a ajouté l'image de cette manière. Rien à voir avec moi. Ne hésitez pas à le modifier pensais, je ne me souviens pas de la syntaxe correcte pour le rendre cliquable.
@ParanoidPanda c'est précisément ce que j'ai fait. Mon édition a corrigé la faute de frappe et rendu l'image cliquable. Votre commentaire était de rejeter et d'éditer , d'où ma question: qu'est-ce qui vous a échappé lorsque vous avez rendu l'image cliquable?
waldyrious
36

Ce texte suivant montre la structure du répertoire.

mtk4@laptop:/$ pwd
/
mtk4@laptop:/$ tree -L 1
.
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- home
|-- lib
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- selinux
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

Les composants principaux ici sont:

  1. /boot : Contient le chargeur de démarrage

  2. /home : Contient les répertoires de base des utilisateurs.

  3. /bin : Tous les fichiers binaires et commandes exécutables utilisés par tous les utilisateurs du système se trouvent ici.

  4. /sbin : Contient les fichiers binaires exécutables du système généralement utilisés par les administrateurs système.

  5. /lib : Contient les bibliothèques système prenant en charge les fichiers binaires dans / bin et / sbin.

  6. /etc : Contient les fichiers de configuration pour le réseau, le démarrage, etc.

  7. /dev : Cela contient les fichiers de périphérique, c’est-à-dire qu’un usb, un terminal ou tout autre périphérique connecté au système est présenté ici.

  8. /proc : Contient des informations sur le processus en cours d'exécution.

  9. /tmp: Ceci est le répertoire temporaire où de nombreux processus créent les fichiers temporaires requis. Ceci est purgé à chaque démarrage de la machine.

Pour plus de détails, le lien Thegeekstuff explique parfaitement le système de fichiers générique linux.

mtk
la source
20

\Usersest équivalent à /home. Le nom de /usrest un artefact historique.

L'équivalent combiné de \Windowset \Program Filesest la combinaison de /bin, /boot, /etc, /lib, /sbin, /tmp, /usret /var. Linux et Windows divisent les logiciels installés différemment. Windows distingue le système d'exploitation des programmes associés. Linux ne fait pas cette distinction de la même manière; la plupart des logiciels, sinon tous, proviennent de Ubuntu (le distributeur) et sont installés dans la même hiérarchie de répertoires. Étant donné que les logiciels sont suivis par le gestionnaire de paquets, il n'est pas nécessaire de stocker chaque programme dans son propre répertoire. Sous Linux:

  • /etc est destiné aux fichiers de configuration système: les fichiers de configuration qui concernent tous les utilisateurs, qu'ils s'appliquent au système d'exploitation dans son ensemble ou à une application spécifique.
  • /usr est pour le code système et les données (programmes, bibliothèques, documentation, etc.).
  • /varest destiné aux données variables ou temporaires: fichiers temporaires, journaux, bases de données du gestionnaire de paquets, spools d'imprimante, fichiers de sauvegarde de jeu, etc. Il existe également /tmpdes fichiers temporaires pouvant être effacés lors des redémarrages.
  • /bin, /libEt /sbindans le répertoire racine ont homologues /usr. Les fichiers qui se trouvent à l'extérieur /usrsont ceux qui sont nécessaires au début du processus de démarrage. C'est une relique de l'époque où les disques étaient petits et /usrpouvaient se trouver sur un système de fichiers partagé entre plusieurs stations de travail sur le réseau. Cette distinction n'est pas vraiment utile sur la plupart des systèmes.
  • /boot contient quelques fichiers nécessaires uniquement au démarrage du système d’exploitation, et non au fonctionnement quotidien.

Il existe des répertoires supplémentaires qui ne correspondent à rien de ce que Windows possède:

  • /rootest le répertoire de base de l'utilisateur root. L'utilisateur root est un compte administrateur non lié à un utilisateur particulier. c'est l'utilisateur que vous changez lorsque vous exécutez sudo. Ubuntu ne laisse pas l'utilisateur root se connecter par défaut.
  • /mediaet /mntsont des points de montage: ils vous permettent de voir les systèmes de fichiers d’autres systèmes d’exploitation et de lecteurs distants. L'équivalent Windows correspond aux autres lettres de lecteur.
  • /procet /sysafficher les informations du système. Sous Windows, vous devez parcourir les menus ou appeler des commandes système ou installer des programmes tiers pour voir ces informations.

Ubuntu, comme d’autres distributions Linux, suit généralement le système de hiérarchie des systèmes de fichiers Linux .

Gilles
la source
5

Ubuntu (comme tous les systèmes de type UNIX) organise les fichiers dans une arborescence hiérarchique, où les relations sont pensées par équipes d'enfants et de parents. Les répertoires peuvent contenir d'autres répertoires ainsi que des fichiers normaux, qui sont les "feuilles" de l'arborescence. Tout élément de l’arbre peut être référencé par un nom de chemin; un chemin absolu commence par le caractère / (identifiant le répertoire racine, qui contient tous les autres répertoires et fichiers), puis chaque répertoire enfant devant être parcouru pour atteindre l'élément est répertorié, chacun étant séparé par un signe /.

Un nom de chemin relatif est un nom qui ne commence pas par /; dans ce cas, l'arborescence de répertoires est parcourue à partir d'un point donné, qui change en fonction du contexte, appelé répertoire en cours. Dans chaque répertoire, il existe deux répertoires spéciaux appelés. et .., qui se réfèrent respectivement au répertoire lui-même et à son répertoire parent.

Le fait que tous les fichiers et répertoires aient une racine commune signifie que, même si plusieurs périphériques de stockage différents sont présents sur le système, ils sont tous considérés comme des répertoires quelque part dans l'arborescence, une fois montés à l'emplacement souhaité.

Trouvez des exemples et plus d'informations ici :

Stephenmyall
la source