[Перевод] Хозяйке на заметку: разбираемся с конфигурационными файлами Linux

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

2540b1a5ec3907eda2e46181241bc87e.jpg

Введение в конфигурационные файлы

Само ядро можно назвать «программой». Зачем ядру конфигурационные файлы? Ему нужно знать список пользователей и групп в системе, управлять правами доступа к файлам (определять, может ли файл открываться конкретным пользователем в соответствии с разрешениями UNIX_USERS). 

Такие файлы считываются не программами, а функцией, предоставляемой системной библиотекой и используемой ядром. Предположим, программа, которой требуется зашифрованный пароль пользователя, не должна открывать файл /etc/passwd. Вместо этого следует вызвать функцию системной библиотеки getpw (). Этот тип функции также известен как системный вызов. Через системную библиотеку ядро открывает файл /etc/passwd и затем ищет пароль запрошенного пользователя.

15f4780b1ac16970be274caaa95046c4.jpg

«Администрирование 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.

.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/

.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space.  If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge

Изменение конфигурационных файлов 

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

Ядро

Изменение конфигурационных файлов в ядре сразу влияет на систему. Например, изменение файла 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.

Например, если мы изменили конфигурацию сети, нам нужно указать:

service network restart.

Примечание: сервисы чаще всего представляют собой скрипты, находящиеся в каталоге /etc/rc.d/init.d/*, и запускаются программой инициализации при загрузке системы. Чтобы перезапустить сервис, вы также можете сделать следующее:

/etc/rc.d/init.d/ start | stop | status

start, stop и status — значения, которые эти скрипты принимают в качестве входных данных для выполнения действия.

Пользовательские программы

Пользовательская или системная программа считывает свой конфигурационный файл при каждом запуске. Однако некоторые системные программы запускаются при включении компьютера, и их поведение зависит от того, что они читают в конфигурационных файлах в /etc/. Таким образом, при первом запуске пользовательской программы конфигурация по умолчанию считывается из файлов, находящихся в каталоге /etc/. Позже пользователь может настроить программы с помощью rc и. (dot) files. 

Пользовательские конфигурационные файлы: . (dot) files and rc 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. Мега»

© Habrahabr.ru