Compare commits
23 Commits
0.10.20231
...
release
| Author | SHA1 | Date | |
|---|---|---|---|
| c49c2bbaeb | |||
| 6bb3d7110a | |||
|
|
cee6f20aa5 | ||
|
|
1a27a7e0d4 | ||
|
|
c7f46c3fbb | ||
|
|
bfe413e8ec | ||
|
|
9aeb0ea10c | ||
|
|
9f2cf6651b | ||
|
|
cb5697acdd | ||
|
|
09dcdd0ec7 | ||
|
|
b7b2efca12 | ||
|
|
e441850f81 | ||
|
|
87febb6407 | ||
|
|
3fff3d371d | ||
|
|
7750a1b927 | ||
|
|
ee96a206aa | ||
|
|
6568a28c15 | ||
|
|
4859b56050 | ||
|
|
1d14badc4a | ||
|
|
5faac5e7a4 | ||
|
|
19c8c021c4 | ||
|
|
9d55c2ceb0 | ||
|
|
6ca8ea578e |
@@ -47,7 +47,7 @@ EOL Releases
|
||||
------------
|
||||
|
||||
It is sometimes necessary to run end-of-life releases for testing or legacy
|
||||
application support. Dy default Bastille will only install supported releases
|
||||
application support. By default Bastille will only install supported releases
|
||||
but you can bootstrap EOL / unsupported releases with a simple trick.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
@@ -158,6 +158,18 @@ clone|config|cmd|console|convert|cp|edit|htop|limits|mount|pkg|rcp|rename|servic
|
||||
TARGET="${1}"
|
||||
shift
|
||||
|
||||
# This is needed to handle the special case of 'bastille rcp' and 'bastille cp' with the '-q' or '--quiet'
|
||||
# option specified before the TARGET. Also seems the cp and rcp commands does not support ALL as a target, so
|
||||
# that's why is handled here. Maybe this behaviour needs an improvement later. -- yaazkal
|
||||
if { [ "${CMD}" = 'rcp' ] || [ "${CMD}" = 'cp' ]; } && \
|
||||
{ [ "${TARGET}" = '-q' ] || [ "${TARGET}" = '--quiet' ]; }; then
|
||||
TARGET="${1}"
|
||||
JAILS="${TARGET}"
|
||||
OPTION="-q"
|
||||
export OPTION
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ "${TARGET}" = 'ALL' ]; then
|
||||
target_all_jails
|
||||
elif [ "${CMD}" = "pkg" ] && [ "${TARGET}" = '-H' ] || [ "${TARGET}" = '--host' ]; then
|
||||
|
||||
@@ -41,7 +41,7 @@ bastille_url_midnightbsd="https://www.midnightbsd.org/ftp/MidnightBSD/releases/"
|
||||
## ZFS options
|
||||
bastille_zfs_enable="" ## default: ""
|
||||
bastille_zfs_zpool="" ## default: ""
|
||||
bastille_zfs_prefix="bastille" ## default: "${bastille_zfs_zpool}/bastille"
|
||||
bastille_zfs_prefix="${bastille_zfs_zpool}/bastille" ## default: "${bastille_zfs_zpool}/bastille"
|
||||
bastille_zfs_options="-o compress=lz4 -o atime=off" ## default: "-o compress=lz4 -o atime=off"
|
||||
|
||||
## Export/Import options
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Bastille jail startup script
|
||||
#
|
||||
# PROVIDE: bastille
|
||||
# REQUIRE: NETWORKING
|
||||
# REQUIRE: jail
|
||||
# KEYWORD: shutdown
|
||||
|
||||
# Add the following to /etc/rc.conf[.local] to enable this service
|
||||
@@ -41,7 +41,7 @@ restart_cmd="bastille_stop && bastille_start"
|
||||
rcordered_list() {
|
||||
local _jailsdir
|
||||
_jailsdir=$(. $bastille_conf; echo $bastille_jailsdir)
|
||||
bastille_ordered_list=$(rcorder -s nostart ${_jailsdir}/*/jail.conf | xargs dirname | xargs basename | tr "\n" " ")
|
||||
bastille_ordered_list=$(rcorder -s nostart ${_jailsdir}/*/jail.conf | xargs dirname | xargs basename -a | tr "\n" " ")
|
||||
}
|
||||
|
||||
bastille_start()
|
||||
|
||||
@@ -346,7 +346,7 @@ debootstrap_release() {
|
||||
;;
|
||||
esac
|
||||
else
|
||||
# If already set in /boot/loader.conf, check and try to load the module.
|
||||
# If already set in /boot/loader.conf, check and try to load the module.
|
||||
if ! kldstat -m ${_req_kmod} >/dev/null 2>&1; then
|
||||
info "Loading kernel module: ${_req_kmod}"
|
||||
kldload -v ${_req_kmod}
|
||||
|
||||
@@ -79,7 +79,8 @@ generate_vnet_jail_netblock() {
|
||||
## define uniq_epair
|
||||
local jail_list=$(bastille list jails)
|
||||
if [ -n "${jail_list}" ]; then
|
||||
local list_jails_num=$(echo "${jail_list}" | wc -l | awk '{print $1}')
|
||||
# local list_jails_num=$(echo "${jail_list}" | wc -l | awk '{print $1}')
|
||||
local list_jails_num=$(grep -e "e[0-9]b_bastille" "${bastille_jailsdir}"/*/jail.conf | grep -Eo '(bastille)([0-9]{1,3});' | grep -Eo '[0-9]{1,2}' | wc -l | awk '{print $1}')
|
||||
local num_range=$((list_jails_num + 1))
|
||||
for _num in $(seq 0 "${num_range}"); do
|
||||
if ! grep -q "e[0-9]b_bastille${_num}" "${bastille_jailsdir}"/*/jail.conf; then
|
||||
@@ -112,7 +113,7 @@ EOF
|
||||
vnet;
|
||||
vnet.interface = e0b_${uniq_epair};
|
||||
exec.prestart += "jib addm ${uniq_epair} ${external_interface}";
|
||||
exec.prestart += "ifconfig e0a_${uniq_epair} description \"vnet host interface for Bastille jail ${jail_name}\"";
|
||||
exec.prestart += "ifconfig e0a_${uniq_epair} description \'vnet host interface for Bastille jail ${jail_name}\'";
|
||||
exec.poststop += "jib destroy ${uniq_epair}";
|
||||
EOF
|
||||
fi
|
||||
|
||||
@@ -82,6 +82,7 @@ for _jail in ${JAILS}; do
|
||||
if [ -n "${USER}" ]; then
|
||||
validate_user
|
||||
else
|
||||
check_fib
|
||||
LOGIN="$(jexec -l "${_jail}" which login)"
|
||||
${_setfib} jexec -l "${_jail}" $LOGIN -f root
|
||||
fi
|
||||
|
||||
@@ -165,10 +165,15 @@ EOF
|
||||
}
|
||||
|
||||
generate_jail_conf() {
|
||||
if [ "$(sysctl -n security.jail.jailed)" -eq 1 ]; then
|
||||
devfs_ruleset_value=0
|
||||
else
|
||||
devfs_ruleset_value=4
|
||||
fi
|
||||
cat << EOF > "${bastille_jail_conf}"
|
||||
${NAME} {
|
||||
devfs_ruleset = 4;
|
||||
enforce_statfs = 2;
|
||||
devfs_ruleset = ${devfs_ruleset_value};
|
||||
exec.clean;
|
||||
exec.consolelog = ${bastille_jail_log};
|
||||
exec.start = '/bin/sh /etc/rc';
|
||||
@@ -189,12 +194,17 @@ EOF
|
||||
}
|
||||
|
||||
generate_linux_jail_conf() {
|
||||
if [ "$(sysctl -n security.jail.jailed)" -eq 1 ]; then
|
||||
devfs_ruleset_value=0
|
||||
else
|
||||
devfs_ruleset_value=4
|
||||
fi
|
||||
cat << EOF > "${bastille_jail_conf}"
|
||||
${NAME} {
|
||||
host.hostname = ${NAME};
|
||||
mount.fstab = ${bastille_jail_fstab};
|
||||
path = ${bastille_jail_path};
|
||||
devfs_ruleset = 4;
|
||||
devfs_ruleset = ${devfs_ruleset_value};
|
||||
enforce_statfs = 1;
|
||||
|
||||
exec.start = '/bin/true';
|
||||
@@ -212,11 +222,16 @@ EOF
|
||||
}
|
||||
|
||||
generate_vnet_jail_conf() {
|
||||
if [ "$(sysctl -n security.jail.jailed)" -eq 1 ]; then
|
||||
devfs_ruleset_value=0
|
||||
else
|
||||
devfs_ruleset_value=13
|
||||
fi
|
||||
NETBLOCK=$(generate_vnet_jail_netblock "$NAME" "${VNET_JAIL_BRIDGE}" "${bastille_jail_conf_interface}")
|
||||
cat << EOF > "${bastille_jail_conf}"
|
||||
${NAME} {
|
||||
devfs_ruleset = 13;
|
||||
enforce_statfs = 2;
|
||||
devfs_ruleset = ${devfs_ruleset_value};
|
||||
exec.clean;
|
||||
exec.consolelog = ${bastille_jail_log};
|
||||
exec.start = '/bin/sh /etc/rc';
|
||||
|
||||
@@ -212,7 +212,7 @@ if [ -n "${TXZ_EXPORT}" -o -n "${TGZ_EXPORT}" ] && [ -n "${SAFE_EXPORT}" ]; then
|
||||
error_exit "Error: Simple archive modes with safe ZFS export can't be used together."
|
||||
fi
|
||||
|
||||
if checkyesno bastille_zfs_enable; then
|
||||
if ! checkyesno bastille_zfs_enable; then
|
||||
if [ -n "${GZIP_EXPORT}" -o -n "${RAW_EXPORT}" -o -n "${SAFE_EXPORT}" -o "${OPT_ZSEND}" = "-Rv" ]; then
|
||||
error_exit "Options --gz, --raw, --safe, --verbose are valid for ZFS configured systems only."
|
||||
fi
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
bastille_config="/usr/local/etc/bastille/bastille.conf"
|
||||
. /usr/local/share/bastille/common.sh
|
||||
. /usr/local/etc/bastille/bastille.conf
|
||||
. ${bastille_config}
|
||||
|
||||
usage() {
|
||||
error_exit "Usage: bastille setup [pf|bastille0|zfs|vnet]"
|
||||
@@ -78,8 +79,8 @@ if [ ! -f "${bastille_pf_conf}" ]; then
|
||||
local ext_if
|
||||
ext_if=$(netstat -rn | awk '/default/ {print $4}' | head -n1)
|
||||
info "Determined default network interface: ($ext_if)"
|
||||
info "${bastille_pf_conf} does not exist: creating..."
|
||||
|
||||
info "${bastille_pf_conf} does not exist: creating..."
|
||||
|
||||
## creating pf.conf
|
||||
cat << EOF > ${bastille_pf_conf}
|
||||
## generated by bastille setup
|
||||
@@ -111,8 +112,8 @@ configure_zfs() {
|
||||
else
|
||||
## attempt to determine bastille_zroot from `zpool list`
|
||||
bastille_zroot=$(zpool list | grep -v NAME | awk '{print $1}')
|
||||
sysrc -f "${bastille_prefix}/bastille.conf" bastille_zfs_enable=YES
|
||||
sysrc -f "${bastille_prefix}/bastille.conf" bastille_zfs_zpool="${bastille_zroot}"
|
||||
sysrc -f "${bastille_config}" bastille_zfs_enable=YES
|
||||
sysrc -f "${bastille_config}" bastille_zfs_zpool="${bastille_zroot}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user