- PVSM.RU - https://www.pvsm.ru -
Мощность ОС Linux кроется в возможности гибко настраивать систему под наши потребности. Большинство дистрибутивов содержат продвинутые пользовательские интерфейсы для конфигурации системы, однако, по сути, они лишь редактируют текстовые файлы в различных системных папках. Понимая, как работают конфигурационные файлы, мы можем отказаться от этих интерфейсов и повысить свой уровень владения Linux.
Из этого руководства вы узнаете, где файлы конфигурации расположены и каковы их функции. Благодаря стандарту иерархии файловой системы [1] (Filesystem Hierarchy Standard) папки и файлы, которые мы рассмотрим, сохраняют своё расположение даже в разных дистрибутивах.
Прежде чем двигаться дальше, следует разобраться, как устроена файловая система согласно стандарту FHS.
Все файлы и каталоги располагаются в корневой директории «/». Даже если эти данные находятся на различных носителях, какие-то из этих каталогов присутствуют, а какие-то могут отсутствовать. В качестве примера можно привести каталоги, связанные с подсистемой X Window, когда каталогов может и не быть, если графическая подсистема не установлена. Однако, большинство каталогов присутствует на всех UNIX-подобных операционных системах и используется аналогичным образом.
| Раздел | Корневая директория, содержащая всю файловую иерархию |
|---|---|
| /bin/ | Утилиты, которые доступны всем пользователям, такие как cat, ls, cp и др. |
| /boot/ | Загрузочные файлы (файлы загрузчика, ядро, initrd, System.map). Как правило, выносится на отдельный раздел. |
| /dev/ | Файлы устройств. Файлы в данном каталоге обычно создаются драйверами (например, /dev/null, /dev/zero, /dev/sda1). |
| /etc/ | Основной каталог конфигурационных файлов системы. |
| /home/ | Домашние директории с пользовательскими данными. Могут быть на отдельном разделе либо монтироваться по nfs. |
| /lib/ | Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/. |
| /media/ | Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, флеш-карты. |
| /mnt/ | Используется для монтирования временных файловых систем. |
| /opt/ | Дополнительное программное обеспечение. Сюда обычно устанавливаются различные компиляторы и пользовательское ПО, которое не требует соответствия FSHS |
| /proc/ | Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде файлов. |
| /root/ | Домашняя директория пользователя root. |
| /sbin/ | Основные системные программы для администрирования и настройки системы (например, init, iptables, ifconfig). |
| /srv/ | Данные, специфичные для окружения системы. |
| /tmp/ | Временные файлы. |
| /usr / | Вторичная иерархия для данных пользователя, содержит большинство пользовательских приложений и утилит. |
| /usr/bin/ | Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме. При различных решениях может монтироваться отдельно. |
| /usr/include/ | Стандартные заголовочные файлы. |
| /usr/lib/ | Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/. |
| /usr/sbin/ | Дополнительные системные программы (такие как демоны различных сетевых сервисов). |
| /usr/share/ | Архитектурно-независимые общие данные. |
| /usr/src/ | Исходные коды ядра. |
| /usr/local/ | Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/. |
| /var/ | Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров. |
| /var/lock/ | Лок-файлы, указывающие на занятость некоторого ресурса. |
| /var/log/ | Различные log-файлы. |
| /var/mail/ | Почтовые ящики пользователей. |
| /var/run/ | Информация о запущенных программах (в основном о демонах). |
| /var/spool/ | Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма). |
| /var/tmp/ | Временные файлы, которые должны быть сохранены между перезагрузками. |
Более детально можно почитать, например,тут [2].
Глобальные файлы конфигурации определяют поведение системы в целом.
Как правило, они располагаются в корневом разделе диска (/), а доступ к ним требует прав суперпользователя.
Справедливости ради, стоит заметить, что согласно стандарту FHS конфигурационные файлы не хранятся в корневой директории, она пустая и содержит в себе только папки.
/etc/
Большинство глобальных файлов конфигурации хранится в папке /etc.
Папка /etc/ больше походит на файловую систему с множеством подпапок, в которых размещены соответствующие конфигурационные файлы.
Ниже приведён список наиболее полезных подпапок:
/etc/X11/ — конфигурационные файлы xorg [3];/etc/cups/ — подпапка с конфигурационными данными сервера печати CUPS [4] (Common UNIX Printing System);/etc/xdg/ — глобальные файлы конфигурации для приложений, придерживающихся стандартов freedesktop.org;/etc/ssh/ — используется для конфигурации поведения сервера OpenSSH [5] для всей системы;/etc/apparmor.d/ — содержит конфигурационные файлы для системы AppArmor;/etc/udev/ — настройки, относящиеся к udev [6]./etc/opt/
Папка /etc/opt/ должна содержать глобальные файлы конфигурации приложений, установленных в /opt/. Однако в Linux это требование не является обязательным. В результате бывает, что папка /opt/ полна установленных пользователем программ, а /etc/opt/ остаётся пустой.
/etc/default/
Исторически конфигурационные файлы в папке /etc/default/ содержали настройки сервисов/программ-демонов для их использования с системами инициализации, например upstart [7]. Однако с появлением systemd [8] эта папка стала использоваться в основном для настроек приложений пользовательского пространства.
Система не перезаписывает файлы в папке /etc/default/. А значит, как только мы настроили там поведение приложений, оно не изменится при обновлении системы.
Вот несколько наиболее полезных глобальных файлов конфигурации:
/etc/resolv.conf — в нём определяется, какой (какие) DNS-сервер(ы) использует система;/etc/bash.bashrc — в нём задают команды для выполнения в момент запуска командной оболочки bash [9];/etc/profile — интерактивная командная оболочка выполняет команды скрипта .profile при запуске;/etc/dhcp/dhclient.conf — там хранятся сетевые данные, которые запрашивают DHCP-клиенты [10];/etc/fstab — определяет, где будут смонтированы все доступные системе разделы диска;/etc/hostname — задаёт имя хоста для машины;/etc/hosts — файл, соединяющий IP-адреса с именами хостов;/etc/hosts.deny — перечисленные в этом файле удалённые хосты лишены доступа к машине;/etc/mime.types — содержит MIME-типы [11] данных и соответствующие им расширения файлов;/etc/motd — файл с текстом сообщения, которое выводится при входе пользователя в систему;/etc/timezone — задаёт часовой пояс;/etc/sudoers — файл sudoers контролирует привилегии, относящиеся к команде sudo [12];/etc/httpd/conf и /etc/httpd.conf.d — конфигурация веб-сервера Apache;/etc/default/grub — содержит конфигурацию, которую использует команда update-grub [13] для создания файла /boot/grub/grub.cfg;/boot/grub/grub.cfg — команда update-grub генерирует этот файл автоматически в соответствии с настройками, заданными в файле /etc/default/grub.Файлы пользовательской конфигурации определяют поведение системы только для задающего настройки пользователя.
Эти файлы, как правило, расположены в домашней папке пользователя и не требуют прав суперпользователя для редактирования.
Следует иметь в виду, что пользовательские настройки всегда имеют более высокий приоритет, чем глобальные. Иными словами, приложение всегда будет придерживаться пользовательских настроек, если таковые есть.
В части пользовательских настроек приложения соответствуют одному из двух стандартов.
Как правило, если у приложения всего один файл конфигурации, его можно найти так: /home/(username)/.(app_name{rc}). Но если конфигурационных файлов больше, то они хранятся в папке /home/(username)/.(app_name).
Наглядный пример такого приложения — редактор vim [14].
Разработчики freedesktop.org решили, что старая система недостаточно упорядочена, и выработали базовую спецификацию каталогов XDG [15].
По стандарту XDG все файлы пользовательской конфигурации хранятся в папке $XDG_CONFIG_HOME (обычно в /home/(username)/.config).
Внутри $XDG_CONFIG_HOME каждое приложение создаёт свои подпапки для конфигурационных файлов.
Базовой спецификации каталогов XDG теперь придерживаются редактор NeoVim и многие активно развивающиеся приложения. Для пользователей стандарт тоже удобен: одной резервной копии папки $XDG_CONFIG_HOME достаточно, чтобы сохранить все настройки.
Среди наиболее часто используемых файлов пользовательской конфигурации следует перечислить:
$HOME/.xinitrc — в нём содержатся указания о запуске менеджера окон при работе с командой startx [16];$HOME/.vimrc — конфигурация vim;$HOME/.bashrc — скрипт, который выполняет командная оболочка bash, когда пользователь запускает командную оболочку без регистрации;$XDG_CONFIG_HOME/nvim/init.vim — конфигурация редактора neovim;$HOME/.editor — задаёт редактор по умолчанию для данного пользователя;$HOME/.gitconfig — в файле указывается имя по умолчанию и адрес электронной почты для указания в коммитах Git;$HOME/.profile — командная оболочка с регистрацией выполняет команды из скрипта .profile при запуске;$HOME/.ssh/config — конфигурация ssh [17] для конкретного пользователя.В этой статье мы рассмотрели два типа конфигурационных файлов, которые используются в Linux, и узнали, где их найти.
Кроме того, заглянули в наиболее распространённые папки для хранения конфигурационных файлов и выяснили, как более старые и новые приложения работают с пользовательскими настройками.
Поскольку ОС Linux не налагает ограничений на эти конфигурационные файлы, их синтаксис может быть самым разным. Но если взять на себя труд и хоть немного в них разобраться, знание конфигурационных файлов освобождает от ограничений пользовательских интерфейсов, предназначенных для новичков.
— 15% на все тарифы VDS [18] (кроме тарифа Прогрев) — HABRFIRSTVDS.
— 20% на выделенные серверы AMD Ryzen и Intel Core [19]— HABRFIRSTDEDIC.
Автор:
1shaman
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/tutorial/371974
Ссылки в тексте:
[1] стандарту иерархии файловой системы: https://www.baeldung.com/cs/files-file-systems#2-file-hierarchy-system
[2] тут: https://ru.wikipedia.org/wiki/FHS
[3] xorg: https://www.baeldung.com/linux/gui#the-x-window-system
[4] CUPS: https://man7.org/linux/man-pages/man1/cups.1.html
[5] OpenSSH: https://www.baeldung.com/cs/ssh-intro
[6] udev: https://man7.org/linux/man-pages/man7/udev.7.html
[7] upstart: https://linux.die.net/man/7/upstart
[8] systemd: https://man7.org/linux/man-pages/man1/systemd.1.html
[9] bash: https://man7.org/linux/man-pages/man1/bash.1.html
[10] DHCP-клиенты: https://www.baeldung.com/cs/dhcp-intro
[11] MIME-типы: https://www.baeldung.com/linux/file-mime-types
[12] sudo: https://www.baeldung.com/linux/sudo-command
[13] update-grub: https://manpages.ubuntu.com/manpages/trusty/man8/update-grub.8.html
[14] vim: https://linux.die.net/man/1/vi
[15] базовую спецификацию каталогов XDG: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
[16] startx: https://man7.org/linux/man-pages/man3/panel.3x.html
[17] ssh: https://man7.org/linux/man-pages/man1/ssh.1.html
[18] 15% на все тарифы VDS: https://firstvds.ru/?utm_source=habr&utm_medium=article&utm_campaign=product&utm_content=vds15exeptprogrev
[19] 20% на выделенные серверы AMD Ryzen и Intel Core : https://1dedic.ru/?utm_source=habr&utm_medium=article&utm_campaign=product&utm_content=coreryzen20#server_configurator
[20] Источник: https://habr.com/ru/post/648793/?utm_source=habrahabr&utm_medium=rss&utm_campaign=648793
Нажмите здесь для печати.