While I'm not a porter by any means, I'd be fine with either cd ~ or cd /, and I'd certainly expect one of them. I guess cd / might be easier, since it can happen before the su call, and my guess would be that any regression would be minimal.
/Alexander On October 28, 2018 5:21:38 PM GMT+01:00, Antoine Jacoutot <[email protected]> wrote: >On Sun, Oct 28, 2018 at 02:23:28PM +0100, Antoine Jacoutot wrote: >> 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. > >Thinking about it I wonder if this shouldn't just be "fixed" in the >rc.d >script itself. >Manually running pg_ctl as root (from /root for example) would fail the >same >way. So I think it's more an issue with the way pg_ctl works. > >Thoughts? > > >> > # 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
