7.1beta4 initdb problem
I've installed 7.1beta4 on a system that has never had PostgreSQL installed on it. configure, gmake, and gmake install, all worked fine. However, when I su over to postgres and run "initdb -D /progs/db", I get the following message:
The program '/usr/local/pgsql/bin/postgres' needed by initdb does not belong to PostgreSQL version 7.1beta4. Check your installation.
Any ideas?
Tim
Tim Barnard:
The program '/usr/local/pgsql/bin/postgres' needed by initdb does
not belong to PostgreSQL version 7.1beta4. Check your installation.
Any ideas?
Yes, happened to me, too. You need not to be root, but an unprivileged
user (i.e. postgres). That's the strangest error message in a long
time!
--
Alessio F. Bragadini alessio@sevenseas.org
Tim Barnard writes:
The program '/usr/local/pgsql/bin/postgres' needed by initdb does not
belong to PostgreSQL version 7.1beta4. Check your installation.
Can you run 'sh -x initdb ...' and show me the output? Some platform
information would be useful as well.
--
Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
Well, I was logged in as postgres when this occured.
I managed to resolve it by changing permissions on the /progs
directory to rwx. It had been r-x. Strange error message for a permissions
problem on a destination directory!
Thanks for the suggestion though.
Tim
----- Original Message -----
From: "Alessio Bragadini" <alessio@sevenseas.org>
To: "Tim Barnard" <tbarnard@povn.com>
Cc: <pgsql-general@postgresql.org>
Sent: Sunday, February 04, 2001 2:13 PM
Subject: Re: [GENERAL] 7.1beta4 initdb problem
Show quoted text
Yes, happened to me, too. You need not to be root, but an unprivileged
user (i.e. postgres). That's the strangest error message in a long
time!--
Alessio F. Bragadini alessio@sevenseas.org
Import Notes
Resolved by subject fallback
Peter Eisentraut <peter_e@gmx.net> writes:
Tim Barnard writes:
The program '/usr/local/pgsql/bin/postgres' needed by initdb does not
belong to PostgreSQL version 7.1beta4. Check your installation.
Can you run 'sh -x initdb ...' and show me the output? Some platform
information would be useful as well.
Ah, I see the problem:
$ bin/postgres -V
postgres (PostgreSQL) 7.1beta4
$ su
Password:
# bin/postgres -V
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged userid to prevent
a possible system security compromise. See the INSTALL file for
more information on how to properly start the server.
Probably initdb should have its own check for being run as root;
this seems cleaner than reorganizing the checks in the postgres
executable.
regards, tom lane
Thanks Tom, the problem wasn't that, though, since I was logged in as
postgres at the time. However, as I was trying to create the database under
/progs and it's permissions were set to r-x, changing them to rwx fixed it.
It took awhile to figure it out as the error message threw me off :-)
Regards,
Tim
----- Original Message -----
From: "Tom Lane" <tgl@sss.pgh.pa.us>
To: "Peter Eisentraut" <peter_e@gmx.net>
Cc: "Tim Barnard" <tbarnard@povn.com>; <pgsql-general@postgresql.org>
Sent: Sunday, February 04, 2001 7:54 PM
Subject: Re: [GENERAL] 7.1beta4 initdb problem
Show quoted text
Peter Eisentraut <peter_e@gmx.net> writes:
Tim Barnard writes:
The program '/usr/local/pgsql/bin/postgres' needed by initdb does not
belong to PostgreSQL version 7.1beta4. Check your installation.Can you run 'sh -x initdb ...' and show me the output? Some platform
information would be useful as well.Ah, I see the problem:
$ bin/postgres -V
postgres (PostgreSQL) 7.1beta4
$ su
Password:
# bin/postgres -V"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged userid to prevent
a possible system security compromise. See the INSTALL file for
more information on how to properly start the server.Probably initdb should have its own check for being run as root;
this seems cleaner than reorganizing the checks in the postgres
executable.regards, tom lane
Tom Lane writes:
Probably initdb should have its own check for being run as root;
this seems cleaner than reorganizing the checks in the postgres
executable.
I does have that check, but unfortunately that check requires pg_id, and
finding the right pg_id requires finding the right postgres. The "right
pg_id" is not entirely as trivial as it sounds, because pg_id's from <=6.5
have very different behaviour.
An alternative would be to find the right pg_id first based on its (to be
implemented) --version, and then double-checking for the right postgres.
--
Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
Tim Barnard writes:
Well, I was logged in as postgres when this occured.
I managed to resolve it by changing permissions on the /progs
directory to rwx. It had been r-x. Strange error message for a permissions
problem on a destination directory!
I'm not sure I follow. Given that executing a program doesn't require
write permission I assume this is your PGDATA. But PGDATA isn't checked
until after --version/-V has been evaluated. The easiest thing would be
to check what postgres -V would show (in the broken setup).
--
Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
Peter Eisentraut <peter_e@gmx.net> writes:
Tom Lane writes:
Probably initdb should have its own check for being run as root;
this seems cleaner than reorganizing the checks in the postgres
executable.
I does have that check, but unfortunately that check requires pg_id, and
finding the right pg_id requires finding the right postgres. The "right
pg_id" is not entirely as trivial as it sounds, because pg_id's from <=6.5
have very different behaviour.
Um. Okay then, the alternatives are
(1) move the handling of --version out of PostgresMain and friends, and
put it into main.c before the are-we-root check;
(2) move the are-we-root check out of main.c and duplicate it in
PostgresMain and friends.
Which choice do you like best?
regards, tom lane
Tom Lane writes:
Um. Okay then, the alternatives are
(1) move the handling of --version out of PostgresMain and friends, and
put it into main.c before the are-we-root check;(2) move the are-we-root check out of main.c and duplicate it in
PostgresMain and friends.Which choice do you like best?
Let them meet in the middle. ;-) If the option is --version or --help,
ignore the root test.
I would have opted for (1), but it would be nice to be able to see the
help as root, too, and I don't want to move that.
diff -U2 -r1.40 main.c
--- main.c 2001/01/24 19:42:56 1.40
+++ main.c 2001/02/05 20:58:50
@@ -110,5 +110,8 @@
*/
#ifndef __BEOS__
- if (geteuid() == 0)
+ if (!(argc > 1
+ && ( strcmp(argv[1], "--help")==0 || strcmp(argv[1], "-?")==0
+ || strcmp(argv[1], "--version")==0 || strcmp(argv[1], "-V")==0 ))
+ && (geteuid() == 0) )
{
fprintf(stderr, "%s", NOROOTEXEC);
--
Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/