Описание политики Debian (Настройки программ) — Глава 5

0
Rate this post

1. Строки описания архитектуры

Если программе нужно где-то указать строку описания архитектуры, то используется следующий формат:

<arch>-<os>

где `<arch>’ один из: i386, alpha, arm, m68k, powerpc, sparc и `<os>’ один из: linux, gnu. Использование gnu в этой строке зарезервировано для операционной системы GNU/Hurd.

Заметим, что мы не хотим использовать `<arch>-debian-linux’, выполняя правило `architecture-vendor-os'[архитектура-поставщик-ос], т.к. это сделает наши программы несовместимыми с другими дистрибутивами Linux. Также заметим, что мы не используем `<arch>-unknown-linux’, т.к. `unknown'[неизвестен] выглядит не очень хорошо.

2. Демоны

Конфигурационные файлы /etc/services, /etc/protocols и /etc/rpc управляются пакетом netbase и не должны изменяться другими пакетами.

Если пакету необходима запись в одном из этих файлов, сопровождающий должен связаться с сопровождающим netbase, который добавит записи и выпустит новую версию пакета netbase.

Конфигурационный файл /etc/inetd.conf может модифицироваться сценариями пакета только посредством сценария update-inetd или модулем Perl DebianNet.pm.

Если пакет хочет установить пример записи в /etc/inetd.conf, то эта запись должна начинаться с одиночного символа диеза (#). Такие строки рассматриваются как `закомментировано пользователем’ сценарием update-inetd и не изменяются или активизируются во время обновления пакета.

3. Использование псевдо-tty и изменение wtmp, utmp и lastlog

Некоторым программам нужно создавать псевдо-tty. Это выполняется с использованием Unix98 pty, если библиотека C это поддерживает. Конечная программа не должна быть установлена как setuid root, если этого не требуется для других функциональных возможностей.

Файлы /var/run/utmp, /var/log/wtmp и /var/log/lastlog должны устанавливаться с разрешением записи группой utmp. Программы, которым нужно модифицировать эти файлы, должны устанавливаться с помощью install setgid utmp.

4. Редакторы и пейджеры

Некоторые программы имеют возможность запуска внешнего редактора или пейджера для редактирования или отображения текстового документа. Т.к. в дистрибутиве Debian есть много различных редакторов и пейджеров, то системный администратор и любой пользователь должны иметь возможность выбрать свой любимый редактор или пейджер.

Также, каждая программа должна выбирать хороший редактор/пейджер по умолчанию, если не один из них не был задан пользователем или системным администратором.

Поэтому, каждая программа, запускающая редактор или пейджер должна использовать переменные среды EDITOR или PAGER для определения редактора/пейджера, который хотел бы запустить пользователь. Если эти переменные не установлены, то используются программы /usr/bin/editor и /usr/bin/pager, соответственно.

Существует два файла, управляемые через `alternatives.’ Т.е., каждый пакет предоставляющий редактор или пейджер вызывают сценарий update-alternatives для регистрации этих программ.

Если очень сложно приспособить программы под использование переменных EDITOR и PAGER, то программа должна быть настроена на использование /usr/bin/sensible-editor и /usr/bin/sensible-pager в качестве программ редактора или пейджера соответственно. Два этих сценария, предоставляемые базовой системой Debian, проверяют переменные EDITOR и PAGER и запускают соответствующие программы или возвращаются к использованию /usr/bin/editor и /usr/bin/pagerавтоматически.

Программа может также использовать переменную среды VISUAL для определения пользовательского выбора редактора. Если она существует, то имеет превосходство над EDITOR. Фактически, это то же что делает /usr/bin/sensible-editor.

Т.к. базовая система Debian поставляется уже с редактором и пейджером, то для пакетов зависимости на `редактор’ и `пейджер’ не нужны, также как и для пакетов, предоставляющих эти виртуальные пакеты.

5. Web серверы и приложения

Этот раздел описывает местоположение и URL, которые используются всеми web серверами и web приложениями в системе Debian.

1. Cgi-bin исполняемые файлы устанавливаются в каталог

/usr/lib/cgi-bin/<имя-cgi-bin>

и на них можно ссылаться как

http://localhost/cgi-bin/<имя-cgi-bin>

2. Доступ к html документам

Html документы пакетов хранятся в /usr/share/doc/пакет, но должны быть доступны через символические ссылки как /usr/doc/пакет и на них можно ссылаться как

http://localhost/doc/<пакет>/<имя_файла>

3. Корень Web Документов

Web Приложения должны пытаться избегать хранения файлов в корне Web Документов. Вместо этого используется /usr/share/doc/<пакет> каталог для документов, а регистрация Web Приложений через пакет menu. Если доступа к web-root не избежать то

/var/www

используется как корень документов. При этом используется только символическая ссылка туда, где сисадмин расположил настоящий корень документов.

6. Транспортные агенты электронной почты

Debian пакеты, обрабатывающие электронную почту, т.е. пользовательские-почтовые-агенты (MUAs) или агенты-передачи-почты (MTAs), должны быть совместимы с настройками описанными ниже. Несовместимость может привести к потере почты, порче строк From: и другим серьёзным повреждениям!

Буфер почты расположен в /var/spool/mail и интерфейсом отправки почтового сообщения является /usr/sbin/sendmail (как по FHS). Буфер почты—это часть базовой системы и не часть пакета MTA.

Все Debian MUAs, MTAs, MDAs и другие программы доступа к почтовому ящику (типа IMAP демонов) блокируют почтовый ящик NFS-безопасным путём. Это означает, что fcntl() блокировка совмещена с точечной блокировкой. Чтобы избежать взаимных блокировок программы сначала используют fcntl() и после точечную блокировку или альтернативную реализацию двух блокирующих методов в не блокирующем пути.

Использование функций maillock и mailunlock, предоставляемых пакетом liblockfile*, рекомендуется для его реализации.

Почтовые ящики обычно имеют 660 user.mail, если пользователь не выбрал другого. MUA могут удалить почтовый ящик (если он не имеет нестандартных прав), в этом случае MTA или другой MUA может создать его заново, если потребуется. Почтовые ящики должны иметь доступ по записи для группы mail.

Буфер почты имеет 2775 mail.mail, и на MUAs нужно устанавливать setgid mail для блокировок, упомянутых выше (и очевидно, чтобы избежать доступа другим пользователям почтовых ящиков, используя эту привилегию).

/etc/aliases—это исходный файл для псевдонимов почтовой системы (например, postmaster, usenet, и т.д.), он может редактироваться сисадмином и сценариями postinst. После редактирования /etc/aliases программой или человеком, нужно запустить newaliases. Все пакеты MTA должны иметь программу newaliases, даже если она ничего не делает, но старые пакеты MTA ничего не делают для того чтобы программы не завершались некорректно, если нет newaliases.

Соглашение о записи forward to адрес сам почтовый ящик не поддерживает. Вместо этого используй файл .forward.

Местоположением программы rmail, используемой UUCP для входящей почты, является /usr/sbin/rmail, по FHS. Также, rsmtp, для приёма пачек-SMTP-через-UUCP, лежит в /usr/sbin/rsmtp, если она установлена.

Если тебе нужно узнать, какое имя использовать (например) для исходящих новостей и почтовых сообщений, которое создано локально, то ты должен использовать файл /etc/mailname. Он содержит часть после имени пользователя и знака @ (at) для email адресов пользователей машины (после символа новой строки).

Пакет должен проверять существование этого файла. Если он существует, то должен использоваться без комментариев. (Конфигурационный сценарий MTA может попросить пользователя ввести эти данные, даже если этот файл существует.) Если файл не существует, нужно вывести запрос для ввода пользователем этого значения и сохранить его в /etc/mailname, а затем использовать его при настройке пакета. Строка приглашения ввода должна быть такой, чтобы пользователь понял, что это имя будет использоваться не только этим пакетом.

Например, в этой ситуации пакет INN скажет:

Please enter the `mail name' of your system. This is the hostname portion of the apress to be shown on outgoing
news and mail messages. The default is syshostname, your system's host name. Mail name [`syshostname']:
Пожалуйста введите `почтовое название' Вашей системы. Эта часть адреса имени машины будет показываться в почтовых сообщениях и новостях. По умолчанию это syshostname системного имени машины. Почтовое имя [`syshostname']:

где syshostname это выходная информация hostname --fqdn.

7. Настройка системы новостей

Все конфигурационные файлы, связанные с NNTP (новостей) серверами и клиентами должны располагаться в /etc/news.

Вот несколько вопросов по настройке, которые применимы к некоторому числу клиентов новостей и пакетов серверов машины. Итак:

/etc/news/organization

содержит строку, которая будет использоваться в заголовке organization для всех сообщений, создаваемых NNTP клиентами машины.

/etc/news/server

Содержит FQDN вышестоящего сервера NNTP, или localhost, если локальная машина является NNTP сервером.

Другие глобальные файлы могут быть добавлены при необходимости для настройки межпакетных новостей.

8. Программы для X Window System

Некоторые программы можно настроить с или без поддержки X Window System. Обычно, двоичные файлы поставляются с поддержкой X, для запуска которых необходимы совместно используемые библиотеки X.

Такие программы должны быть настроены с поддержкой X, и должны объявлять зависимость от xlib6g (где содержатся совместно используемые библиотеки X). Пользователи которые хотят использовать такие программы, могут установить только относительно маленькие пакеты xfree86-common и xlib6g, и не устанавливать все X.

Не создавай две версии (один с поддержкой X и другой без) своего пакета.

Файлы настроек приложения по умолчанию устанавливаются в каталог /usr/X11R6/lib/X11/app-defaults/. Они рассматриваются как часть кода программы. Т.е., они не должны модифицироваться и не должны помечаться ни как conffiles не как другие конфигурационные файлы. Если администратор локальной системы хочет настроить приложения X глобально, то он должен поместить файл с именем пакета в каталог /etc/X11/Xresources/. Важно: пакеты, которые устанавливают файлы в каталог /etc/X11/Xresources/ должны объявляться конфликтующими с xbase (<<3.3.2.3a-2); если этого не сделать, то возможно пакет уничтожит уже существующий /etc/X11/Xresources файл.

Никакой пакет не должен устанавливать файлы в каталоги /usr/bin/X11/, /usr/share/doc/X11/, /usr/include/X11/, или /usr/lib/X11/; эти каталоги на самом деле символические ссылки, по которым dpkg не следует при распаковке пакета. Вместо них, используй /usr/X11R6/bin/, /usr/share/doc/пакет/ (т.е., размещай файлы с остальной документацией на пакет), /usr/X11R6/include/, и /usr/X11R6/lib/. Это ограничение влияет только на пути используемые пакетами когда они распаковываются в систему; это допустимо, и даже предпочтительно, для файлов внутри пакета (сценарии shell, например) ссылаться на /usr/{bin,include,lib}/X11/каталоги, а не на их /usr/X11R6/ копии — при этом они не будут изменены в случае если в будущем X Window System пакеты будут устанавливать свои файлы в другой каталог.

Если программе пакета необходима (несвободная) библиотека OSF/Motif, то ты должен попытаться определить, будет ли эта программа приемлемо работать со свободной реализацией Motif, называемой LessTif. Если да, до собери пакет с использованием LessTif библиотек; тогда он сможет перейти в главный раздел хранилища пакетов и стать официальной частью дистрибутива Debian.

Однако если, программа, основанная на Motif, неудовлетворительно работает с LessTif, ты должен предоставить "-smotif"и "-dmotif" версии (добавив эти идентификаторы к имени пакета), которые статически и динамически слинкованы с библиотеками Motif, соответственно. (Все хорошо известные версии OSF/Motif разрешают распространение статически-собранных двоичных файлов, использующих библиотеку, но проверь копию лицензии на Motif чтобы быть уверенным.) Такой двух пакетный подход позволяет пользователям без Motif использование пакета, тогда как пользователи с установленным Motif, могут наслаждаться преимуществами динамически собранной версии (значительно сокращая использование дискового пространства, время скачивания, т.д.). Ни "-smotif" ни "-dmotif" пакеты не могут попасть в главный раздел; если лицензия пакета совместима с Принципами Свободного Программного Обеспечения Debian, то он может быть в разделе contrib; иначе должен размещаться в non-free разделе.

9. Программы на Emacs lisp

Пожалуйста обратитесь к `Debian Политика по Emac’ (лежит в debian-emacs-policy.gz в пакете emacsen-common) за подробным обсуждением пакетов программ emacs lisp.

10. Игры

Права доступа к /var/games — 755 root.root.

Каждая игра имеет свою собственную политику безопасности.

Игры, которым необходима защита, привилегированный доступ к файлам с самыми лучшими результатами, сохранёнными играми, и т.д., должны выполнять его с помощью set-group-id (режим 2755) и владельцем должен быть root.games, и должны использоваться файлы и каталоги с соответствующими правами доступа (770 root.games, например). Они не должны быть установлены с помощью set-user-id, так как это вызовет проблемы в безопасности. (Если атакующий сможет разрушить любую set-user-id игру, то сможет заменить исполняемый файл другим и другие игроки могут запустить вместо этой игры троянскую программу. Игра с set-group-id даст доступ атакующему только к менее важным данным игры, а чтобы получить бюджеты других пользователей нужно приложить значительно большие усилия.)

Некоторые пакеты, например некоторые fortune cookie программы, настраиваются вышестоящими авторами так что делают устанавливаемые файлы данных или другую статическую информацию программы нечитабельными кроме как программами с установленным set-id. Не делай этого в пакетах Debian: любой может скачать .deb файл и прочитать его данные, так что нет смысла делать файлы нечитабельными. Отсутствие нечитабельных файлов также приводит к уменьшению программ с установленными set-id, что уменьшает риск возникновения дыр безопасности.

Как описано в FHS, двоичные файлы игр должны устанавливаться в каталог /usr/games. Это также относится к играм, использующим X Window System. Man страницы для игр (X и не-X игр) должны устанавливаться в /usr/share/man/man6.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *