Pseudo User Policy: различия между версиями
м («UidGid» переименована в «PseudoUserPolicy»: более адекватное название) |
(использовние шаблона DraftPolicy) |
||
Строка 1: | Строка 1: | ||
{{Викифицировать}} | {{Викифицировать}} | ||
{{DraftPolicy | |||
|responsible=? | |||
}} | |||
== Создание псевдопользователей == | == Создание псевдопользователей == | ||
Строка 7: | Строка 8: | ||
=== Проблема === | === Проблема === | ||
Ряду программных пакетов для реализации работы с понижением привилегий (privilege separation) требуется псевдопользователь (и | Ряду программных пакетов для реализации работы с понижением привилегий (privilege separation) требуется псевдопользователь (и обычно — соответствующая группа; численное значение — от 1 до 499 согласно принятых норм). | ||
Идея предварительно | Идея предварительно «забить» всех нужных псевдо в <tt>/etc/passwd</tt> и <tt>/etc/group</tt> прямо при создании пакета <tt>setup</tt> обречена на столкновение с непредвиденными надобностями и серьёзными проблемами с интеграцией изменений — ведь новые версии этих файлов будут установлены как <tt>*.rpmnew</tt>, а автоматизированные средства сведения изменений не прилагаются. | ||
С другой стороны, идея создавать служебные аккаунты динамически при установке пакета сама по себе чревата несовместимостью uid/gid различных инсталляций, что создаёт вполне реальные проблемы с резервным копированием (восстановлением данных в контексте другого сервера). | С другой стороны, идея создавать служебные аккаунты динамически при установке пакета сама по себе чревата несовместимостью uid/gid различных инсталляций, что создаёт вполне реальные проблемы с резервным копированием (восстановлением данных в контексте другого сервера). | ||
Кажется разумным сочетание этих подходов: поддержание списка зарегистрированных UID/GID и реализация добавления | Кажется разумным сочетание этих подходов: поддержание списка зарегистрированных UID/GID и реализация добавления «по требованию», но с фиксированными значениями. Для этого требуется написать (обобщить имеющиеся) макросы для проверки коллизий (наличие пользователя с «неправильными» uid/gid, как было с sympa; наличие «реального» пользователя с uid/gid >= 500). | ||
При этом для уменьшения плотности этих самых коллизий предлагается отдавать предпочтение именам вида | При этом для уменьшения плотности этих самых коллизий предлагается отдавать предпочтение именам вида «_name» для «системных» пользователей и групп. | ||
=== Заведение псевдопользователей === | === Заведение псевдопользователей === | ||
Если для нормальной работы пакета приходится создавать псевдопользователя, следует обсудить вопрос в devel@ | Если для нормальной работы пакета приходится создавать псевдопользователя, следует обсудить вопрос в devel@ — могут быть непредвиденные проблемы с доступностью или беспроблемностью имени, uid/gid или настройкой аккаунта. | ||
<!-- взято с TypicalPackagingErrors/UserDel --> | <!-- взято с TypicalPackagingErrors/UserDel --> | ||
Строка 64: | Строка 65: | ||
=== Ссылки === | === Ссылки === | ||
* | * [[Документация/ПраваГруппПользователей|Описание назначения некоторых групп]] | ||
* [https://bugzilla.altlinux.org/show_bug.cgi?id=15268 пример проблемы] | * [https://bugzilla.altlinux.org/show_bug.cgi?id=15268 пример проблемы] | ||
* [https://bugzilla.altlinux.org/show_bug.cgi?id=9895 add useradd and groupadd macros] | * [https://bugzilla.altlinux.org/show_bug.cgi?id=9895 add useradd and groupadd macros] | ||
* [http://lists.altlinux.org/pipermail/devel/2004-January/018128.html http://lists.altlinux.org/pipermail/devel/2004-January/018128.html] | * [http://lists.altlinux.org/pipermail/devel/2004-January/018128.html http://lists.altlinux.org/pipermail/devel/2004-January/018128.html] | ||
* [http://lists.altlinux.org/pipermail/devel/2004-January/018132.html http://lists.altlinux.org/pipermail/devel/2004-January/018132.html] | * [http://lists.altlinux.org/pipermail/devel/2004-January/018132.html http://lists.altlinux.org/pipermail/devel/2004-January/018132.html] |
Версия от 19:30, 9 сентября 2008
Создание псевдопользователей
Проблема
Ряду программных пакетов для реализации работы с понижением привилегий (privilege separation) требуется псевдопользователь (и обычно — соответствующая группа; численное значение — от 1 до 499 согласно принятых норм).
Идея предварительно «забить» всех нужных псевдо в /etc/passwd и /etc/group прямо при создании пакета setup обречена на столкновение с непредвиденными надобностями и серьёзными проблемами с интеграцией изменений — ведь новые версии этих файлов будут установлены как *.rpmnew, а автоматизированные средства сведения изменений не прилагаются.
С другой стороны, идея создавать служебные аккаунты динамически при установке пакета сама по себе чревата несовместимостью uid/gid различных инсталляций, что создаёт вполне реальные проблемы с резервным копированием (восстановлением данных в контексте другого сервера).
Кажется разумным сочетание этих подходов: поддержание списка зарегистрированных UID/GID и реализация добавления «по требованию», но с фиксированными значениями. Для этого требуется написать (обобщить имеющиеся) макросы для проверки коллизий (наличие пользователя с «неправильными» uid/gid, как было с sympa; наличие «реального» пользователя с uid/gid >= 500).
При этом для уменьшения плотности этих самых коллизий предлагается отдавать предпочтение именам вида «_name» для «системных» пользователей и групп.
Заведение псевдопользователей
Если для нормальной работы пакета приходится создавать псевдопользователя, следует обсудить вопрос в devel@ — могут быть непредвиденные проблемы с доступностью или беспроблемностью имени, uid/gid или настройкой аккаунта.
Переписка
> В процессе обсуждения упаковки jabber-пакетов возник такой дискуссионный > вопрос: есть серверы, есть компоненты - под какими unix-пользователями > их запускать? > > Я лично придерживаюсь мнения, что это все абсолютно отдельные, ничем не > связанные сервера и есть смысл держать их под отдельными пользователями > (jabberd2, ejabberd, jabber-jit, jabber-mrim и т.п.) - у них у каждого > собственные спулы, собственные логи и т.п. > > pma@ в личной беседе озвучил противоположную мысль - а не завести ли нам > единого пользователя, например, "jabber", которые будет владеть всеми > каталогами всех jabber-related пакетов, и под которым, собственно, будут > запускаться все сервисы? > > У кого какие мнения есть на этот счет? Если сервера не связанные, то и псевдопользователи должны быть не связанные.
В данном случае под связью имеется в виду - файловая система (общие файлы или каталоги для IPC) - SYSV IPC - сигналы, посылаемые процессам короче говоря, то, на что распространяются unix permissions.
Права на каталоги
См. ALT Secure Packaging Policy, но вкратце:
> Мне отсюда не видно, но обычно в таких ситуациях > %dir %attr(2770,root,asterisk) %_localstatedir/asterisk Если в каталог пишет только один псевдопользователь, то 0770. Если в каталог пишет не только один псевдопользователь, то если у них нет общих для записи файлов, то 3770, иначе 2770. Если псевдопользователи только читают из каталога, то 0750. Если псевдопользователи только открывают файлы из каталога, то 0710.
TODO
- ссылки на sympa.spec, webalizer.spec, bugzilla, обсуждения в devel@/sisyphus@