From ef4cd02bfa7d60a60b27402a9d1d1fc532c5ac23 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sun, 27 Sep 2015 04:03:11 +0000 Subject: [PATCH] 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 --- etc/rc.subr | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/etc/rc.subr b/etc/rc.subr index c23c8fd3e32e..cd933c685b4d 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