On 1/9/23 09:11, Ron wrote:
> On 1/9/23 07:15, Joe Conway wrote:
>> On 1/9/23 07:41, Matthias Apitz wrote:
>>> Please note: I'm talking about the user and group "postgres" in the
>>> Linux OS and not in the PostgreSQL server.
>>>
>>> We're compiling PostgreSQL from source (actually 14.1) and distribute that
>>> to our customers. They're asked to setup user and group "postgres"
>>> before creating the cluster. As nowadays there are a lot of setup such
>>> things in bigger installations, like LDAP or AD, etc. I'd like to know
>>> how other installations for Linux deal with this?
>>
>> See for example the PGDG RPM spec file:
>>
>>
https://git.postgresql.org/gitweb/?p=pgrpms.git;a=blob;f=rpm/redhat/main/non-common/postgresql-15/main/postgresql-15.spec;h=60cd42147a7563ba76c401643d0a7c79b59d2520;hb=HEAD
>>
>>
>> 8<-------------------
>> %pre server
>> groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
>> useradd -M -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
>> -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
>> 8<-------------------
>
> What if (for example in an already-installed package) uid and gid 26 already
> exist?
The "|| :" at the end of those lines is essentially "or true" -- i.e. if
the first command fails *due to preexisting uid/gid, the line still
evaluates as successful. Whether that is a good thing or not is in the
eye of the beholder I guess.
I have thought about, and played with a bit, the idea of making the
uid/gid in the community spec file a variable so that it could be passed
in at rpmbuild time. But that quickly bloomed into a host of related
issues -- e.g. the default "/var/lib/pgsql" for the home dir, the
default "postgres" for the user/group names, and/or what to do if the
username does not exist but the directory does, etc -- I ran out of
energy to chase it all down.
--
Joe Conway
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com