[Перевод] Конфигурационные файлы Linux
1. Краткое содержание
Мощность ОС Linux кроется в возможности гибко настраивать систему под наши потребности. Большинство дистрибутивов содержат продвинутые пользовательские интерфейсы для конфигурации системы, однако, по сути, они лишь редактируют текстовые файлы в различных системных папках. Понимая, как работают конфигурационные файлы, мы можем отказаться от этих интерфейсов и повысить свой уровень владения Linux.
Из этого руководства вы узнаете, где файлы конфигурации расположены и каковы их функции. Благодаря стандарту иерархии файловой системы (Filesystem Hierarchy Standard) папки и файлы, которые мы рассмотрим, сохраняют своё расположение даже в разных дистрибутивах.
Прим. переводчика:
Прежде чем двигаться дальше, следует разобраться, как устроена файловая система согласно стандарту FHS.
Все файлы и каталоги располагаются в корневой директории «/»
. Даже если эти данные находятся на различных носителях, какие-то из этих каталогов присутствуют, а какие-то могут отсутствовать. В качестве примера можно привести каталоги, связанные с подсистемой X Window, когда каталогов может и не быть, если графическая подсистема не установлена. Однако, большинство каталогов присутствует на всех UNIX-подобных операционных системах и используется аналогичным образом.
Более детально можно почитать, например, тут.
2. Глобальные файлы конфигурации
Глобальные файлы конфигурации определяют поведение системы в целом.
Как правило, они располагаются в корневом разделе диска (/
), а доступ к ним требует прав суперпользователя.
Справедливости ради, стоит заметить, что согласно стандарту FHS конфигурационные файлы не хранятся в корневой директории, она пустая и содержит в себе только папки.
2.1. /etc/
Большинство глобальных файлов конфигурации хранится в папке /etc
.
Папка /etc/
больше походит на файловую систему с множеством подпапок, в которых размещены соответствующие конфигурационные файлы.
Ниже приведён список наиболее полезных подпапок:
/etc/X11/
— конфигурационные файлыxorg
;/etc/cups/
— подпапка с конфигурационными данными сервера печати CUPS (Common UNIX Printing System);/etc/xdg/
— глобальные файлы конфигурации для приложений, придерживающихся стандартов freedesktop.org;/etc/ssh/
— используется для конфигурации поведения сервераOpenSSH
для всей системы;/etc/apparmor.d/
— содержит конфигурационные файлы для системы AppArmor;/etc/udev/
— настройки, относящиеся кudev
.
2.2. /etc/opt/
Папка /etc/opt/
должна содержать глобальные файлы конфигурации приложений, установленных в /opt/
. Однако в Linux это требование не является обязательным. В результате бывает, что папка /opt/
полна установленных пользователем программ, а /etc/opt/
остаётся пустой.
2.3. /etc/default/
Исторически конфигурационные файлы в папке /etc/default/
содержали настройки сервисов/программ-демонов для их использования с системами инициализации, например upstart. Однако с появлением systemd
эта папка стала использоваться в основном для настроек приложений пользовательского пространства.
Система не перезаписывает файлы в папке /etc/default/
. А значит, как только мы настроили там поведение приложений, оно не изменится при обновлении системы.
2.4. Важные глобальные файлы конфигурации
Вот несколько наиболее полезных глобальных файлов конфигурации:
/etc/resolv.conf
— в нём определяется, какой (какие) DNS-сервер (ы) использует система;/etc/bash.bashrc
— в нём задают команды для выполнения в момент запуска командной оболочкиbash
;/etc/profile
— интерактивная командная оболочка выполняет команды скрипта .profile при запуске;/etc/dhcp/dhclient.conf
— там хранятся сетевые данные, которые запрашивают DHCP-клиенты;/etc/fstab
— определяет, где будут смонтированы все доступные системе разделы диска;/etc/hostname
— задаёт имя хоста для машины;/etc/hosts
— файл, соединяющий IP-адреса с именами хостов;/etc/hosts.deny
— перечисленные в этом файле удалённые хосты лишены доступа к машине;/etc/mime.types
— содержит MIME-типы данных и соответствующие им расширения файлов;/etc/motd
— файл с текстом сообщения, которое выводится при входе пользователя в систему;/etc/timezone
— задаёт часовой пояс;/etc/sudoers
— файл sudoers контролирует привилегии, относящиеся к командеsudo
;/etc/httpd/conf
и/etc/httpd.conf.d
— конфигурация веб-сервера Apache;/etc/default/grub
— содержит конфигурацию, которую использует командаupdate-grub
для создания файла/boot/grub/grub.cfg
;/boot/grub/grub.cfg
— командаupdate-grub
генерирует этот файл автоматически в соответствии с настройками, заданными в файле/etc/default/grub
.
3. Пользовательская конфигурация
Файлы пользовательской конфигурации определяют поведение системы только для задающего настройки пользователя.
Эти файлы, как правило, расположены в домашней папке пользователя и не требуют прав суперпользователя для редактирования.
Следует иметь в виду, что пользовательские настройки всегда имеют более высокий приоритет, чем глобальные. Иными словами, приложение всегда будет придерживаться пользовательских настроек, если таковые есть.
В части пользовательских настроек приложения соответствуют одному из двух стандартов.
3.1. Традиционные файлы конфигурации
Как правило, если у приложения всего один файл конфигурации, его можно найти так: /home/(username)/.(app_name{rc})
. Но если конфигурационных файлов больше, то они хранятся в папке /home/(username)/.(app_name)
.
Наглядный пример такого приложения — редактор vim
.
3.2. Конфигурационные файлы, соответствующие стандарту XDG
Разработчики freedesktop.org решили, что старая система недостаточно упорядочена, и выработали базовую спецификацию каталогов XDG.
По стандарту XDG все файлы пользовательской конфигурации хранятся в папке $XDG_CONFIG_HOME
(обычно в /home/(username)/.config
).
Внутри $XDG_CONFIG_HOME
каждое приложение создаёт свои подпапки для конфигурационных файлов.
Базовой спецификации каталогов XDG теперь придерживаются редактор NeoVim и многие активно развивающиеся приложения. Для пользователей стандарт тоже удобен: одной резервной копии папки $XDG_CONFIG_HOME
достаточно, чтобы сохранить все настройки.
3.3. Важные файлы пользовательской конфигурации
Среди наиболее часто используемых файлов пользовательской конфигурации следует перечислить:
$HOME/.xinitrc
— в нём содержатся указания о запуске менеджера окон при работе с командойstartx
;$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
для конкретного пользователя.
4. Заключение
В этой статье мы рассмотрели два типа конфигурационных файлов, которые используются в Linux, и узнали, где их найти.
Кроме того, заглянули в наиболее распространённые папки для хранения конфигурационных файлов и выяснили, как более старые и новые приложения работают с пользовательскими настройками.
Поскольку ОС Linux не налагает ограничений на эти конфигурационные файлы, их синтаксис может быть самым разным. Но если взять на себя труд и хоть немного в них разобраться, знание конфигурационных файлов освобождает от ограничений пользовательских интерфейсов, предназначенных для новичков.
НЛО прилетело и оставило здесь промокоды для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
— 20% на выделенные серверы AMD Ryzen и Intel Core — HABRFIRSTDEDIC.