Нет папки etc linux

Обновлено: 04.07.2024

На этом уроке мы рассмотрим иерархию файловой системы Linux, а также познакомимся с назначением различных каталогов.

Если вы ранее пользовались только Windows, то структура файловой системы Linux может показаться вам особенно чуждой: нет привычного обозначения C:\ и букв дисков, их заменили каталог / и другие папки, большинство из которых имеют странные имена, состоящие из трех букв.

Причина всего этого в том, что в Linux используется свой FHS (сокр. от «Filesystem Hierarchy Standard» = «Стандарт иерархии файловой системы»). FHS определяет структуру и содержание/назначение каталогов в дистрибутивах Linux. Благодаря данному стандарту структура каталогов во всех дистрибутивах Linux является (почти) одной и той же.

Структура каталогов в Linux

Напомню, что Linux основан на системе Unix и, следовательно, заимствует из нее свою иерархию файловой системы. Аналогичную структуру каталогов вы найдете в Unix-подобных операционных системах, таких как BSD и macOS. Однако в дальнейшем я буду использовать именно термин Linux вместо Unix.



/ — корневая директория

Поскольку все остальные каталоги или файлы происходят от корня, абсолютный путь к любому из них начинается с корневой директории. Например, если у вас есть файл в /home/user/documents , то вы можете догадаться, что структура каталогов идет от root->home->user->documents .


С помощью rm -rf / вы просите свою систему принудительно и рекурсивно удалить содержимое корневого каталога. Поскольку в корневом каталоге содержатся все файлы и папки ОС, то данной командой вы стираете все данные, и ваша Linux-система просто должна исчезнуть (теоретически).

Большинство дистрибутивов Linux не запустят эту команду без ключа --no-preserve-root . Но в любом случае, не стоит ради любопытства пытаться выполнить эту команду.

/bin — binaries (двоичные файлы)

Каталог /bin содержит двоичные файлы многих основных программ и утилит (ls, cp, cd и т.д.), которые должны присутствовать при монтировании системы в однопользовательском режиме. Приложения, такие как Firefox, хранятся в /usr/bin , в то время как важные системные программы и утилиты, такие как оболочка bash, находятся в /bin .

Примечание: Монтирование файловой системы — это системный процесс, подготавливающий раздел диска к использованию операционной системой.



/boot — boot files (загрузочные файлы)

Каталог /boot содержит файлы, необходимые для загрузки системы. Например, здесь хранятся файлы загрузчика GRUB и ваши ядра Linux. Однако конфигурационные файлы загрузчика находятся не здесь — они лежат в /etc вместе с другими конфигурационными файлами.



/cdrom — исторически сложившаяся папка для CD-ROM

Каталог /cdrom не является частью FHS, но вы все равно можете встретить его, например, в Ubuntu или других дистрибутивах Linux. Это временное место для компакт-дисков. Однако стандартное расположение временных носителей находится внутри каталога /media .

/dev — device files (файлы устройств)

Различные устройства воспринимаются и отображаются системой Linux в виде файлов, хранящихся в каталоге /dev. Стоит отметить, что это не настоящие файлы, какими мы их привыкли воспринимать, а специальный тип (интерфейс), используемый операционной системой для взаимодействия с устройствами. Например, файл /dev/sda представляет собой первый SATA-диск в системе. Если вы хотите разбить его на разделы, то можете запустить редактор разделов и попросить его отредактировать файл /dev/sda . Файл /dev/sr — это CD-ROM, а файл /dev/wlan , как вы наверняка уже догадались, соответствует беспроводному сетевому интерфейсу. Также в этом каталоге могут содержаться специальные файлы псевдоустройств, которые на самом деле не сопоставляются с реальным оборудованием, например:

/dev/random — генератор случайных чисел;

/dev/zero — источник бесконечной последовательности нулевых байтов.



/etc — configuration files (конфигурационные файлы)

Каталог /etc содержит основные конфигурационные файлы системы, используемые администратором системы и её службами, такие как файл паролей и файлы настроек сетей. Обычно их можно редактировать вручную в текстовом редакторе. Если вам нужно внести изменения в конфигурацию системы (например, изменить имя хоста), то именно здесь вам стоит искать необходимые файлы. Обратите внимание, что каталог /etc содержит общесистемные конфигурационные файлы; пользовательские конфигурационные файлы находятся в домашнем каталоге каждого пользователя.



/home — личные каталоги пользователей

Каталог /home является хранилищем домашних папок пользователей системы, в которых те хранят свои личные файлы, заметки, утилиты и пр. Домашний каталог содержит пользовательские данные и пользовательские файлы конфигурации.

При создании нового пользователя в системе Linux, обычно для него создается соответствующий домашний каталог (и группа, но об этом позже). Предположим, что в вашей системе уже есть два пользователя: alice и bob. Тогда их домашние каталоги будут иметь пути /home/alice и /home/bob соответственно. Обратите внимание, что каждый (обычный) пользователь имеет доступ на запись только в свою домашнюю папку. Например, у пользователя bob не будет доступа к каталогу /home/alice и наоборот.



/usr — user binaries and program data (пользовательские двоичные файлы и программные данные)

Каталог /usr содержит исполняемые файлы, файлы библиотек и заголовочные файлы большинства пользовательских программ. По этой причине практически все они доступны только для чтения (для обычного пользователя).

/usr/bin — основные пользовательские утилиты;

/usr/sbin — дополнительные утилиты для администрирования и настройки системы;

/usr/lib — библиотеки утилит из /usr/bin и /usr/sbin ;

/usr/share — содержит документацию или общие для всех библиотек данные.



/lib — каталог совместно используемых библиотек

Каталог /lib содержит библиотеки, необходимые двоичным файлам в каталогах /bin и /sbin .

/sbin — системные утилиты

Каталог /sbin аналогичен каталогу /bin . Он содержит основные двоичные файлы утилит системного администрирования, которые, обычно, предназначены для запуска привилегированным (root) пользователем (ifconfig, dhclient, dmidecode, init и т.д.).



/tmp — временные файлы

Как следует из названия, в каталоге /tmp хранятся временные файлы используемых приложений (вы тоже можете задействовать данный каталог для размещения своих временных файлов).

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



/var — файлы изменяемых данных

Каталог /var (сокр. от «variable») является доступным для записи аналогом каталога /usr . Файлы журналов, кэш программ, информация об очереди печати, общая информация с момента запуска системы — всё это пишется в каталог /var .

Файлы, хранящиеся здесь, не очищаются автоматически. По этой причине данный каталог представляет большой интерес для системных администраторов, ищущих информацию о поведении своей системы. Например, если вы хотите ознакомиться с глобальным системным журналом Linux, то просто посмотрите содержимое файла /var/log/syslog .



/proc — файлы процессов

Каталог /proc похож на каталог /dev , потому что он содержит не обычные файлы, а специальные файлы, предоставляющие информацию о запущенных процессах и состоянии ядра. Содержимое каталога /proc используется рядом утилит для получения системной информации этапа времени выполнения.

Например, если вы хотите проверить информацию о процессоре в Linux, то можете просто обратиться к файлу /proc/cpuinfo . Если вы хотите проверить использование памяти вашей системы Linux, посмотрите на содержимое файла /proc/meminfo .



/opt — optional software (дополнительное ПО)

Каталог /opt содержит подкаталоги для дополнительных пакетов программного обеспечения. Обычно он используется проприетарным программным обеспечением, которое не подчиняется стандартной иерархии файловой системы, например, проприетарная программа при установке может сохранить свои файлы в /opt/application .

/root — the home directory of the root (домашняя папка root-пользователя)

Каталог /root — это домашний каталог пользователя root. Вместо того, чтобы быть расположенным в /home/root , он находится в /root . Стоит отметить, что следует отличать данный каталог от каталога / , который, в свою очередь, является корневым каталогом всей системы.

/media — mount point for removable media (точка монтирования съемных носителей)

При подключении съемного носителя, такого как USB-диск, SD-карта или DVD-диск, для них автоматически создается соответствующая папка в каталоге /media. При помощи такой папки вы можете получить доступ к содержимому съемного носителя.



/mnt — mount directory (точка монтирования файловых систем)

Каталог /mnt похож на каталог /media , но вместо автоматического монтирования съемного носителя, /mnt используется системными администраторами для ручного монтирования различных файловых систем.

Примечание: Исторически сложилось, что каталог /mnt — это место, где системные администраторы монтировали временные файловые системы во время их использования. Например, если вы монтируете раздел Windows для выполнения некоторых операций восстановления файлов, вы можете смонтировать его в /mnt/windows . Однако вы также можете монтировать файловые системы и в отличном от /mnt месте системы.

/srv — service data (служебные данные)

/run — application state files (файлы текущего состояния приложений)

Каталог /run предоставляет приложениям стандартное место для хранения временных файлов и данных, которые требуются для работы различных процессов с момента запуска системы (сокеты, идентификаторы процессов и пр.). Данные файлы не сохраняются в /tmp по той причине, что из /tmp они могут быть удалены.



/lost+found — recovered files (восстановленные файлы)

Каждая файловая система Linux имеет каталог /lost+found. Если файловая система выходит из строя, то при следующей загрузке будет выполнена её проверка. Все найденные поврежденные файлы будут помещены в каталог /lost+found , так что вы сможете попытаться восстановить как можно больше данных.


А думать кто будет ?

Как можно в кратчайшие сроки их восстановить?

Из бэкапа системы. Если бэкапа нет - то переустановка.

понятно. Хотелось бы узнать, почему так произошло, чтобы опять не наступить на те же грабли?


<iZEN-mode> zfs rollback zroot/usr@2012-02-24 </iZEN-mode>


Хотелось бы узнать, почему так произошло

Что именно? Почему mv затёр корень или почему нейроны в твоём мозге неадекватно перемкнуло?

Вы знаете что такое маска ?

  • * - Любое число любых символов
  • ? - Любой один символ
  • - один символ, входящий в интервал

Это не принимая во внимание решулярные выражения.


Если это именно та команда, ищи все свои ошметки в /var или какой там тебе каталог покажет последним echo /*

т.е. если без * выполнил бы, то все осталось бы на местах?

Если у вас так же в директории /folder не было бы поддиреткорий usr, bin и etc то да, тогда бы не затёрлось.

Но проблема в другом, прежде чем что-то делать нужно сначала подумать что ты делаешь, если не уверен - почитай документацию.



Стоп! Только что воспроизвёл идентичный сценарий, результат мне непонятен:

Почему так произошло?

mv folder/DATA q/bin q/dev q/etc q/lib

Все эти каталоги переместились в q/lib, всё правильно.


Тьфу ты, это же очевидно.

понятно. Хотелось бы узнать, почему так произошло, чтобы опять не наступить на те же грабли?

Желательно не использовать root.


опять не наступить на те же грабли?

Не сидеть под рутом.

Желательно не использовать root.
Не сидеть под рутом.

Иногда под рутом надо глобы использовать, так что добавлю, если не понимаешь во что глоб развернется, запускай сначала команду как аргумент к команде echo, типа:


А этот трюк работает только с основными командами?


Хотя я так понимаю это обрабатывает баш (ну или что там) или где я не прав?


99% людей которые приходят с оффтопика сидят под рутом.
Ну типа думая что это +100 к интеллекту.

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


У меня сервер на дебиане уже год как только под рутом работает. И за это время он наоборот, стал SIDом из сквиза неожиданно, причем рабочим. Просто забыл про временно подключенный репозиторий. А все остальное ломают люди, которым вообще плевать на то, что остается после их пальчиков на пыльном мониторе

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


нет, нужно было использовать cp -R, а не mv.


В командировке разбирался с угроханным таким образом МСВСом. (Да, пользователи работали под рутом.) К счастью, все стёртые каталоги были из числа стандартных, а на соседнем компе стоял точно такой же МСВС, поэтому я их просто перекинул по сети.

как мне не работать под рутом, если мне требовалось переместить файлы в системные директории?


Исключения, конечно, бывают. Ну тогда надо быть максимально осторожным и предварительно запустить тестовый вариант команды, как советовали выше.


Не представляю, как так можно подчистить корень)


kostik87

- один символ, входящий в интервал

бегом читать man bash и думать, почему вот так:


kernel25

как мне не работать под рутом, если мне требовалось переместить файлы в системные директории?

а зачем вам перемещать файлы в системные директории?


winddos

А этот трюк работает только с основными командами?

это фишка bash'а, и к командам не имеет отношения.

очевидно, mv засунет все каталоги в посл. У меня в /var (звёздочка ещё и сортирует по алфавиту).

Для ТС'а, возьмите mc, и перекиньте всё на своё место.


bhfq

нет, нужно было использовать cp -R, а не mv.

просто думать надо. И использовать то, что нужно использовать. Ибо mv это почти всегда не cp|rm.

А что вы должны были увидеть ?


kostik87

А что вы должны были увидеть ?

а что вы там вещали про звёздочку и про вопрос? Звёздочка _совпадает_ с любым числом любых символов, причём рассортировывает найденные файлы по алфавиту. Вопросительный знак _совпадает_ с любым символом. А вот нихрена НЕ совпадает. Это просто буквы алфавита, от a до z. Разницу понимаем?

Мальчик, пыл убавь, я написал:

  • * - Любое число любых символов
  • ? - Любой один символ
  • - один символ, входящий в интервал

Один символ, входящий в интервал, как пример указал интервал от 'a' до 'z', , буква - это символ, и указано что он входит в интервал, в данном случае я написал пример интервала, а именно строчные английские буквы в интервале от 'a' до 'z'. Это пример, если вам не ясно тут уж ничего не поделать, к примеру можно было указать интервал от '0' до '9', .


что-бы было понятнее, попробуйте такую команду:


kostik87

Мальчик, пыл убавь, я написал

ну раз ты так хочешь, могу и мордой в ман ткнуть.

Логично развернётся в AaB AbB AcB AdB AeB AfB AgB AhB AiB AjB AkB AlB AmB AnB AoB ApB AqB ArB AsB AtB AuB AvB AwB AxB AyB AzB



kostik87

я что где-то это опровергаю, я лишь говорю о шаблонах, а их применять и главное понимать это уже должны вы сами.

правильно. А во что развернуться шаблоны A*B, A?B, and A[a-z]B? Можете проверить - это уже _поиск_ файлов, а не подстановка. А это подстановка, и от файлов она не зависит.


ты начал хамить первым.

Логично, что сели в лужу (мне как раз недавно именно этот кусок man bash понадобился, потому. Ну не честно конечно.)

Где я сел в лужу ?

Это всё маски, применяемые в шаблонах.

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

Третья маска конкретизирована.

Можете проверить - это уже _поиск_ файлов, а не подстановка. А это подстановка, и от файлов она не зависит.

И что из этого и там и там это маска.


мне ещё раз ман процитировать?

что непонятно-то? попробую разжевать: эквивалентно 0 1 2 3 4 5 6 7 8 9. Т.е тоже самое. Можете так писать, можете эдак. а вот echo *2* покажет все _имена файлов_, в которых есть хоть одна цифра. А echo 4 покажет _имена файлов_, которые имеют вид 0, 1, 2, 3, 4, 5, 6, 7, 8, и 9. А если таких имён нет, данная команда покажет 6. Как и звёздочка с вопросом.


dpkg -S /etc | sed 's/\,//g' | xargs sudo aptitude reinstall

Ну это-то здесь при чём ? Я написал пример шаблонов с пояснением.

что непонятно-то? попробую разжевать: эквивалентно 0 1 2 3 4 5 6 7 8 9. Т.е тоже самое. Можете так писать, можете эдак. а вот echo *3* покажет все _имена файлов_, в которых есть хоть одна цифра. А echo 9 покажет _имена файлов_, которые имеют вид 0, 1, 2, 3, 4, 5, 6, 7, 8, и 9. А если таких имён нет, данная команда покажет 1. Как и звёздочка с вопросом.

А если таких имён нет, данная команда покажет 9. Как и звёздочка с вопросом.

Это и так ясно и я это знаю.

Вы мне объясните суть ваших претензий.

3 - интервал? Конечно интервал. Но применяется в шаблоне поиска.

- интервал ? Конечно интервал. Но применяется в шаблоне подстановки.


kostik87

mv 3* folder/
mv * folder/ Выполнится одинаково.

в том-то и дело, что нет.

Ошибки будут, это логично, т.к. здесь просто генерируются последовательности символов согласно шаблону, будет получена эта последовательность:

А шаблон с маской '4' раскроется в последовательность элементов содержащую имена существующих файлов.

Но фактический результат выполнения операций с шаблоном будет одинаков, в первом случае будут корректно выполнены операции копирования для элементов списка подстановки по шаблону, которые соответствуют именам существующих файлов. Для элементов списка для которых нет файла с таким же именем операция копирования завершится ошибкой, во втором случае список элементов полученных по шаблону будет содержать только имена существующих файлов.

разумеется нужно учитывать что возможны ошибки в связи с отсутствием файлов.

Сути это не меняет , я описал частный пример интервала и он корректен. Мне не понятны ваши претензии ко мне, если вы хотели дополнить моё описание и указать что - маска интервала подстановки, а [a1-a2] - маска интервала поиска, пожалуйста, дополняйте.

Я то здесь при чём?


kostik87

Ошибки будут, это логично, т.к. здесь просто генерируются последовательности символов согласно шаблону

просто есть такая штука как man bash, и там англ. по чёрному описан Pattern Matching. И там прямо как у вас три пункта:

  1. звёздочка
  2. вопросик
  3. а вот третий пункт совсем другой. Там про квадратные скобки, а не про

Про фигурные написано совсем в другом месте, а именно в Brace Expansion и к Pattern Matching оно никакого отношения не имеет. Да и вообще к именам файлов напрямую не относится.

Изображение пользователя Mike.

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

- Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.

- Файловая система /usr содержит все команды, библиотеки, man-страницы, исходные тексты и другие неизменяемые файлы, необходимые для нормальной работы системы. Никакие файлы в /usr не должны быть специфическими для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.

- Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.

- Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если речь идето небольшом сервере или личном однопользовательском компьютере. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей, тем не менее, важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs-файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы, например, man-страницы в огромном числе мест, благодаря чему поиск их программой просмотра сильно осложняется.

Корневая файловая система

Файловая система root должна быть небольших размеров, так как она содержит важные файлы и команды. Чем меньше объем файловой системы и чем реже она подлежит изменениям, тем меньше вероятность ее повреждения. Если система root повреждена, то обычно это означает, что начальная загрузка компьютера невозможна (кроме отдельных методов, например при помощи дискет).

Файловая система дистрибутива имеет архитектуру классической файловой системы ОС Linux с единым корневым каталогом, обозначаемым символом обратной косой черты ("слэш") — /.

Ниже приведено описание основных каталогов верхнего уровня.

/bin - В этом каталоге хранятся основные команды, необходимые пользователю для работы в системе. Например, такие как командные оболочки и команды файловой системы (ls, cp и т.д.). Каталог /bin обычно не изменяется после установки. Если изменяется, то обычно лишь при обновлениях пакетов программ, предоставленных разработчиками операционной системы.

/boot - В этом каталоге хранятся файлы, используемые загрузчиком ОС — LInux LOader (LILO). Этот каталог так же практически не изменяется после установки.

/dev - В этом каталоге размещены описания устройств системы. В Linux всё рассматривается, как файл, даже различные устройства, такие как последовательные порты, жёсткие диски и сканеры. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл, называемый device node. Все эти файлы находятся в каталоге /dev. Аналогично устроено большинство UNIX-подобных операционных систем.

/etc - Этот каталог содержит файлы настроек: всё, от конфигурационных файлов системы X Window, базы данных пользователей и до стартовых сценариев.

/home - В этом каталоге размещены домашние каталоги пользователей. Linux является многопользовательской системой и каждому пользователю присваивается имя и уникальный каталог для персональных файлов. Этот каталог называется "home" (домашним) каталогом пользователя.

/lib - В этом каталоге находятся системные библиотеки, необходимые для основных программ: библиотека C, динамический загрузчик, библиотека ncurses, модули ядра и другое.

/lib/modules - Подгружаемые модули для ядра (например, сетевые драйверы или поддержка дополнительных файловых систем).

/lost+found - В этом каталоге сохраняются восстановленные части файловой системы. При загрузке системы происходит проверка файловых систем на наличие ошибок. Для исправления ошибок файловой системы запускается программа fsck.

/mnt - Этот каталог предоставляется как временная точка монтирования для жёстких дисков, дискет, компакт-дисков или отключаемых устройств.

/opt - В этом каталоге размещаются дополнительные пакеты программ. Особенность Linux в том, что все пакеты программ, устанавливаются в этот каталог, например /opt/<программный пакет>. В последствии если этот пакет больше не будет нужен, то достаточно всего лишь удалить соответствующий каталог. В дистрибутивах SlackWare некоторые программы изначально поставляются в каталоге /opt (например, KDE - в /opt/kde).

/proc - Это специальный каталог не входящий в файловую систему. Каталог /proc представляет собой виртуальную файловую систему, которая предоставляет доступ к информации ядра. Различная информация, которую ядро может сообщить пользователям, находится в "файлах" каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo — информация о процессоре компьютера.

/root - Это домашний каталог администратора, вместо /home/root. Это потому, что каталог /home может находиться в разделе, отличном от корневого (/) и если по какой-то причине /home не может быть подключён, то пользователь root вынужден будет войти в систему, чтобы решить проблему. И если его домашний каталог на другом диске, то это усложнит вход в систему.

/sbin - В этом каталоге хранятся основные программы, выполняемые пользователем root а так же программы, выполняемые в процессе загрузки. Обычные пользователи не могут пользоваться этими программами.

/tmp - Временное хранилище данных. Все пользователи имеют права чтения и записи в этом каталоге.

/usr - Это один из самых больших каталогов в системе. Практически всё остальное расположено здесь. Программы, документация, исходный код ядра и система X Window. Именно в этот каталог, чаще всего, устанавливаются программы.

/var - В этом каталоге хранятся системные лог-файлы, кэш-файлы и файлы-замки программ. Это каталог для часто меняющихся данных.

Каталог /etc - В этом каталоге содержится довольно много различных конфигурационных файлов. Некоторые из них рассмотрены ниже. Здесь также располагаются файлы, используемые для конфигурирования сети.

/etc/rc.d - Командные файлы, выполняемые при запуске системы или при смене ее уровня выполнения.

/etc/passwd - База данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, зашифрованный пароль и другие данные. Формат этого файла рассмотрен в man-руководстве к команде passwd.

/etc/fdprm - Таблица параметров флоппи-дисковода, определяющая формат записи. Устанавливается программой setfdprm.

/etc/fstab - Список файловых систем, автоматически монтируемых во время запуска системы командой mount -a (она запускается из командного файла /etc/rc.d/rc.S). Здесь также содержится информация о swaр-областях, автоматически устанавливаемых командой swapon -a.

/etc/group - Подобен файлу /etc/рasswd, только здесь содержится информация о группах, а не о пользователях.

/etc/inittab - Конфигурационный файл демона init.

/etc/issue - Выводится программой getty перед приглашением login. Обычно здесь содержится краткое описание системы.

/etc/magic - Конфигурационный файл команды file. Содержит описания различных форматов файлов, опираясь на которые эта команда определяет тип файла. Также см. руководства к magic и file.

/etc/mtab - Список смонтированных на данный момент файловых систем. Изначально устанавливается командными файлами при запуске, а затем автоматически модифицируется командой mount. Используется при необходимости получения доступа к смонтированным файловым системам (например, командой df).

/etc/shadow - Теневая база данных пользователей. При этом информация из файла /etc/рasswd перемещается в /etc/shadow, который недоступен для чтению никому, кроме пользователя root. Это усложняет взлом системы.

/etc/login.defs - Конфигурационный файл команды login.

/etc/printcap - То же, что и /etc/termcap, только используется при работе с принтером.

/etc/profile - Этот командный файл выполняется оболочкой Bourne Shell при запуске системы, что позволяет изменять системные установки для всех пользователей.

/etc/securetty - Определяет терминалы, с которых может подключаться к системе пользователь root. Обычно это только виртуальные консоли, что усложняет взлом системы через модем или сеть.

/etc/shells - Список рабочих оболочек. Команда chsh позволяет менять рабочую оболочку только на оболочки, находящиеся в этом файле. Процесс ftрd, предоставляющий работу с FTР, проверяет наличие оболочки пользователя в файле /etc/shells и не позволяет пользователю подключится к системе, пока ее имя не будет найдено в этом файле.

/etc/termcap - База данных совместимости терминалов. Здесь находятся escape-последовательности для различных типов терминалов, что позволяет работать программам на разных типах терминалов.

Каталог /dev - В этом каталоге находятся файлы устройств. Названия этих файлов соответствуют специальным положениям, рассмотренным в списке устройств (Device list). Файлы устройств создаются во время установки системы, а затем с помощью скрипта /dev/MAKEDEV. Файл /dev/MAKEDEV.local используется при создании локальных файлов устройств или ссылок (т.е. тех, что не соответствуют стандарту MAKEDEV).

Каталог /usr - Обычно файловая система /usr достаточно большая по объему, так как многие программы установлены именно здесь. Вся информация в каталоге /usr помещается туда во время установки системы. Отдельно устанавливаемые пакеты программ и другие файлы размещаются в каталоге /usr/local. Некоторые подкаталоги системы /usr рассмотрены ниже (для более подробной информации см. описание стандарта FSSTND).

/usr/X11R6 - Все файлы, используемые системой X Window. Для упрощения установки и администрирования, файлы системы X Window размещаются в отдельной структуре каталогов, которая находится в /usr/X11R6 и идентична структуре /usr.

/usr/bin - Практически все команды, хотя некоторые находятся в /bin или в /usr/local/bin.

/usr/sbin - Команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root (например, здесь находится большинство программ-серверов).

/usr/man, /usr/info, /usr/doc - Файлы man-руководств, документации GNU Info и другая документация.

/usr/include - Подключаемые файлы библиотек для языка С.

/usr/src - Исходные тексты программ, установленных в системе, в том числе ядра Linux.

/usr/lib - Неизменяемые файлы данных для программ и подсистем, включая некоторые конфигурационные файлы. Имя lib происходит от library (библиотека); первоначально библиотеки подпрограмм для программирования хранились в /usr/lib.

/usr/local - Здесь размещаются отдельно устанавливаемые пакеты программ и другие файлы.

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

/var/man/cat* - Временный каталог для форматируемых страниц руководств. Источником этих страниц является каталог /usr/man/man*. Некоторые руководства поставляются в отформатированном виде. Они располагаются в /usr/man/cat*. Остальные руководства перед просмотром должны быть отформатированы. Затем они помещаются в каталог /var/man и при повторном просмотре в форматировании не нуждаются. Каталог /var/man/cat часто очищается, таким же образом, как и прочие временные каталоги.

/var/lib - Файлы, изменяемые при нормальном функционировании системы.

/var/local - Изменяемые данные для программ, установленных в /usr/local (то есть, программы которые были установлены администратором системы). Обратите внимание, что даже в местном масштабе установленные программы должны использовать другие /var каталоги, например, /var/lock.

/var/lock - Файлы-защелки. Многие программы при обращении к какому-либо файлу устройства создают здесь файл-защелку. Другие программы при обращении к какому-либо устройству сначала проверяют наличие файла-защелки в этом каталоге, а затем уже производят доступ к этому устройству.

/var/run - Файлы, информация в которых соответствует действительности только до очередной перезагрузки системы. Например, файл /var/run/utmp содержит информацию о пользователях, подключенных к системе в данный момент.

/var/spool - Каталоги, используемые для хранения почты, новостей, очереди для принтера, а также для других задач. Для каждой задачи существует отдельный каталог в /var/spool, например, почтовые ящики пользователей хранятся в /var/spool/mail.

/var/tmp - Каталог для временных файлов, размер которых достаточно велик или время существования которых больше, чем в /tmp. Хотя администратор системы не должен бы держать очень уж старые файлы в /var/tmp.

Каталог /proc - Файловая система /proc является виртуальной и в действительности она не существует на диске. Ядро создает ее в памяти компьютера. Система /proc предоставляет информацию о системе (изначально только о процессах — отсюда ее название). Некоторые наиболее важные файлы и каталоги рассмотрены ниже. Более подробную информацию о структуре и содержании файловой системы /proc можно найти в man-руководстве к proc.

/proc/1 - Каталог, содержащий информацию о процессе номер 1. Для каждого процесса существует отдельный каталог в /proc, именем которого является его числовой идентификатор.

/proc/cpuinfo - Информация о процессоре, такая как тип процессора, его модель, производительность и др.

/proc/devices - Список драйверов устройств, встроенных в действующее ядро.

/proc/dma - Задействованные в данный момент каналы DMA.

/proc/filesystems - Файловые системы, встроенные в ядро.

/proc/interruрts - Задействованные в данный момент прерывания.

/proc/ioports - Задействованные в данный момент порты ввода/вывода.

/proc/kcore - Отображение физической памяти системы в данный момент. Размер этого файла точно такой же, как и у памяти компьютера, только он не занимает места в самой памяти, а генерируется на лету при доступе к нему программ. Однако при копировании этого файла куда-либо, он не займет места на диске.

/proc/ksyms - Таблица символов ядра.

/proc/loadavg - Ориентировочная загруженность системы.

/proc/meminfo - Информация об использовании памяти, как физической, так и swap-области.

/proc/modules - Список модулей ядра, загруженных в данный момент.

/proc/net - Информация о сетевых протоколах.

/proc/self - Символическая ссылка к каталогу процесса, пытающегося получить информацию из /proc. При попытке двух различных процессов получить какую-либо информацию в /proc, они получают ссылки на различные каталоги. Это облегчает доступ программ к собственному каталогу процесса.

/proc/stat - Различная статистическая информация о работе системы.

/proc/uptime - Время, в течение которого система находится в рабочем состоянии.

/proc/version - Версия ядра.

Хотя многие файлы имеют обычный текстовый формат, некоторые из них имеют собственный. Существует много программ, которые не только преобразуют такие файлы в формат, доступный для чтения, но и предоставляют некоторые функции. Например, программа free считывает файл /proc/meminfo и преобразует значения, указанные в байтах, в килобайты (а также предоставляет некоторую дополнительную информацию).

На этом уроке мы рассмотрим иерархию файловой системы Linux, а также познакомимся с назначением различных каталогов.

Если вы ранее пользовались только Windows, то структура файловой системы Linux может показаться вам особенно чуждой: нет привычного обозначения C:\ и букв дисков, их заменили каталог / и другие папки, большинство из которых имеют странные имена, состоящие из трех букв.

Причина всего этого в том, что в Linux используется свой FHS (сокр. от «Filesystem Hierarchy Standard» = «Стандарт иерархии файловой системы»). FHS определяет структуру и содержание/назначение каталогов в дистрибутивах Linux. Благодаря данному стандарту структура каталогов во всех дистрибутивах Linux является (почти) одной и той же.

Структура каталогов в Linux

Напомню, что Linux основан на системе Unix и, следовательно, заимствует из нее свою иерархию файловой системы. Аналогичную структуру каталогов вы найдете в Unix-подобных операционных системах, таких как BSD и macOS. Однако в дальнейшем я буду использовать именно термин Linux вместо Unix.



/ — корневая директория

Поскольку все остальные каталоги или файлы происходят от корня, абсолютный путь к любому из них начинается с корневой директории. Например, если у вас есть файл в /home/user/documents , то вы можете догадаться, что структура каталогов идет от root->home->user->documents .


С помощью rm -rf / вы просите свою систему принудительно и рекурсивно удалить содержимое корневого каталога. Поскольку в корневом каталоге содержатся все файлы и папки ОС, то данной командой вы стираете все данные, и ваша Linux-система просто должна исчезнуть (теоретически).

Большинство дистрибутивов Linux не запустят эту команду без ключа --no-preserve-root . Но в любом случае, не стоит ради любопытства пытаться выполнить эту команду.

/bin — binaries (двоичные файлы)

Каталог /bin содержит двоичные файлы многих основных программ и утилит (ls, cp, cd и т.д.), которые должны присутствовать при монтировании системы в однопользовательском режиме. Приложения, такие как Firefox, хранятся в /usr/bin , в то время как важные системные программы и утилиты, такие как оболочка bash, находятся в /bin .

Примечание: Монтирование файловой системы — это системный процесс, подготавливающий раздел диска к использованию операционной системой.



/boot — boot files (загрузочные файлы)

Каталог /boot содержит файлы, необходимые для загрузки системы. Например, здесь хранятся файлы загрузчика GRUB и ваши ядра Linux. Однако конфигурационные файлы загрузчика находятся не здесь — они лежат в /etc вместе с другими конфигурационными файлами.



/cdrom — исторически сложившаяся папка для CD-ROM

Каталог /cdrom не является частью FHS, но вы все равно можете встретить его, например, в Ubuntu или других дистрибутивах Linux. Это временное место для компакт-дисков. Однако стандартное расположение временных носителей находится внутри каталога /media .

/dev — device files (файлы устройств)

Различные устройства воспринимаются и отображаются системой Linux в виде файлов, хранящихся в каталоге /dev. Стоит отметить, что это не настоящие файлы, какими мы их привыкли воспринимать, а специальный тип (интерфейс), используемый операционной системой для взаимодействия с устройствами. Например, файл /dev/sda представляет собой первый SATA-диск в системе. Если вы хотите разбить его на разделы, то можете запустить редактор разделов и попросить его отредактировать файл /dev/sda . Файл /dev/sr — это CD-ROM, а файл /dev/wlan , как вы наверняка уже догадались, соответствует беспроводному сетевому интерфейсу. Также в этом каталоге могут содержаться специальные файлы псевдоустройств, которые на самом деле не сопоставляются с реальным оборудованием, например:

/dev/random — генератор случайных чисел;

/dev/zero — источник бесконечной последовательности нулевых байтов.



/etc — configuration files (конфигурационные файлы)

Каталог /etc содержит основные конфигурационные файлы системы, используемые администратором системы и её службами, такие как файл паролей и файлы настроек сетей. Обычно их можно редактировать вручную в текстовом редакторе. Если вам нужно внести изменения в конфигурацию системы (например, изменить имя хоста), то именно здесь вам стоит искать необходимые файлы. Обратите внимание, что каталог /etc содержит общесистемные конфигурационные файлы; пользовательские конфигурационные файлы находятся в домашнем каталоге каждого пользователя.



/home — личные каталоги пользователей

Каталог /home является хранилищем домашних папок пользователей системы, в которых те хранят свои личные файлы, заметки, утилиты и пр. Домашний каталог содержит пользовательские данные и пользовательские файлы конфигурации.

При создании нового пользователя в системе Linux, обычно для него создается соответствующий домашний каталог (и группа, но об этом позже). Предположим, что в вашей системе уже есть два пользователя: alice и bob. Тогда их домашние каталоги будут иметь пути /home/alice и /home/bob соответственно. Обратите внимание, что каждый (обычный) пользователь имеет доступ на запись только в свою домашнюю папку. Например, у пользователя bob не будет доступа к каталогу /home/alice и наоборот.



/usr — user binaries and program data (пользовательские двоичные файлы и программные данные)

Каталог /usr содержит исполняемые файлы, файлы библиотек и заголовочные файлы большинства пользовательских программ. По этой причине практически все они доступны только для чтения (для обычного пользователя).

/usr/bin — основные пользовательские утилиты;

/usr/sbin — дополнительные утилиты для администрирования и настройки системы;

/usr/lib — библиотеки утилит из /usr/bin и /usr/sbin ;

/usr/share — содержит документацию или общие для всех библиотек данные.



/lib — каталог совместно используемых библиотек

Каталог /lib содержит библиотеки, необходимые двоичным файлам в каталогах /bin и /sbin .

/sbin — системные утилиты

Каталог /sbin аналогичен каталогу /bin . Он содержит основные двоичные файлы утилит системного администрирования, которые, обычно, предназначены для запуска привилегированным (root) пользователем (ifconfig, dhclient, dmidecode, init и т.д.).



/tmp — временные файлы

Как следует из названия, в каталоге /tmp хранятся временные файлы используемых приложений (вы тоже можете задействовать данный каталог для размещения своих временных файлов).

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



/var — файлы изменяемых данных

Каталог /var (сокр. от «variable») является доступным для записи аналогом каталога /usr . Файлы журналов, кэш программ, информация об очереди печати, общая информация с момента запуска системы — всё это пишется в каталог /var .

Файлы, хранящиеся здесь, не очищаются автоматически. По этой причине данный каталог представляет большой интерес для системных администраторов, ищущих информацию о поведении своей системы. Например, если вы хотите ознакомиться с глобальным системным журналом Linux, то просто посмотрите содержимое файла /var/log/syslog .



/proc — файлы процессов

Каталог /proc похож на каталог /dev , потому что он содержит не обычные файлы, а специальные файлы, предоставляющие информацию о запущенных процессах и состоянии ядра. Содержимое каталога /proc используется рядом утилит для получения системной информации этапа времени выполнения.

Например, если вы хотите проверить информацию о процессоре в Linux, то можете просто обратиться к файлу /proc/cpuinfo . Если вы хотите проверить использование памяти вашей системы Linux, посмотрите на содержимое файла /proc/meminfo .



/opt — optional software (дополнительное ПО)

Каталог /opt содержит подкаталоги для дополнительных пакетов программного обеспечения. Обычно он используется проприетарным программным обеспечением, которое не подчиняется стандартной иерархии файловой системы, например, проприетарная программа при установке может сохранить свои файлы в /opt/application .

/root — the home directory of the root (домашняя папка root-пользователя)

Каталог /root — это домашний каталог пользователя root. Вместо того, чтобы быть расположенным в /home/root , он находится в /root . Стоит отметить, что следует отличать данный каталог от каталога / , который, в свою очередь, является корневым каталогом всей системы.

/media — mount point for removable media (точка монтирования съемных носителей)

При подключении съемного носителя, такого как USB-диск, SD-карта или DVD-диск, для них автоматически создается соответствующая папка в каталоге /media. При помощи такой папки вы можете получить доступ к содержимому съемного носителя.



/mnt — mount directory (точка монтирования файловых систем)

Каталог /mnt похож на каталог /media , но вместо автоматического монтирования съемного носителя, /mnt используется системными администраторами для ручного монтирования различных файловых систем.

Примечание: Исторически сложилось, что каталог /mnt — это место, где системные администраторы монтировали временные файловые системы во время их использования. Например, если вы монтируете раздел Windows для выполнения некоторых операций восстановления файлов, вы можете смонтировать его в /mnt/windows . Однако вы также можете монтировать файловые системы и в отличном от /mnt месте системы.

/srv — service data (служебные данные)

/run — application state files (файлы текущего состояния приложений)

Каталог /run предоставляет приложениям стандартное место для хранения временных файлов и данных, которые требуются для работы различных процессов с момента запуска системы (сокеты, идентификаторы процессов и пр.). Данные файлы не сохраняются в /tmp по той причине, что из /tmp они могут быть удалены.



/lost+found — recovered files (восстановленные файлы)

Каждая файловая система Linux имеет каталог /lost+found. Если файловая система выходит из строя, то при следующей загрузке будет выполнена её проверка. Все найденные поврежденные файлы будут помещены в каталог /lost+found , так что вы сможете попытаться восстановить как можно больше данных.

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

каталог /etc

В каталоге /etc находятся конфигурационные файлы, рассмотрим подробнее каждый из них.

/etc/rc.d

содержит основные скрипты для организации процесса загрузки;

/etc/passwd

файл, где мы можем найти информацию о пользователях в виде списка.

/etc/fdprm

Таблица параметров флоппи-дисковода, определяющая формат записи. Устанавливается программой setfdprm.

/etc/fstab

Можем увидеть информацию о системе, какие разделы диска необходимо примонтировать при её старте.Команда mount -a (она запускается из командного файла /etc/rc.d/rc.S). Здесь также содержится информация о swaр-областях, автоматически устанавливаемых командой swapon -a.

/etc/group

файл, где мы можем найти информацию о группах пользователей в виде списка.

/etc/inittab

Конфигурационный файл демона init.

/etc/issue

Файл, где содержится информация о системе с приглашением входа в систему. Параметры и возможные ключи представлены ниже, по умолчанию в файле /etc/issue/ выглядит так:

Возможные ключи файла issue:

/etc/magic

Конфигурационный файл команды file. Содержит описания различных форматов файлов, опираясь на которые эта команда определяет тип файла.

/etc/motd
/etc/mtab

Список файловых систем в настоящее время .

/etc/shadow

Теневая база данных пользователей. При этом информация из файла /etc/рasswd перемещается в /etc/shadow, который доступен root и включает зашифрованную информацию о паролях

/etc/login.defs

Конфигурационный файл команды login который содержит значения параметров паролей пользователей: период устаревания паролей, длинна пароля, необходимость создания домашней директории пользователя, идентификатор групп пользователей.

/etc/printcap

файл, где должна конфигурироваться информация о принтере для возможности печати.

/etc/profile

файл выполняется оболочкой Bash при запуске системы, что позволяет изменять системные установки для всех пользователей.

/etc/securetty

Определяет терминалы, с которых может подключаться к системе пользователь root. Обычно это только виртуальные консоли, что усложняет взлом системы через модем или сеть.
Примерный вид:

Лучше оставить только tty1:

/etc/shells

Список рабочих оболочек. Команда chsh позволяет менять рабочую оболочку только на оболочки, находящиеся в этом файле. Процесс ftрd, предоставляющий работу с FTР, проверяет наличие оболочки пользователя в файле /etc/shells и не позволяет пользователю подключится к системе, пока ее имя не будет найдено в этом файле.

Читайте также: