root-enter: new aport

This commit is contained in:
ptrcnull 2022-04-26 01:10:13 +02:00
parent 751ea8fef1
commit 87a825d85f
2 changed files with 60 additions and 0 deletions

19
root-enter/APKBUILD Normal file
View file

@ -0,0 +1,19 @@
# Contributor: Patrycja Rosa <alpine@ptrcnull.me>
# Maintainer: Patrycja Rosa <alpine@ptrcnull.me>
pkgname=root-enter
pkgver=1.0.0
pkgrel=0
pkgdesc="enter chroot with mounts"
url="https://git.ddd.rip/ptrcnull/ptrcports"
arch="noarch"
license="BSD-2-Clause"
source="enter"
options="!check"
package() {
install -Dm755 enter "$pkgdir"/usr/bin/enter
}
sha512sums="
f64c60c1937f4ac6145b3fc00dc9dce8205328009e60219282e8cba5837aff63674d4b3bef2fb751323e21720ab9ff251356817b0c2734ef2ebe315162e6caf8 enter
"

41
root-enter/enter Executable file
View file

@ -0,0 +1,41 @@
#!/bin/sh
set -e
[ "$unshared" = 1 ] || exec doas env unshared=1 unshare -m $0 $@
bindpoints="/etc/resolv.conf"
user="patrycja"
command="ash -l"
while getopts "be:u:s:" opt; do
case $opt in
'b') bindpoints="
$bindpoints
/home/patrycja/aports
/home/patrycja/packages
/home/patrycja/.abuild
" ;;
'e') bindpoints="$bindpoints $OPTARG" ;;
'u') user=$OPTARG ;;
'c') command=$OPTARG ;;
*) echo "unknown $opt" ;;
esac
done
shift $(( $OPTIND - 1 ))
mount -t devtmpfs devtmpfs $1/dev
mount -t tmpfs shm $1/dev/shm
mount -t sysfs sysfs $1/sys
mount -t proc proc $1/proc
mount -t tmpfs tmpfs $1/tmp
for point in $bindpoints; do
if [ -f $point ]; then
touch $1$point
else
mkdir -p $1$point
fi
mount --bind $point $1$point
done
chroot $1 /bin/sh -c "su $user -c '$command'"