diff options
author | Jamie Gritton <jamie@FreeBSD.org> | 2023-09-25 00:03:09 +0000 |
---|---|---|
committer | Jamie Gritton <jamie@FreeBSD.org> | 2023-09-28 04:39:00 +0000 |
commit | c96d5c97bb65a1b0bc135b452f13d0ca6a8d60c9 (patch) | |
tree | ecede54b4fa82eb649c242d0ff518888d669980b | |
parent | 23332e34e653131c0ff3a948b57d06948102a06b (diff) | |
download | src-c96d5c97bb65a1b0bc135b452f13d0ca6a8d60c9.tar.gz src-c96d5c97bb65a1b0bc135b452f13d0ca6a8d60c9.zip |
MFC jail: avoid a clash with /etc/jail.conf.d between rc and jail(8)
Since 13.1, /etc/rc.d/jail has looked for a per-jail config file in
/etc/jail.conf.d. For RELENG 14, the ".include" directive was added to
jail(8), with a sample line in the jail.conf(5) man page that includes
"/etc/jail.conf.d/*.conf".
These two use cases don't work together. When the jail.conf.d files
are included from a master jail.conf, the files in jail.conf.d are
likely to hold only partial configurations, and shouldn't be directly
loaded by rc.d/jail. But there are existing configurations that depend
on the current rc.d behavior. While users could be advised not to
include from /etc/jail.conf.d, it's the natural choice even if not
mentioned in jail.conf.5.
The workaround is for rc.d/jail to continue to load the individual
files, but only when /etc/jail.conf doesn't include from that
directory (via a simple grep test), This allows the current use
while not breaking the previous use.
Reported by: antranigv at freebsd.am
Differential Revision: https://reviews.freebsd.org/D41962
(cherry picked from commit a2440348eed75bb7682579af0905b652747fd016)
-rwxr-xr-x | libexec/rc/rc.d/jail | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libexec/rc/rc.d/jail b/libexec/rc/rc.d/jail index f8995c7e3b00..f12dae280bb0 100755 --- a/libexec/rc/rc.d/jail +++ b/libexec/rc/rc.d/jail @@ -126,7 +126,9 @@ parse_options() if [ -r "$_jconf" ]; then _conf="$_jconf" return 0 - elif [ -r "$_jconfdir" ]; then + elif [ -r "$_jconfdir" ] && ! egrep -q \ + '^\s*\.include\s*["'\'']?/etc/jail.conf.d/' "$jail_conf" \ + 2>/dev/null; then _conf="$_jconfdir" return 0 elif [ -r "$jail_conf" ]; then |