Понимая, как работают конфигурационные файлы, вы можете существенно повысить уровень владения Linux. В статье рассказываем, как конфигурационные файлы управляют пользовательскими разрешениями, системными приложениями, демонами и другими административными задачами в многопользовательской среде.  Само ядро можно назвать «программой». Зачем ядру конфигурационные файлы? Ему нужно знать список пользователей и групп в системе, управлять правами доступа к файлам (определять, может ли файл открываться конкретным пользователем в соответствии с разрешениями UNIX_USERS).  Такие файлы считываются не программами, а функцией, предоставляемой системной библиотекой и используемой ядром. Предположим, программа, которой требуется зашифрованный пароль пользователя, не должна открывать файл /etc/passwd. Вместо этого следует вызвать функцию системной библиотеки getpw(). Этот тип функции также известен как системный вызов. Через системную библиотеку ядро открывает файл /etc/passwd и затем ищет пароль запрошенного пользователя. «Администрирование Linux. Мега» Большинство конфигурационных файлов Linux находятся в каталоге /etc, если не указано иное. В зависимости от сферы применения и служб, на которые они влияют, конфигурационные файлы делят на несколько категорий, о которых и пойдёт речь дальше. /etc/host.conf Сообщает серверу сетевого домена, как искать имена хостов. Сначала идёт /etc/hosts, затем имя сервера. Файл можно изменить через netconf. /etc/hosts Содержит список известных хостов в локальной сети. Может использоваться, если IP-адрес системы не генерируется динамически.  /etc/hosts.allow Справочная страница, аналогичная hosts_access. /etc/hosts.deny Справочная страница, аналогичная hosts_access. /etc/issue & /etc/issue.net Такие файлы считываются mingetty (и аналогичными программами) для отображения приветственной строки пользователю, подключающемуся с терминала (issue) или через сеанс telnet(issue.net). Они включают в себя несколько строк с указанием номера выпуска Red Hat, названия и идентификатора ядра. Используются rc.local. /etc/redhat-release Включает одну строку с указанием номера и названия выпуска Red Hat. Используется rc.local. /etc/rc.d/rc Предназначен для перевода системы с одного уровня выполнения на другой. В процессе начальной загрузки переводит систему из однопользовательского режима на уровень, задаваемый по умолчанию. /etc/rc.d/rc.local Помогает конфигурировать запуск системы — запускать дополнительные программы и подключать библиотеки к работающим процессам. Также позволяет уничтожать работающие процессы с помощью утилиты slay и перезапускать их с другими параметрами, однако такой подход считается громоздким. /etc/rc.d/rc.sysinit Используется для локальной инициализации системы. /etc/rc.d/rc/rc X.d Скрипты запускаются из rc (X означает любое число от 1 до 5). Эти каталоги являются специфичными каталогами «уровня выполнения». Когда система запускается, она определяет уровень выполнения, который необходимо инициировать, а затем вызывает все сценарии запуска, присутствующие в каталоге для этого уровня выполнения. Например, система запускается, и после сообщений о запуске появляется сообщение «вход на уровень выполнения 3» — это означает, что будут вызваны все сценарии инициализации в каталоге /etc/rc.d/rc3.d/. Ядро предоставляет интерфейс для отображения структур данных, которые могут быть полезны при определении системных параметров — прерываний, статистики памяти и др. Этот интерфейс представляет собой отдельную файловую систему, известную как /proc filesystem. Многие системные утилиты используют значения, присутствующие в этой файловой системе или отображающие системную статистику. Например, в файле /proc/modules перечислены загруженные в данный момент модули. Информация считывается командой lsmod, которая затем отображает её в удобочитаемом формате.  /etc/mtab Содержимое файла не обновляется средствами ядра ОС, а поддерживается в актуальном состоянии средствами утилиты mount. Когда файловые системы монтируются и размонтируются, изменения немедленно отражаются в этом файле. /etc/fstab Содержит список файловых систем, которые в настоящее время «монтируются» компьютером. Файл важен, поскольку во время загрузки компьютер запускает команду mount -a, которая монтирует каждую файловую систему, отмеченную цифрой «1» в предпоследнем столбце fstab. /etc/mtools.conf Считается конфигурационным файлом для всех операций (mkdir, copy, format и др.) в файловой системе типа DOS. /etc/group Определяет группы в системе Linux. Один пользователь может присутствовать более чем в одной группе, если он выполняет несколько задач. Например, если «user» является администратором, а также членом группы проекта «project 1», то его запись в файле группы будет выглядеть так: user: * : group-id : project1 /etc/nologin Основная задача файла — показать сообщение пользователям, которые пытаются войти в систему во время завершения работы. Как только сообщение отображается, процедура входа в систему завершается, что останавливает вход пользователя в систему. Пример: если файл /etc/nologin существует, то login(1) разрешит доступ только пользователю root. Другим пользователям будет показано содержимое этого файла, но во входе в систему им будет отказано. /etc/passwd Содержит информацию об учётной записи пользователя, включая пароли (если они не «затенены»). /etc/rpmrc Конфигурация команды rpm. Все параметры командной строки rpm устанавливаются вместе в этом файле, поэтому они применяются глобально, когда любая команда rpm запускается в системе. /etc/securetty            Содержит имена устройств tty-линий (по одной на строку, без ведущего /dev/), на которых root разрешён вход. /etc/usertty /etc/shadow Содержит информацию о зашифрованном пароле для учётных записей пользователей и, при необходимости, информацию об истечении срока действия пароля. Включены следующие поля:  — имя для входа в систему  — зашифрованный пароль  — количество дней с 1 января 1970 года, когда пароль был изменен в последний раз  — количество дней до того, как пароль может быть изменен  — количество дней, после которых пароль должен быть изменен — количество дней до истечения срока действия пароля о том, что пользователь предупрежден  — количество дней после истечения срока действия пароля. /etc/shells Содержит список возможных «оболочек», доступных системе. /etc/motd Сообщение дня — используется, если администратор хочет передать какое-то сообщение всем пользователям сервера Linux. /etc/gated.conf Представляет собой конфигурационные данные для работы демона gated, предназначенного для маршрутизации протоколов RIP, BGP, EGP, HELLO и OSPF. /etc/gated.version Содержит номер версии демона gated. /etc/gateway Опционально используется демоном routed. /etc/networks Хранит доменные имена и IP-адреса сетей, с которыми у вашей системы есть соединение. Сети имеют сокращенные IP-адреса. В зависимости от типа сети в IP-адресах может использоваться одно, два или три числа. IP-адреса записываются в файле /etc/networks вместе с соответствующими им доменными именами сетей.  /etc/protocols Хранит список доступных на данный момент протоколов. Никогда не должен меняться. /etc/resolv.conf Определяет, как система использует DNS для разрешения имен хостов и IP-адресов. /etc/rpc Содержит инструкции/правила для RPC, которые можно использовать при вызовах NFS, удаленном монтировании файловой системы и др. /etc/exports В этом файле перечислены все каталоги, экспортируемые с сервера. Одна строка задает один каталог.  В файле /etc/exports один каталог может быть указан дважды: один раз для NFS версии 2 или NFS версии 3 и один раз — для NFS версии 4. Сервер автоматически экспортирует указанные каталоги каждый раз при запуске сервера NFS. Затем клиенты могут смонтировать экспортированные каталоги.  /etc/services Содержит информацию о многочисленных службах, которые клиентские приложения могут использовать на компьютере. Преобразует имена сетевых служб в номер порта/протокол. /etc/inetd.conf Конфигурационный файл для суперсервера inetd. Изменять этот файл следует только при необходимости добавления или удаления описаний серверов. /etc/sendmail.cf Файл конфигурации почтовой программы sendmail. Содержит большое количество опций, представленных в неудобном для восприятия виде, поэтому анализировать содержимое данного файла и редактировать его довольно сложно. /etc/sysconfig/network Глобальный файл конфигурации. Позволяет установить, хотите ли вы использовать сетевое соединение (NETWORKING=yes or no).  /etc/sysconfig/network-scripts/if* Скрипты настройки сети Red Hat. Системные команды предназначены для управления системой и обеспечения того, чтобы все работало должным образом. Все программы вроде как logic (выполняющей аутентификацию пользователя на консоли) или bash (обеспечивающей взаимодействие между пользователем и компьютером) являются системными командами, поэтому связанные с ними файлы особенно важны.  В таблице перечисляем файлы, представляющий наибольший интерес для пользователей и администраторов. /etc/lilo.conf Содержит параметры командной строки системы по умолчанию, а также различные образы для загрузки. Вы можете просмотреть весь список, нажав Tab в командной строке LILO. /etc/logrotate.conf Поддерживает файлы журнала, присутствующие в каталоге /var/log. /etc/identd.conf Identd — сервер, который реализует предлагаемый TCP/IP протокол идентификации пользователя IDENT. identd работает путем поиска конкретных соединений TCP/IP и возврата имени пользователя процесса, владеющего соединением. При необходимости он может возвращать другую информацию вместо имени пользователя.  /etc/ld.so.conf Конфигурация для динамического компоновщика /etc/inittab Хронологически первый конфигурационный файл в UNIX. Первая программа, запускаемая после включения компьютера UNIX, — это init, которая знает, что делать благодаря inittab. Файл /etc/inittab управляет порождением процессов программой init.  /etc/termcap База данных, содержащая все возможные типы терминалов и их возможности. Демон — программа, которая всегда работает в фоновом режиме. Обычно её задачи связаны с сетевой областью: они ожидают подключений, чтобы через них можно было предоставлять услуги. Для Linux доступно множество демонов, начиная от веб-серверов и заканчивая ftp-серверами. /etc/syslogd.conf Содержит информацию, используемую демоном системного журнала syslogd(1M) для пересылки системного сообщения соответствующим файлам журнала и/или пользователям /etc/httpd.conf Файл конфигурации для веб-сервера Apache. Обычно находится не в /etc, а в в /usr/local/httpd/conf/ или /etc/httpd/conf/. Чтобы определить точное нахождение, вам нужно проверить конкретную установку Apache. /etc/conf.modules or /etc/modules.conf Файл конфигурации ядра. Заботится о загрузке дополнительных модулей ядра «на лету», когда это необходимо. В Linux (и UNIX в целом) существует бесчисленное множество «пользовательских» программ. Наиболее распространенным файлом конфигурации пользовательской программы считается /etc/lynx.cfg. Это файл конфигурации для lynx — хорошо известного текстового браузера. С помощью этого файла вы можете определить прокси-сервер, используемый набор символов и др.  Пример кода ниже показывает часть файла lynx.cfg, который может быть отредактирован для изменения настроек прокси-сервера системы Linux. Эти настройки применяются ко всем пользователям, запускающим lynx в соответствующих оболочках, если только пользователь не переопределит конфигурационный файл по умолчанию, указав --cfg = "mylynx.cfg. При изменении конфигурационных файлов убедитесь, что программа, использующая эту конфигурацию, перезапущена, если она не контролируется системным администратором или ядром. Обычный пользователь, как правило, не имеет привилегий для запуска или остановки системных программ и/или демонов. Изменение конфигурационных файлов в ядре сразу влияет на систему. Например, изменение файла passwd для добавления пользователя немедленно активирует этого пользователя. Также есть некоторые настраиваемые параметры ядра в каталоге /proc/sys в любой системе Linux. Доступ к записи ко всем этим файлам предоставляется только суперпользователю; другие пользователи имеют доступ только для чтения Также в каталоге /proc/sys в любой системе Linux есть некоторые настраиваемые параметры ядра. Редактирование этих файлов доступно только суперпользователю; другие пользователи имеют доступ только для чтения. Файлы в этом каталоге классифицируются таким же образом, как и исходный код ядра Linux. Каждый файл в этом каталоге представляет собой структуру данных ядра, которую можно динамически модифицировать для изменения производительности системы. Важно: прежде чем менять какое-либо значение в любом из файлов, убедитесь, что вы знаете о нём всё, чтобы избежать непоправимого ущерба для системы. Файлы в каталоге /proc/sys/kernel/ Название файла Описание threads-max максимальное количество задач, которые может выполнить ядро ctrl-alt-del If 1, то нажатие этой последовательности клавиш полностью перезагружает систему sysrq If 1, то Alt-SysRq активен osrelease отображает версию операционной системы ostype отображает тип операционной системы hostname имя хоста системы domainname   сетевой домен, частью которого является система modprobe указывает, должен ли modprobe автоматически запускаться и загружать необходимые модули Некоторые демоны во время работы внимательно следят за конфигурационными файлами и автоматически перезагружают их при изменении. Однако большинство демонов не выполняют автоматическую перезагрузку. Нам нужно как-то «сообщить» им, что конфигурационный файл изменился и его следует перезагрузить. Это можно сделать путем перезапуска служб с помощью команды service. Например, если мы изменили конфигурацию сети, нам нужно указать: Примечание: сервисы чаще всего представляют собой скрипты, находящиеся в каталоге /etc/rc.d/init.d/*, и запускаются программой инициализации при загрузке системы. Чтобы перезапустить сервис, вы также можете сделать следующее: start, stop и status — значения, которые эти скрипты принимают в качестве входных данных для выполнения действия. Пользовательская или системная программа считывает свой конфигурационный файл при каждом запуске. Однако некоторые системные программы запускаются при включении компьютера, и их поведение зависит от того, что они читают в конфигурационных файлах в /etc/. Таким образом, при первом запуске пользовательской программы конфигурация по умолчанию считывается из файлов, находящихся в каталоге /etc/. Позже пользователь может настроить программы с помощью rc и . (dot) files.  «Обычный» пользователь не может зайти в /etc и изменить конфигурационные файлы. С точки зрения файловой системы они принадлежат пользователю root. Вот почему большинство пользовательских программ определяют два конфигурационных файла: на «системном» уровне, расположенный в /etc/;  «личный» для пользователя, который можно найти в домашнем каталоге. Разберём на примере утилиты wget. В /etc/ есть файл /etc/wgetrc. В домашнем каталоге есть файл с именем .wgetrc, который описывает настроенную конфигурацию (которая будет загружена только тогда, когда пользователь выполнит команду wget). Другие пользователи также могут иметь файл .wgetrc в своем домашнем каталоге (/home/other). Этот файл будет прочитан, только тогда, когда пользователь запустит команду wget. Иными словами, файл /etc/wgetrc предоставляет значения «по умолчанию» для wget, а файл /home/xxx/.wgetrc перечисляет «настройки» для определенного пользователя. Важно понимать, что это «общее правило», и оно не обязательно верно для всех случаев. Например, у программы pine нет файлов в /etc/, только пользовательская конфигурация в домашнем каталоге пользователя в файле с именем .pinerc. Другие программы могут иметь только файл конфигурации по умолчанию в /etc/ и могут не позволять пользователям «настраивать» их. В этой статье мы разобрали конфигурационные файлы, которые управляют пользовательскими разрешениями, системными приложениями, демонами и др. А также рассмотрели особенности процесса изменения конфигурационных файлов.  «Администрирование Linux. Мега»  Редактор в MobileUp