Bug 15268 - При установке на чистую систему не создаётся пользователь postgres
: При установке на чистую систему не создаётся пользователь postgres
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/postgresql-common)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-04-08 15:21 by
Modified: 2009-10-31 12:24 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-04-08 15:21:22
В postgresql8.3-server%prein не создаётся (при необходимости) пользователь и
группа postgres и из-за этого установка проходит со сбоями и в дальнейшем
система не работает. Приходится вручную создавать пользователя и группу и
назначать соответствующие права на каталоги, либо переустанавливать пакет после
создания пользователя.
------- Comment #1 From 2008-04-08 16:12:17 -------
Пакет postgresql8.3-server требует по зависимостям postgresql-common, который в
секции %pre как раз и создает как пользователя, так и группу postgres.

Проверено на свежесгенерированной VE, баг не воспроизводится, пользователь и
группа успешно создаются.

В принципе, можно функциональность продублировать, но я не уверен, что это
стоит
делать.
------- Comment #2 From 2008-04-08 17:26:41 -------
Проблема в том, что Вы пытаетесь создать группу с предопределённым номером 46 и
если он занят, то создание группы обламывается, а с ним и создание
пользователя.
Что у меня и произошло. Насколько необходимо создавать группу и пользователя
именно с номером 46? Может лучше пусть система выбирает?
------- Comment #3 From 2008-04-08 17:29:35 -------
Наверное я не очень точно сказал - на чистую. Имелось в виду - на систему, на
которой не было пользователя postgres. А так там много чего установлено.
------- Comment #4 From 2008-04-08 19:33:42 -------
(In reply to comment #2)
> Проблема в том, что Вы пытаетесь создать группу с предопределённым номером 46 и
> если он занят, то создание группы обламывается, а с ним и создание пользователя.

Есть такое дело, но таки не в этом пакете, а в postgresql-common, который пока
что  не мой, а mithraen@ :)

Думаю, багу стоит перевесить на postgresql-common, что и делаю.
------- Comment #5 From 2008-04-08 19:40:05 -------
2mithraen: а фиксированное выставление UID/GID 46 при создании пользователя
postgres было по какой-то важной причине выставлено?
------- Comment #6 From 2008-04-09 09:37:22 -------
Так делать не надо. Если хочется фиксированный uid/gid, то нужно оформить FR на
пакет setup, чтобы оно было сразу искаропки.
------- Comment #7 From 2008-04-14 02:55:16 -------
Такс... как убить сразу двух зайцев?
В смысле попытаться все-таки создавать с фиксированым номером, но если он занят
-- с любым другим?
------- Comment #8 From 2008-04-14 09:12:35 -------
Ну видимо нечто вроде

getent group 46 || /usr/sbin/groupadd -r -f %pg_group >/dev/null 2>&1 ||:
getent passwd 46 || /usr/sbin/useradd -g %pg_group -c 'pgsql' \
        -d %pg_home -s /dev/null -r %pg_user >/dev/null 2>&1 ||:
------- Comment #9 From 2008-04-14 12:51:13 -------
Может всё же кто-нибудь знающий объяснит мне,зачем нужно неприменно
регистрировать группу и пользователя под id 46, если и без этого можно
обойтись?
------- Comment #10 From 2008-04-14 19:19:44 -------
(In reply to comment #9)
> Может всё же кто-нибудь знающий объяснит мне,зачем нужно неприменно
> регистрировать группу и пользователя под id 46, если и без этого можно обойтись?

А уж если учесть, что на сегодня в пакете setup группа и пользователь postgres
присутствуют в файле /etc/passwd именно под UID/GID 46, то по новой можно
добавлять и без жесткой привязки.

Если же кто-то вручную вынес системного пользователя - значит у него были на то
причины.

В общем, до появления внятного полиси на эту тему я бы предложил убрать в
postgresql-common явное задание UID и GID.
------- Comment #11 From 2008-04-14 19:33:39 -------
Хм, я бы предложил как раз оставить.

Аргументация -- сервис под этим псевдопользователем работает с данными и если
есть возможность сохранить совместимость численных uid/gid между инсталяциями --
это надо сделать.

Мишка, я как-то об это конкретные шишки набил, натягивая бэкап поверх новенького
VE template.  Хорошо, что сам заметил дивные права в результате.

Если кто-то вынес системного пользователя -- он ССЗБ и пусть продолжает
кувыркаться как хочет.
------- Comment #12 From 2008-04-14 20:51:58 -------
Тогда надо вообще убрать команду создания пользователя и группы, зачем, если
они
и так есть? Вместо этого поставить проверку наличия нужного пользователя и
группы и злобно ругаться при их отсутствии, отказываясь от всяких гарантий
(будет хотя бы понятно что ты ССЗБ).
------- Comment #13 From 2008-04-14 21:45:26 -------
Потому что в системе, которая растёт от древнего setup, может не быть этих
пользователей-групп (они отдыхают в /etc/{passwd,shadow}.rpmnew в таком разе).

Серёж, я по этим граблям походил уже достаточно, чтобы сказать именно то, что
сказал: делать -- надо, если есть зарегистрированные в setup uid/gid --
пользоваться следует именно ими.

См. тж. драфт/обсуждение здесь:
http://freesource.info/wiki/AltLinux/Policy/UidGid
------- Comment #14 From 2008-04-15 11:31:36 -------
(In reply to comment #11)
> Мишка, я как-то об это конкретные шишки набил, натягивая бэкап поверх новенького
> VE template.  Хорошо, что сам заметил дивные права в результате.

Миш, хитровымученных вариантов может быть много. В данном случае проблема
усугубляется еще и несовместимостью данных между разными версиями PostgreSQL.

Миграция данных между _разными_ системами - это вобще отдельная тема, которую
лучше отдельно обсуждать.

> Если кто-то вынес системного пользователя -- он ССЗБ и пусть продолжает
> кувыркаться как хочет.

Ну, резервное копирование с привязкой к UID/GID и без переноса данных о
пользователях/группах - это тоже повод для самостоятельного кувыркания :)

JIMHO, будет вполне достаточно такого варианта:
1. В дефолтном /etc/passwd есть пользователь с фиксированными UID/GID (уже).
2. При установке пакета производится попытка создать пользователя, но уже без
привязки к UID/GID (нужно убрать привязку).

Кроме того, это надо решать в рамках полиси для всех пакетов, создающих
псевдопользователей. А иначе мы просто видоизменим бардак, а не решим проблему.
------- Comment #15 From 2008-04-15 15:39:53 -------
(In reply to comment #14)
> JIMHO, будет вполне достаточно такого варианта:
> 1. В дефолтном /etc/passwd есть пользователь с фиксированными UID/GID (уже).

2a. При установке пакета производится попытка создать пользователя с ними же

> 2. При установке пакета производится попытка создать пользователя, но уже без
> привязки к UID/GID (нужно убрать привязку).
> Кроме того, это надо решать в рамках полиси для всех пакетов, создающих
> псевдопользователей. А иначе мы просто видоизменим бардак, а не решим проблему.

Так вот в полиси я всерьёз собираюсь стоять на том, что uid/gid для псевдо,
имеющих данные, _надо_ фиксировать и пытаться создавать именно одинаковые.  С
фолбэком на какие попало (не взрываться же).
------- Comment #16 From 2008-04-17 13:50:52 -------
Так сейчас что делать будем?
------- Comment #17 From 2008-04-17 14:29:57 -------
(In reply to comment #16)
> Так сейчас что делать будем?
Предлагаю: создать_группу_и_пользователя_с_46 || создать_каких_выйдет
------- Comment #18 From 2008-04-18 14:44:09 -------
(In reply to comment #17)
> > Так сейчас что делать будем?
> Предлагаю: создать_группу_и_пользователя_с_46 || создать_каких_выйдет

Вполне нормальное решение, пока с полиси не определились.
------- Comment #19 From 2008-04-19 00:27:34 -------
Шлите патчи :)
------- Comment #20 From 2009-10-31 12:24:54 -------
postgresql-common-1.0-alt6 -> sisyphus:

* Sat Oct 31 2009 Denis Smirnov <mithraen@altlinux> 1.0-alt6

- fix user/group creation (ALT#15268)