Thread: 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 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
>
> 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
>
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
>
> 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
>
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 > 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 >
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/
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/
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/
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