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