From: | "Andrew Dunstan" <andrew(at)dunslane(dot)net> |
---|---|
To: | <tom(at)printf(dot)net> |
Cc: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: execve() vs system() for chrooted filesystems in dbcommands.c |
Date: | 2004-09-20 08:42:29 |
Message-ID: | 4677.24.211.141.25.1095669749.squirrel@www.dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Tom F said:
> Hi,
>
> I'm working on running postgresql in a chrooted filesystem.
>
> /src/backend/commands/dbcommands.c makes use of system(3): as far as I
> can see, this is only used to execute rm(1) and cp(1). I'd like to
> avoid placing /bin/sh in the root of the filesystem (which system()
> requires).
>
> I see four options:
>
> 1. Replace calls to system() with calls to execve(). This is feasible,
> as no complex commands are passed to the shell: just execution of
> programs with arguments.
> 2. Put /bin/sh in the filesystem. This is exactly what I am trying to
> avoid, if only because every piece of shellcode ends in "/bin/sh"
> 3. Make /bin/sh a simple wrapper which is only capable of executing one
> program. This is silly and unneccessary.
> 4. Move the functionality of cp(1) and rm(1) into the postgresql source
> tree. This is unneccessary extra work.
>
> 1 seems to be the cleanest option to me, and also removes the
> (marginal) overhead of launching a shell. So, I shall be doing this for
> my own use, unless I've overlooked a reason not to.
>
> My question: would my patch be accepted if I submit it?
>
> The only argument against it, that I'm aware of, is that system() is
> ANSI, while execve() is POSIX: i.e. portability... does windows have
> execve()? That could be done the way the current preprocessor
> conditionals yield rmdir instead of rm.
>
> Thanks,
>
> - Tom
system() is not the only call that uses the shell - popen() does too. It is
used extensively in initdb, for example, and would probably not be simple to
replace (especially on Windows) - simplicity was the reason it was used in
the first place.
cheers
andrew
From | Date | Subject | |
---|---|---|---|
Next Message | Paramveer.Singh | 2004-09-20 11:26:24 | schema level variables and deferrable unique constraints |
Previous Message | Abhijit Menon-Sen | 2004-09-20 08:15:08 | Re: libpq and prepared statements progress for 8.0 |