Thread: BUG #1670: pg_dump fails on CentOS 4
The following bug has been logged online: Bug reference: 1670 Logged by: Josh Email address: josh@globalherald.net PostgreSQL version: 8.0.2, 8.0.3 Operating system: CentOS 4 Description: pg_dump fails on CentOS 4 Details: pg_dump, as packaged in postgresql-8.0.3-1PGDG.i686.rpm, fails with no output whatsoever when run from a terminal window: [josh@localhost ~]$ pg_dump -U username database > backup.sql [josh@localhost ~]$ However, when run from within pgadmin3, it runs as it should. When I download the source to 8.0.3 and compile it from scratch, the freshly compiled pg_dump works as it should from any source (PGAdmin3, command line)
"Josh" <josh@globalherald.net> writes: > The following bug has been logged online: > pg_dump, as packaged in postgresql-8.0.3-1PGDG.i686.rpm, fails with no > output whatsoever when run from a terminal window: > [josh@localhost ~]$ pg_dump -U username database > backup.sql Try turning off SELinux enforcement, or better update the selinux policy package and do a restorecon on all of /usr/bin. The earlier releases of selinux-policy-targeted prevent pg_dump from writing on /dev/tty :-( ... which makes it a bit hard to emit error messages... regards, tom lane
josh@bitbuckets.com writes: > Does this policy also apply to binaries compiled on the local machine? > When I compiled PG803 from source, then copied pg_dump to /usr/bin as > root, pg_dump worked fine. AFAIK the policy is driven off the pathname of the executable --- so it doesn't matter who compiled pg_dump, only where it is installed. Also, there is a notion of "labeling" which is basically an extension of file access bits (see "ls -Z"). What restorecon basically does is update the labeling to be what the current policy says it should be. So I'd expect your homebuilt pg_dump to start failing also if you restorecon it with the current policy. On my FC3 machine, with a pretty up-to-date policy, I see $ cd /usr/bin $ ls -Z postgres postmaster pg_dump -rwxr-xr-x root root system_u:object_r:bin_t pg_dump* -rwxr-xr-x root root system_u:object_r:postgresql_exec_t postgres* lrwxrwxrwx root root system_u:object_r:bin_t postmaster The /dev/tty restriction is associated with the postgresql_exec_t labeling. I believe that the policy bug was essentially due to someone not understanding that pg_dump isn't used as a daemon ... [ObDisclaimer: I'm not a SELinux guru and have probably missed lots of fine points.] regards, tom lane
Tom, > Try turning off SELinux enforcement, or better update the selinux > policy package and do a restorecon on all of /usr/bin. The earlier I'll definitely give this a try. Does this policy also apply to binaries compiled on the local machine? When I compiled PG803 from source, then copied pg_dump to /usr/bin as root, pg_dump worked fine. Thanks for the help! --Josh