mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

commit f6716a398908f0c2965315a59a5fa11ea796dcf6
parent c0063cc908efef690a39d7904c4c5ed00ee2afaa
Author: Jan Pobrislo <ccx@te2000.cz>
Date:   Sun,  5 Apr 2020 01:24:05 +0200

User container generation
Diffstat:
Mzsh-functions/confz_containers_init | 44++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+), 0 deletions(-)

diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -82,3 +82,47 @@ confz_container_alpine_package_check() { ) grep -q '^'$vars[package]'$' $vars[container_root]/etc/apk/world } + +containers_fstab_gen(){ + printf '%\n' \ + "overlay $2/union overlay nosuid,nodev,lowerdir=$1,upperdir=$2/changes,workdir=$2/work 0 0" \ + "run_tmpfs $2/union/run tmpfs rw,nosuid,nodev,mode=755,uid=1000 0 0" +} + +confz_container_user_setup_check() { + checkvars container_name containers_dir user + defvar container_root $vars[containers_dir]/$vars[container_name] + defvar nameserver 127.0.0.1 + + local U=$vars[containers_dir]/user/$vars[user] + local D=$U/$vars[container_name] + local uid=$(awk </etc/passwd -F: -v USER=ccx '$1 == USER {print $3}') + + [[ "$uid" =~ '[0-9]+' ]] || die "Could not get uid for ${(qqq)uid}" + + require fs_d flags= filename=$vars[containers_dir]/user + require fs_d flags= filename=$U + require fs_d flags= filename=$D + require fs_d flags= filename=$D/changes + require fs_d flags= filename=$D/union + require fs_d flags= filename=$D/work + require fs_c flags= filename=$D/fstab \ + content_call="containers_fstab_gen ${(qqq)vars[container_root]} ${(qqq)U}" + require fs_d flags= filename=$D/changes/dev + require fs_d flags= filename=$D/changes/dev/shm + require fs_d flags= filename=$D/changes/dev/pts + require fs_d flags= filename=$D/changes/etc + # TODO: $U/changes/etc/passwd + require fs_c flags= filename=$D/changes/etc/resolv.conf \ + content_call="printf '%\n' $vars[nameserver]" + require fs_d flags= filename=$D/changes/home + require fs_d flags= filename=$D/changes/home/$vars[user] + require fs_o owner=$uid filename=$U/changes/home/$vars[user] + + require fs_d flags= filename=$vars[containers_dir]/home + require fs_d flags= filename=$vars[containers_dir]/home/$vars[user] + require fs_l flags= \ + filename=$vars[containers_dir]/home/$vars[user]/$vars[container_name] \ + destination=../../user/$vars[user]/$vars[container_name]/union/home/$vars[user] + +}