Compare commits

...

3 Commits
v6.3 ... v7.1

Author SHA1 Message Date
nnz1024
eb7a6ce4b1 Version v7.1 (2011-08-01 18:05) [AUTO] 2017-08-17 23:05:38 +03:00
nnz1024
6ddc14e9e7 Version v7.0 (2011-07-29 19:01) [AUTO] 2017-08-17 23:05:38 +03:00
nnz1024
df5abe6fc6 Version v6.4 (2011-06-16 20:33) [AUTO] 2017-08-17 23:05:38 +03:00

93
s4a.tex
View File

@@ -706,7 +706,7 @@ WantedBy=multi-user.target
во-вторых, указание, что данный юнит рекомендуется активировать после запуска
демона системного лога\footnote{Строго говоря, эту зависимость здесь
указывать не~нужно~--- в системах, в которых демон системного лога активируется
через сокет, эта зависимость является избыточной. Современные реализации
через сокет, данная зависимость является избыточной. Современные реализации
демона системного лога (например, rsyslog начиная с пятой версии)
поддерживают активацию через сокет. В системах, использующих такие
реализации, явное указание +After=syslog.target+ будет избыточным, так
@@ -1175,10 +1175,10 @@ chroot-окружения требует глубокого понимания
встроенную поддержку chroot. К сожалению, в системе Fedora, установленной с
параметрами по умолчанию, таких демонов всего два:
\href{http://avahi.org/}{Avahi} и RealtimeKit. Оба они написаны одним очень
хитрым человеком ;-) (Вы можете собственноручно убедится в этом, выполнив
хитрым человеком ;-) (Вы можете собственноручно убедиться в этом, выполнив
команду +ls -l /proc/*/root+.)
Возвращаясь к тема нашего обсуждения: разумеется, systemd позволяет помещать
Возвращаясь к теме нашего обсуждения: разумеется, systemd позволяет помещать
выбранных демонов в chroot, и управлять ими точно так же, как и другими.
Достаточно лишь указать параметр +RootDirectory=+ в соответствующем
service-файле. Например:
@@ -1857,6 +1857,93 @@ shed)~--- если первое из этих решений принимает
этих разработчиков планируют обеспечить поддержку новой конфигурации даже в
системах без systemd.
\section{О судьбе /etc/sysconfig и /etc/default}
В дистрибутивах, основанных на Red Hat и SUSE, это каталог называется
+/etc/sysconfig+. В дистрибутивах на базе Debian, его зовут +/etc/default+.
Во многих других дистрибутивах также присутствуют каталоги похожего назначения.
Связанные с ними вопросы неоднократно появляются в дискуссиях пользователей и
разработчиков systemd. В этой статье мне хотелось бы рассказать, что я, как
разработчик systemd, думаю об этих каталогах, и пояснить, почему я считаю
необходимым от них отказаться. Стоит отметить, что это мое личное мнение, и оно
может не~совпадать с позицией проекта Fedora или моего работодателя.
Начнем с небольшого исторического экскурса. Каталог +/etc/sysconfig+ появился в
дистрибутивах Red Hat и SUSE задолго до того, как я присоединился к этим
проектам~--- иными словами, это было очень давно.
Некоторое время спустя, в Debian появился аналогичный по смыслу каталог
+/etc/default+. Многие дистрибутивы используют такие каталоги, называя их
по-разному. Они имеются даже в некоторых ОС семейства Unix. (Например, в SCO.
Если эта тема вас заинтересовала~--- рекомендую обратиться к вашему знакомому
ветерану Unix, он расскажет подробнее и интереснее, чем я.) Несмотря на то,
что подобные каталоги широко используются в Linux и Unix, они совершенно
не~стандартизированы~--- ни в POSIX, ни в LSB/FHS, и результате мы имеем целый
зоопарк их различных реализаций в разных дистрибутивах.
Назначение этих каталогов определено весьма расплывчато. Абсолютное большинство
находящихся в них файлов являются включаемыми\footnote{Прим. перев.: здесь автор
использует термин sourcable, происходящий от bash'овской директивы +source+,
обеспечивающей включение в скрипт кода из внешнего файла. В классическом POSIX
shell это соответствует оператору-точке <<+.+>>. В отличие от прямого запуска
одного скрипта из другого, включаемый код исполняется той же самой оболочкой,
что и основной код, и при возвращении в основной скрипт сохраняются переменные
окружения, определенные во включаемом коде. Как правило, код для включения
не~содержит shebang'а (+#!/bin/sh+ в начале файла).} shell-скриптами, содержащими,
главным образом, определения переменных. Большинство файлов из этих каталогов
включаются в одноименные скриптами SysV init. Этот принцип отражен в
\href{http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit}{Debian
Policy Manual (раздел 9.3.2)} и в
\href{http://fedoraproject.org/wiki/Packaging:SysVInitScript}{Fedora Packaging
Guidelines}, однако в обоих этих дистрибутивах иногда встречаются файлы,
не~соответствующие такой схеме, например, не~имеющие соответствующего
init-скрипта, или даже сами не~являющиеся скриптами.
Но почему вообще появились эти каталоги? Чтобы ответить на этот вопрос,
обратимся к истории развития концепции SysV init-скриптов. Исторически, они
располагаются в каталоге под названием +/etc/rc.d/init.d+ (или что-то похожее).
Отметим, что каталог +/etc+ вообще-то предназначен для хранения файлов
конфигурации, а не~исполняемого кода (в частности, скриптов). Однако, в начале
своей истории, init-скрипты рассматривались именно как файлы конфигурации,
и редактирование их администратором было общепринятой практикой. Но со временем,
по мере роста и усложнения этих скриптов, их стали рассматривать уже не~как
файлы конфигурации, а как некие программы. Чтобы упростить их настройку и
обеспечить безопасность процесса обновления, настройки были вынесены в отдельные
файлы, загружаемые при работе init-скриптов.
Попробуем составить некоторое представление о настройках, которые можно сделать
через эти файлы. Вот краткий неполный список различных параметров, которые могут
быть заданы через переменные окружения в таких файлах (составлен мною по
результатам исследования соответствующих каталогов в Fedora и Debian):
\begin{itemize}
\item Дополнительные параметры командной строки для бинарника демона.
\item Настройки локали для демона.
\item Тайм-аут остановки для демона.
\item Режим остановки для демона.
\item Системные настройки, например, системная локаль, часовой пояс,
параметры клавиатуры для консоли.
\item Избыточные информация о системных настройках, например, указание,
установлены ли аппаратные часы по Гринвичу или по местному
времени.
\item Списки правил брандмауэра, не~являются скриптом (!).
\item Привязки к процессорным ядрам для демона.
\item Настройки, не~относящиеся к процессу загрузки, например,
информация по установке пакетов с новыми ядрами, конфигурация
nspluginwrapper, разрешение на выполнение
предварительного связывания (prelinking) библиотек.
\item Указание, нужно ли запускать данную службу или нет.
\item Настройки сети.
\item Перечень модулей ядра, которые должны быть подгружены
принудительно.
\item Нужно ли отключать питание компьютера при остановке системы
(+poweroff+) или нет (+halt+).
\item Права доступа для файлов устройств (!).
\item Описание соответствующей SysV службы.
\item Идентификатор пользователя/группы, значение umask для демона.
\item Ограничения по ресурсам для демона.
\item Приоритет OOM killer'а для демона.
\end{itemize}
\end{document}
vim:ft=tex:tw=80:spell:spelllang=ru