listuser HH wrote:

Micha Silver wrote:

I've setup mapserver-4.8.3 on a CentOS-4.3 server. With SELinux enabled I can't get mapserv in /var/www/cgi-bin to work. It can't find libpq.so. Running ldd on the mapserv binary in the original compile location returns OK:

[EMAIL PROTECTED] ~]# ldd /home/micha/download/mapserver-4.8.3/mapserv | grep libpq
       libpq.so.4 => /var/lib/pgsql/lib/libpq.so.4 (0x0072d000)

But running ldd on the *same* binary copied to /var/www/cgi-bin:
[EMAIL PROTECTED] ~]# cp /home/micha/download/mapserver-4.8.3/mapserv /var/www/cgi-bin/
[EMAIL PROTECTED] ~]# ldd /var/www/cgi-bin/mapserv | grep libpq
       libpq.so.4 => not found
       libpq.so.4 => not found

The copy has selinux context:
[EMAIL PROTECTED] ~]# ls -Z /var/www/cgi-bin/mapserv
-rwxr-xr-x root root root:object_r:httpd_sys_script_exec_t /var/www/cgi-bin/mapserv

and indeed in the messages log there are "audit:...avc: denied" errors for mapserv: May 30 14:11:11 maps kernel: audit(1148987471.254:2): avc: denied { read write } for pid=2662 comm="mapserv" name="0" dev=devpts ino=2 scontext=root:system_r:httpd_sys_script_t tcontext=root:object_r:initrc_devpts_t tclass=chr_file May 30 14:11:11 maps kernel: audit(1148987471.254:3): avc: denied { use } for pid=2662 comm="mapserv" name="0" dev=devpts ino=2 scontext=root:system_r:httpd_sys_script_t tcontext=user_u:system_r:initrc_t tclass=fd May 30 14:11:11 maps kernel: audit(1148987471.254:4): avc: denied { use } for pid=2662 comm="mapserv" name="0" dev=devpts ino=2 scontext=root:system_r:httpd_sys_script_t tcontext=user_u:system_r:initrc_t tclass=fd May 30 14:11:11 maps kernel: audit(1148987471.255:5): avc: denied { read } for pid=2662 comm="mapserv" name="libpq.so.4" dev=sda2 ino=1423567 scontext=root:system_r:httpd_sys_script_t tcontext=root:object_r:var_lib_t tclass=lnk_file May 30 14:11:11 maps kernel: audit(1148987471.331:6): avc: denied { read } for pid=2662 comm="mapserv" name="libpq.so.4" dev=sda2 ino=1423567 scontext=root:system_r:httpd_sys_script_t tcontext=root:object_r:var_lib_t tclass=lnk_file

If I drop the seliux level to "permissive" (logs error but doesn't deny) then mapserv works as expected.

Can anyone suggest how to set this up, short of disabling selinux??

Thanks, Micha


Hi,

I think you could use something like:
chcon -c -v -R -u system_u -r object_r -t lib_t [path/to/lib/folder]

I'm not familiar with SELinux so check the args in the man for chcon.

Regards

Norbert

Norbert:

Here's what I did.
chcon -t lib_t /var/lib/pgsql/lib
chcon -t lib_t /var/lib/pgsql/libpq.so.4.1  # The real library
rm -f /var/lib/pgsql/lib/libpq.so.4
# delete the original soft link...
# ... and recreate it to correct selinux context for the link
ln -s /var/lib/pgsql/lib/libpq.so.4.1 /var/lib/pgsql/lib/libpqso.4
Now it seems to be working. Thanks,
Micha

Reply via email to