conf/92636: /usr/local/etc/rc.d scripts with dependencies don't run inside jail

hotlips Internet admin hostmaster at GTS.NET
Tue Jan 31 21:15:48 PST 2006


Thus saith FreeBSD-gnats-submit at FreeBSD.org:
| 
| Thank you very much for your problem report.
| It has the internal identification `conf/92636'.
| The individual assigned to look at your
| report is: freebsd-bugs. 
| 
| You can access the state of your problem report at any time
| via this link:
| 
| http://www.freebsd.org/cgi/query-pr.cgi?pr=92636
| 
| >Category:       conf
| >Responsible:    freebsd-bugs
| >Synopsis:       /usr/local/etc/rc.d scripts with dependencies don't run inside jail
| >Arrival-Date:   Tue Jan 31 19:30:04 GMT 2006


	Hmm, a silly typo - try this fix instead:

--- mountcritlocal.orig Thu Jan 26 14:05:17 2006
+++ mountcritlocal      Tue Jan 31 14:05:00 2006
@@ -6,7 +6,8 @@
 
 # PROVIDE: mountcritlocal
 # REQUIRE: root
-# KEYWORD: nojail
+
+if [ `/sbin/sysctl -n security.jail.jailed` -eq 1 ]; then exit 0; fi
 
 . /etc/rc.subr


... It might be better to replace the mountcritlocal target
with a dummy for the "early_late_divider" function.


Also, below is a better test - a diff to hack /etc/rc to show
what is (& isn't) happening ...


-- 
Bruce Becker			+1 416 410 0879
GTS Network Administration	Toronto, Ont.
Email:	hostmaster at gts.net

 --------- 8< --------- 8< --------- 8< --------- 8< --------- 8< ---------

--- /etc/rc	Thu Jan 26 14:05:17 2006
+++ rc.test	Tue Jan 31 13:35:22 2006
@@ -43,8 +43,8 @@
 # Set shell to ignore SIGINT (2), but not children;
 # shell catches SIGQUIT (3) and returns to single user.
 #
-trap : 2
-trap "echo 'Boot interrupted'; exit 1" 3
+echo trap : 2
+echo trap "echo 'Boot interrupted'; exit 1" 3
 
 HOME=/
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -61,7 +61,7 @@
 
 dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
 if [ ${dlv:=0} -ne 0 -o -f /etc/diskless ]; then
-	sh /etc/rc.initdiskless
+	echo sh /etc/rc.initdiskless
 fi
 
 # Run these after determining whether we are booting diskless in order
@@ -80,8 +80,10 @@
 #
 files=`rcorder ${skip} /etc/rc.d/* 2>/dev/null`
 
+echo "files=\"$files\""
+
 for _rc_elem in ${files}; do
-	run_rc_script ${_rc_elem} ${_boot}
+	echo run_rc_script ${_rc_elem} ${_boot}
 
 	case "$_rc_elem" in
 	*/${early_late_divider})	break ;;
@@ -98,7 +100,11 @@
 *)	find_local_scripts_new ;;
 esac
 
+echo "local_rc=\"${local_rc}\""
+
 files=`rcorder ${skip} /etc/rc.d/* ${local_rc} 2>/dev/null`
+echo "files=\"$files\""
+
 _skip_early=1
 for _rc_elem in ${files}; do
 	case "$_skip_early" in
@@ -109,7 +115,7 @@
 		;;
 	esac
 
-	run_rc_script ${_rc_elem} ${_boot}
+	echo run_rc_script ${_rc_elem} ${_boot}
 done
 
 echo ''



More information about the freebsd-bugs mailing list