Not having sh in the chroot was the problem. thanks.

I using femail, with php-fpm which has to be configured in php-fpm.conf

the jail needs /etc/resolv.conf and /bin/sh and /bin/femail


php/php-fpm left no log or error message that I could find as to what the
problem
was. I realize it is php/php-fpm who did not do proper error checking and
generating a message, and not an OpenBSD problem.

Is there any document, that gives hints about what should be done to construct
a
proper chroot'ed system, and how to track down problems? I could not find one.



-----Original Message-----
From: owner-m...@openbsd.org [mailto:owner-m...@openbsd.org] On Behalf Of Otto
Moerbeek
Sent: Friday, November 4, 2016 2:38 PM
To: Peter Fraser <p...@thinkage.ca>
Cc: 'misc@openbsd.org' <misc@openbsd.org>
Subject: Re: php system using httpd and php-fpm

On Fri, Nov 04, 2016 at 05:29:54PM +0000, Peter Fraser wrote:

> I actually wanted to call php's mail function which I could not get to
> work, I think I have tracked to problem down to exec not working the
> details follow using a test web page datetest.php
>
>
>
> newweb:/var/www/htdocs/web # cat datetest.php cat datetest.php
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
>
> <HTML>
> <HEAD>
> <title>Date Test</title>
> </HEAD>
> <p>
>   <?php
>      ini_set('display_errors', 'On');
>      error_reporting(E_ALL | E_STRICT);
>      if(function_exists('exec')) {
>           echo "exec is enabled";
>      } else {
>           echo "exec is disabled";
>      }
>      echo '<br>Date Test<br>';
>      exec('/bin/date',$output);
>      print_r($output);
>      echo '<br>End Date test';
> ?>
> </p>
> </HTML>
> newweb:/var/www/htdocs/web # php-7.0 -f datetest.php
> php-7.0 -f datetest.php
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
>
> <HTML>
> <HEAD>
> <title>Date Test</title>
> </HEAD>
> <p>
>   exec is enabled<br>Date Test<br>Array (
>     [0] => Fri Nov  4 13:16:35 EDT 2016
> )
> <br>End Date test</p>
> </HTML>
> newweb:/var/www/htdocs/web # # date has been copied under /var/www/bin
> for testing # date has been copied under /var/www/bin
> newweb:/var/www/htdocs/web # ls -l /var/www/bin ls -l /var/www/bin
> total 4216
> ----------  1 root  bin     249392 Jul 26 14:48 bgpctl
> -rwxr-xr-x  1 root  daemon  119216 Nov  3 13:18 cat -r-xr-xr-x  1 root
> daemon  140112 Nov  4 12:52 date
> -rwxr-xr-x  1 root  bin     271856 Jul 25 20:37 femail
> -rwxr-xr-x  1 root  daemon  470096 Nov  3 12:49 ksh
> -rwxr-xr-x  1 root  daemon    9816 Nov  3 12:51 logger
> -rwxrwxrwx  1 root  daemon      27 Nov  3 15:56 mailtest
> -rwxr-xr-x  1 root  bin     204240 Jul 26 14:48 ping
> ----------  1 root  bin     207920 Jul 26 14:48 ping6
> ----------  2 root  bin     179760 Jul 26 14:48 traceroute
> ----------  2 root  bin     179760 Jul 26 14:48 traceroute6
> newweb:/var/www/htdocs/web # chroot -u www /var/www /bin/date chroot
> -u www /var/www /bin/date Fri Nov  4 17:18:34 GMT 2016
>
> I believe this shows that the php web page is correct and that 'date'
> does exist in the chroot,
>
> but when I invoke web page from a browser I get.
>
> exec is enabled
> Date Test
> Array ( )
> End Date test
>
> What am I doing wrong.

For exec to work you also need /bin/sh

        -Otto

Reply via email to