svn commit: r288291 - head/etc
Cy Schubert
Cy.Schubert at komquats.com
Sun Jun 19 00:06:37 UTC 2016
In message <2171b966-35c7-2dad-2c0f-f23061cb677a at freebsd.org>, Niclas
Zeising w
rites:
> On 09/27/15 06:03, Adrian Chadd wrote:
> > Author: adrian
> > Date: Sun Sep 27 04:03:11 2015
> > New Revision: 288291
> > URL: https://svnweb.freebsd.org/changeset/base/288291
> >
> > Log:
> > Enforce consistent limits of daemons run from rc.subr:
> >
> > * Allow the user to configure the login class to use in rc.conf
> > by using {daemon}_login_class, which;
> > * Use the daemon class by default;
> > * .. and then use 'limits' to set the login class so it works both
> > via init at startup (which runs this in 'daemon' class) and via
> > whichever root environment (eg command line, other daemons, etc.)
> >
> > Reviewed by: dteske
> > Differential Revision: https://reviews.freebsd.org/D3630
> >
> > Modified:
> > head/etc/rc.subr
> >
> > Modified: head/etc/rc.subr
> > ===========================================================================
> ===
> > --- head/etc/rc.subr Sun Sep 27 03:46:55 2015 (r288290)
> > +++ head/etc/rc.subr Sun Sep 27 04:03:11 2015 (r288291)
> > @@ -768,6 +768,8 @@ check_startmsgs()
> > #
> > # ${name}_prepend n Command added before ${command}.
> > #
> > +# ${name}_login_class n Login class to use, else "daemon".
> > +#
> > # ${rc_arg}_cmd n If set, use this as the method when invoked;
> > # Otherwise, use default command (see below)
> > #
> > @@ -942,7 +944,7 @@ run_rc_command()
> > _nice=\$${name}_nice _user=\$${name}_user \
> > _group=\$${name}_group _groups=\$${name}_groups \
> > _fib=\$${name}_fib _env=\$${name}_env \
> > - _prepend=\$${name}_prepend
> > + _prepend=\$${name}_prepend _login_class=\${${name}_login_class:-da
> emon}
> >
> > if [ -n "$_user" ]; then # unset $_user if running as that user
> > if [ "$_user" = "$(eval $IDCMD)" ]; then
> > @@ -1050,6 +1052,9 @@ $command $rc_flags $command_args"
> > fi
> > fi
> >
> > + # Prepend default limits
> > + _doit="limits -C $_login_class $_doit"
> ^^^^^^^^^^
> > +
> > # run the full command
> > #
> > if ! _run_rc_doit "$_doit"; then
>
> Apologies for waking so late.
> This breaks the start of scripts running before file systems are
> mounted, for example /etc/rc.d/ddb, if / and /usr are on separate
> partitions. The issue is that limits is /usr/bin/limits, and for
> obvious reasons can't be found before /usr is mounted.
> I suggest either move /usr/bin/limits to /bin/limits or avoid using it
> altogether.
> Do you want me to open a PR to track this issue?
> Regards!
A simple solution might be,
Index: rc.subr
===================================================================
--- rc.subr (revision 302001)
+++ rc.subr (working copy)
@@ -1071,8 +1071,13 @@
fi
fi
+ # Before we prepend limits, test if limits is
+ # available (/usr is mounted) so that limits can
+ # be run.
+ if limits >/dev/null 2>&1; then
# Prepend default limits
- _doit="limits -C $_login_class $_doit"
+ _doit="limits -C $_login_class $_doit"
+ fi
# run the full command
#
--
Cheers,
Cy Schubert <Cy.Schubert at cschubert.com>
FreeBSD UNIX: <cy at FreeBSD.org> Web: http://www.FreeBSD.org
The need of the many outweighs the greed of the few.
More information about the svn-src-all
mailing list