Hi,
I tried to make ping working inside httpd chroot from php script.
Without chroot, ping works fine.
I don't know what I miss in this configuration:

# uname -a
OpenBSD d7 5.0 GENERIC#59 i386

# cat /etc/rc.conf | grep httpd
# use -u to disable chroot, see httpd(8)
httpd_flags="-DSSL"     # for normal use: "" (or "-DSSL" after reading ssl(8))

# ps ax | grep httpd
28641 ??  Ss      0:00.29 httpd: parent [chroot /var/www] (httpd)
 2400 ??  I       0:00.14 httpd: child (httpd)
28041 ??  I       0:00.14 httpd: child (httpd)
13701 ??  I       0:00.12 httpd: child (httpd)
32659 ??  I       0:00.13 httpd: child (httpd)
15200 ??  I       0:00.12 httpd: child (httpd)
20758 ??  I       0:00.08 httpd: child (httpd)
11871 ??  I       0:00.03 httpd: child (httpd)
 7365 ??  I       0:00.04 httpd: child (httpd)
12284 ??  I       0:00.06 httpd: child (httpd)

# ls -ls
total 2744
512 ----------  1 root  bin  243784 Sep 22 16:06 bgpctl
512 -r-sr-xr-x  1 root  bin  235984 Aug 15  2011 femail
480 -r-sr-xr-x  1 root  bin  214748 Sep 22 16:06 ping

(chmod u+s set a sticky bit on root account)

# chroot -u www /var/www/ /bin/ping
usage: ping [-DdEefLnqRrv] [-c count] [-I ifaddr] [-i wait]
        [-l preload] [-p pattern] [-s packetsize] [-T toskeyword]
        [-t ttl] [-V rtable] [-w maxwait] host

>From this test, ping into chroot to 127.0.0.1 seems works fine for me.

But if I launch ping from php script (I tried exec and shell_exec
functions) no output is reported, also apache logs don't report
nothing useful.

PHP version is 5.3.6, installed from packages.
PHP's safe_mode is turned off (I'm using standard /etc/php-5.3.ini file)

/var wasn't mounted with noexec or something else:

# mount
/dev/sd0a on / type ffs (local)

What's wrong in this scenario?
Let me know if futher information are required.
BR,
-f

Reply via email to