summaryrefslogtreecommitdiffstats
path: root/etc/rc.subr
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2015-09-27 04:03:11 +0000
committeradrian <adrian@FreeBSD.org>2015-09-27 04:03:11 +0000
commit1f2ea82d25513d303025c79a8c6787ef22ab3edc (patch)
tree97a97a83293082d336d5f9203e244792297a7c8e /etc/rc.subr
parent9f18ee59aa59fb80b5c9ea0d0d54c24a55333ffd (diff)
downloadFreeBSD-src-1f2ea82d25513d303025c79a8c6787ef22ab3edc.zip
FreeBSD-src-1f2ea82d25513d303025c79a8c6787ef22ab3edc.tar.gz
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
Diffstat (limited to 'etc/rc.subr')
-rw-r--r--etc/rc.subr7
1 files changed, 6 insertions, 1 deletions
diff --git a/etc/rc.subr b/etc/rc.subr
index c23c8fd..cd933c6 100644
--- a/etc/rc.subr
+++ b/etc/rc.subr
@@ -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
OpenPOWER on IntegriCloud