- Конфигурационные файлы Linux
- 2. Глобальные файлы конфигурации
- 2.1. /etc/
- 2.2. /etc/opt/
- 2.3. /etc/default/
- 2.4. Важные глобальные файлы конфигурации
- 3. Пользовательская конфигурация
- 3.1. Традиционные файлы конфигурации
- 3.2. Конфигурационные файлы, соответствующие стандарту XDG
- 3.3. Важные файлы пользовательской конфигурации
- 4. Заключение
- Linux configuration file libraries [closed]
- 7 Answers 7
- Linked
- Related
- Hot Network Questions
Конфигурационные файлы Linux
Мощность ОС Linux кроется в возможности гибко настраивать систему под наши потребности. Большинство дистрибутивов содержат продвинутые пользовательские интерфейсы для конфигурации системы, однако, по сути, они лишь редактируют текстовые файлы в различных системных папках. Понимая, как работают конфигурационные файлы, мы можем отказаться от этих интерфейсов и повысить свой уровень владения Linux.
Из этого руководства вы узнаете, где файлы конфигурации расположены и каковы их функции. Благодаря стандарту иерархии файловой системы (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 конфигурационные файлы не хранятся в корневой директории, она пустая и содержит в себе только папки.
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) . Но если конфигурационных файлов больше, то они хранятся в папке /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 .
Linux configuration file libraries [closed]
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Are there any good configuration file reading libraries for C\C++ that can be used for applications written on the linux platform. I would like to have a simple configuration file for my application. At best i would like to steer clear of XML files that might potentially confuse users.
I think your decision to avoid XML is a good one. XML isn’t really human readable except in an emergency.
7 Answers 7
Another option is Boost.PropertyTree (doc). It allows to read/write XML, INI, JSON and Info files. And you get portability for free.
Boost program_options This allows you to read program options from config files, environment variables and the command line. It is portable and very easy to use.
If you just want a simple config file, with a list of commands and/or variable settings, then it’s very easy to write your own parser, so easy that it’s probably not worth using a library. If you need something more complicated then the parser rapidly becomes more complicated and an existing library is worth using.
I’ve never tried using libconfig, but it looks like a good choice, and I like the format of the config files it uses.
You need to decide whether you want your program to be able to write config files. If it’s a GUI program, you probably do. This will affect what libraries are suitable.
For a single app, you could consider libconfuse.
If you need to be able to handle a wide variety of config file formats (e.g. for a web portal for a system, which needs to read and write config files from many apps in many formats), there is Augeas.
The question is what file format did you have in mind? The attribute «simple» is a bit of an underspecification. If you are looking for a library that can use «windows .ini formated» config files you may want to check out ACE http://www.cs.wustl.edu/~schmidt/ACE/ .
Linked
Related
Hot Network Questions
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.14.43533
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.