Как понять структуру файловой системы Ubuntu?


220

В Windows, возможно, только несколько важных папок (под важными я имею в виду важные в моей логической картине файловой системы Windows) на установочном диске (в моем случае C:\). А именно Program Filesа Windows. Я просто держусь подальше от Windowsпапки, и «добавить удаление программных файлов» достаточно для работы с program filesпапкой Windows. Конечно, есть папка, в Usersкоторой пользователи (не администраторы) могут получить доступ только к своим папкам.

Таким образом, на определенном уровне в моей голове видна файловая система Windows. В Ubuntu, когда я добираюсь до места /, появляется огромный список папок, большинство из которых я не имею понятия о том, что они содержат. /binПапка , кажется, эквивалент Windowsпапки в окнах. /usrПапка кажется, что это эквивалент Usersпапки в Windows. Но даже /homeпапка выглядит так, как будто она может соответствовать всем требованиям.

Пожалуйста, поймите, что я понимаю, что Ubuntu (Linux) имеет другой характер, чем Windows, т. Е. В Ubuntu нет необходимости в точном эквиваленте функций Windows. Все, что я ищу, - это более четкое представление о файловой системе Ubuntu.

Этот вопрос является частью более крупного вопроса, который я разделяю, чтобы сделать его более ответственным. Оригинальный вопрос можно найти здесь:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/


3
Смотрите также тег структуры каталогов в Unix и Linux . Все дистрибутивы Linux следуют той же модели.
Жиль

Спасибо за все ваши ответы. Я немного запутался в нескольких моментах: в Windows программа установки обычно предоставляет возможность установки программного обеспечения для всех пользователей. Как сделать это различие в Ubuntu? Кроме того, это обычная проблема при настройке программного обеспечения для разработки на их IDE. В windows, например, в «программных файлах \ miktex \ bin» находится файл «pdflatex.exe». Таким образом, я могу указать IDE на этот файл и настроить его. Как пройти этот процесс в Ubuntu? Где находится общий двоичный файл, связанный с программным обеспечением (особенно с точки зрения конфигурации)?
Шашанк Савант

2
В Ubuntu вы обычно устанавливаете программное обеспечение для всех пользователей. Все, что вы делаете через менеджер пакетов, предназначено для всех пользователей. Я не понимаю остальную часть вашего комментария; один не «настраивает» «двоичный файл, связанный с программным обеспечением». Вы должны задать это как отдельный вопрос и дать лучшее объяснение того, что вы пытаетесь сделать.
Жиль

Понял. Я задам новый вопрос. Даже тогда вот краткое объяснение того, что я имел в виду: в Windows файлы .exe могут быть легко найдены. Например: «C: \ Python27 \ python.exe». Так что я знаю, откуда начинается программа Python. Теперь, если мне нужно использовать Eclipse IDE, я могу просто указать его на python.exe, и это то, что я имел в виду под «конфигурировать». Я настроил IDE для Python. В Ubuntu, где находится место, где установлена ​​программа? Это то, что все еще уклоняется от меня.
Шашанк Савант

2
@ Жиль Будьте осторожны, когда говорите all. Проект GoboLinux на самом деле использует более похожую на Windows структуру каталогов.
new123456

Ответы:


250

Вы можете прочитать об этом, например, в Википедии. Выдержка:

Стандарт иерархии файловой системы (FHS) определяет основные каталоги и их содержимое в операционных системах Linux. По большей части это формализация и расширение традиционной иерархии файловой системы BSD.

FHS поддерживается Linux Foundation, некоммерческой организацией, в которую входят крупные поставщики программного и аппаратного обеспечения, такие как HP, Red Hat, IBM и Dell. Текущая версия 3.0, выпущена 3 июня 2015 года.

Визуальное представление с кратким описанием:

введите описание изображения здесь

По сути, Linux разделил структуру каталогов на основе функций, необходимых для обеспечения максимальной безопасности системы с минимальным количеством необходимых разрешений. В противном случае кому-то придется выполнять много работы, которую можно избежать.

Помните, что Unix и Linux, созданные как многопользовательские системы, и Windows были созданы для одного пользователя. Все остальное можно объяснить из этой идеи. Вы можете объяснить каждый каталог, думая о его многопользовательской безопасности.

3 примера:

  • Вы увидите, что файлы и каталоги, предназначенные только для администратора, собраны в одном каталоге: s в /sbinи /usr/sbinи /usr/local/sbinозначает систему. Обычный пользователь не может даже запускать программы, которые там находятся. Файлы, которые может запустить обычный пользователь, находятся в / bin, / usr / bin, / usr / local / bin в зависимости от того, где он должен находиться наиболее логично. Но если они только администраторы, они должны перейти к sверсии этого каталога. Существует известная утилита под названием fuser. Вы можете убить процессы с ним. Если бы обычный пользователь мог использовать это, он мог бы убить ваш сеанс.

  • То же самое касается /home: / home / user1 является собственностью user1. / home / user2 является собственностью user2. user2 не имеет никакого дела, делая вещи в доме пользователя user1 (и наоборот: верно, что user1 не имеет никакого дела, делая вещи в доме пользователя user2). Если бы все файлы находились в / home без имени пользователя, вам нужно было бы дать разрешения каждому файлу и оценить, разрешено ли кому-либо писать / удалять эти файлы. Кошмар, если у вас есть десятки пользователей.

  • Дополнение по поводу библиотек.

    /lib/, /usr/lib/и /usr/local/lib/являются исходными местоположениями, до того, как существовали мультибиблиотечные системы и существуют для предотвращения поломок. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/Являются 32- / 64-битные мультибиблиотечные изобретения.

Это не статичное понятие в любом случае. Другие разновидности Linux внесли изменения в эту схему. Например; В настоящее время вы увидите, что Debian и Ubuntu сильно меняются в макете FHS, поскольку SSD лучше использовать только для чтения. Существует движение к новой компоновке, в которой файлы разделяются на «доступный только для чтения» и «доступный для записи» каталог / группу, поэтому у нас может быть корневой раздел, который может быть подключен только для чтения (раздел для ssd) и доступен для записи. (Сата HDD). Новый каталог, который используется для этого (не в образе), является /run/.


18
+1 Ринзвинд. Мне нравится изображение, на самом деле искал один.
Луис Альварадо

5
подумал, что это привлечет внимание: + @LuisAlvarado
Rinzwind

4
Там не может быть лучшего ответа!
Шашанк Савант

1
Разве не /mntто, что /mediaсейчас, несколько лет назад?
RobinJ

9
@RobinJ: Различие заключается в том, что /mntисторически управлялось вручную. С появлением многих переходных устройств (флеш-накопителей и т. Д.) И установкой в ​​автоматическом режиме стало необходимо автоматически обрабатывать точки монтирования. Новый каталог был необходим во избежание конфликтов с существующей ручной настройкой. Таким образом, в наши дни /mntбыла назначена удобная временная точка монтирования.
Скотт Северанс

104

Попробуйте эту команду ...

man 7 hier

Вы также можете просмотреть эту страницу руководства здесь: http://manpages.ubuntu.com/manpages/en/man7/hier.7.html

Надеюсь, это поможет


1
хороший звонок! Я всегда забываю об этом, хотя он всегда присутствует (даже когда сеть не работает;))
Rinzwind

1
Человек должен быть переименован в "это". :)))
Apache

man hierсейчас среди моих любимых команд! Объяснения для меня более понятны, чем документация FHS, особенно для неопытного пользователя Ubuntu, особенно между «локальным по отношению к машине» и «общесайтовым», переходящим от умеренного опыта работы с DOS / Windows.
WillC

Кстати, номер 7 стоит раздела Разное man-страницы.
Пабло А

хмм. То, что оно того стоит, напоминает мне ответ только для ссылок, хотя вполне вероятно, что у каждой версии Ubuntu будет такой. Можете ли вы включить какой-либо контент со страницы руководства в свой ответ?
18:30

45

Поздний ответ - я создал дорожную карту для начинающих. Если они ищут файл, но не знают, где искать, они могут использовать карту, чтобы примерно перемещаться. Вы можете скачать PNG в высоком разрешении здесь . Вы можете найти соответствующий пост здесь . Я буду обновлять и файл, и пост, когда позволит время, включая полезные комментарии.


Интересная и полезная идея для создания блок-схемы, но, к сожалению, у нее, похоже, есть тупики. У меня вопрос, если я выполняю mysqldumpкуда я должен вывести файл?
BadHorsie

@BadHorsie, конечно, это всегда будет зависеть от вашего конкретного случая использования, но выгрузка его в /home/badhorsie/mysqldumpкаталог будет достаточной. Если у вас много приложений, вы можете создать нового пользователя для запуска каждого приложения и выгрузить его в homeкаталог этого приложения / пользователя .
d4nyll

@ paranoid-panda, не могли бы вы немного рассказать о том, почему вы не разрешаете кликать изображение в полном разрешении? Версия, встроенная в этот пост, практически не читается.
Waldyrious

@waldyrious: Если вы посмотрите историю изменений, то увидите, что я исправил только орфографическую ошибку, это был другой пользователь, который добавил изображение именно таким образом. Ничего общего со мной. Не стесняйтесь редактировать его, я не могу вспомнить правильный синтаксис, чтобы сделать его кликабельным.

@ParanoidPanda, это именно то, что я и сделал. Мое редактирование сделало исправление опечатки и сделало изображение кликабельным, и ваш отзыв должен был отклонить и отредактировать , отсюда мой вопрос: что вы ошиблись, сделав изображение кликабельным?
Waldyrious

36

Этот следующий текст показывает структуру каталогов.

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

Основными компонентами здесь являются:

  1. /boot : Содержит загрузчик

  2. /home Содержит домашние каталоги пользователей.

  3. /bin : Все исполняемые файлы и команды, используемые всеми пользователями системы, находятся здесь.

  4. /sbin : Содержит исполняемые файлы системы, обычно используемые системными администраторами.

  5. /lib : Содержит системные библиотеки, которые поддерживают двоичные файлы в / bin и / sbin.

  6. /etc : Содержит файлы конфигурации для сети, времени загрузки и т. Д.

  7. /dev : Здесь показаны файлы устройства, например, usb, терминальное устройство или любое другое устройство, подключенное к системе.

  8. /proc : Содержит информацию о запущенном процессе.

  9. /tmpЭто временный каталог, в котором многие процессы создают необходимые временные файлы. Это очищается каждый раз при загрузке машины.

Для более подробной информации ссылка Thegeekstuff прекрасно объясняет общую файловую систему linux.


20

\Usersэквивалентно /home. Имя /usrэто исторический артефакт.

В сочетании эквивалент \Windowsи \Program Filesпредставляет собой комбинацию /bin, /boot, /etc, /lib, /sbin, /tmp, /usrи /var. Linux и Windows разделяют установленное программное обеспечение по-разному. Windows различает операционную систему и сопутствующие программы. Linux не делает это различие таким же образом; большинство, если не все программное обеспечение, поставляется через Ubuntu (распространитель) и устанавливается в той же иерархии каталогов, а поскольку программное обеспечение отслеживается диспетчером пакетов, нет необходимости хранить каждую программу в своем собственном каталоге. В Linux:

  • /etc предназначен для файлов конфигурации системы: файлы конфигурации, которые влияют на всех пользователей, независимо от того, применяются ли они к операционной системе в целом или к конкретному приложению.
  • /usr предназначен для системного кода и данных (программы, библиотеки, документация и т. д.).
  • /varпредназначен для переменных или временных данных: временных файлов, журналов, баз данных диспетчера пакетов, катушек принтера, файлов сохранения игр и т. д. Существует также /tmpвременные файлы, которые могут быть удалены при перезагрузке.
  • /bin, /libИ /sbinв корневом каталоге имеют аналоги в /usr. Внешние файлы - /usrэто те, которые нужны на ранних этапах процесса загрузки. Это пережиток того времени, когда диски были маленькими и /usrмогли находиться в файловой системе, совместно используемой несколькими рабочими станциями по сети, на самом деле это не очень полезно для большинства систем.
  • /boot содержит несколько файлов, которые необходимы только для загрузки операционной системы, а не для повседневной работы.

Существуют дополнительные каталоги, которые не соответствуют чему-либо, что есть в Windows:

  • /rootдомашний каталог пользователя root Пользователь root - это учетная запись администратора, не привязанная к какому-либо конкретному пользователю; это пользователь, которого вы изменяете при запуске sudo. Ubuntu по умолчанию не позволяет пользователю root входить в систему.
  • /mediaи /mntэто точки монтирования: там, где вы можете видеть файловые системы других операционных систем и удаленных дисков. Эквивалентом Windows являются другие буквы дисков.
  • /procи /sysпоказать системную информацию. В Windows вам нужно пройтись по меню или вызвать системные команды или установить сторонние программы, чтобы увидеть эту информацию.

Ubuntu, как и другие дистрибутивы Linux, в целом соответствует стандарту иерархии файловых систем Linux .


5

Ubuntu (как и все UNIX-подобные системы) организует файлы в иерархическом дереве, где об отношениях думают в командах детей и родителей. Каталоги могут содержать другие каталоги, а также обычные файлы, которые являются «листьями» дерева. Любой элемент дерева может быть ссылкой по имени пути; Абсолютный путь начинается с символа / (идентифицирует корневой каталог, который содержит все остальные каталоги и файлы), затем перечисляются все дочерние каталоги, которые необходимо пройти для достижения элемента, каждый из которых разделен знаком /.

Относительный путь - это путь, который не начинается с /; в этом случае дерево каталогов просматривается, начиная с заданной точки, которая изменяется в зависимости от контекста, называемого текущим каталогом. В каждой директории есть две специальные директории. и .., которые ссылаются соответственно на сам каталог и на его родительский каталог.

Тот факт, что все файлы и каталоги имеют общий корневой каталог, означает, что, даже если в системе присутствует несколько различных устройств хранения, все они рассматриваются как каталоги где-то в дереве, после того как они смонтированы в нужном месте.

Найдите примеры и дополнительную информацию здесь :

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.