Как понять структуру файловой системы 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/.

Rinzwind
источник
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 в высоком разрешении здесь . Вы можете найти соответствующий пост здесь . Я буду обновлять и файл, и пост, когда позволит время, включая полезные комментарии.

d4nyll
источник
Интересная и полезная идея для создания блок-схемы, но, к сожалению, у нее, похоже, есть тупики. У меня вопрос, если я выполняю 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-подобные системы) организует файлы в иерархическом дереве, где об отношениях думают в командах детей и родителей. Каталоги могут содержать другие каталоги, а также обычные файлы, которые являются «листьями» дерева. Любой элемент дерева может быть ссылкой по имени пути; Абсолютный путь начинается с символа / (идентифицирует корневой каталог, который содержит все остальные каталоги и файлы), затем перечисляются все дочерние каталоги, которые необходимо пройти для достижения элемента, каждый из которых разделен знаком /.

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

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

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

stephenmyall
источник