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
This commit is contained in:
Adrian Chadd 2015-09-27 04:03:11 +00:00
parent c4dabdf78a
commit ef4cd02bfa

@ -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:-daemon}
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