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

-- 
Antoine

Reply via email to