On Sun, Oct 28, 2018 at 02:20:48PM +0100, Sebastien Marie wrote:
> Hi,
> 
> I just noted a behaviour change with the latest change on rc.subr:
> 
>       date: 2018/10/16 07:07:05;  author: ajacoutot;  state: Exp;  lines: +2 
> -2;  commitid: y1bnk7UTLXqW0ZFW;
>       Change the way we call su(1) in rcexec:
>       - drop `-'l' to prevent simulating a full login and running 
> /root/.profile
>       (prodded by a mail from J Greely)
>       - use `-m' to preserve the environment because we now set HOME to "/" 
> like
>       /etc/rc does; note that we now also clear the environment using `env 
> -i' before
>       running su(1) which leaves us with only HOME, PATH and SHELL
> 
>       Committing early to catch regressions fast, if any.
>       ok halex@
> 
> with `su -l', the current directory is changed, whereas with `su -m' it
> is unaffected.
> 
> from su man page, about -l:
>       and su will change directory to the target login's home directory.
> 
> 
> I found it because pg_ctl will fail if started in a directory it can't
> read.

Perfect, I was expecting some regression, thanks for reporting.
I'll fix it within the next few days.


> # pwd
> /root
> # rcctl start postgresql
> postgresql(failed)
> # rcctl -d start postgresql
> doing _rc_parse_conf
> doing _rc_quirks
> postgresql_flags empty, using default >-w -l /var/postgresql/logfile<
> doing _rc_parse_conf /var/run/rc.d/postgresql
> doing _rc_quirks
> doing rc_check
> could not identify current directory: Permission denied
> pg_ctl: no server running
> postgresql
> doing rc_start
> doing _rc_wait start
> doing rc_check
> could not identify current directory: Permission denied
> could not identify current directory: Permission denied
> could not identify current directory: Permission denied
> The program "postgres" is needed by pg_ctl but was not found in the
> same directory as "pg_ctl".
> Check your installation.
> could not identify current directory: Permission denied
> pg_ctl: no server running
> doing _rc_rm_runfile
> (failed)
> 
> # cd / && rcctl start postgresql
> postgresql(ok)
> 
> 
> I am unsure about the correct solution. Maybe just having a `cd /' in
> rcexec ? it isn't the exact same behaviour (chdir to home directory),
> but at least / is expected to be readable.
> 
> thanks.
> -- 
> Sebastien Marie
> 

-- 
Antoine

Reply via email to