This repository has been archived on 2023-01-08. You can view files and clone it, but cannot push or open issues or pull requests.
ptrcports/root-enter/enter
ptrcnull 42ae5d0b59 root-enter: upgrade to 6
more features less typoes
2022-05-04 18:33:19 +02:00

48 lines
953 B
Bash
Executable file

#!/bin/sh
set -e
[ "$(id -u)" = 0 ] || DOAS="${DOAS:-doas}"
[ "$unshared" = 1 ] || exec $DOAS env unshared=1 unshare -m $0 "$@"
bindpoints="/etc/resolv.conf"
user="patrycja"
command="ash -l"
while getopts "be:u:c:" 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 ))
if [ ! -d "$1" ]; then
echo "no such directory: $1"
exit 1
fi
mount -t devtmpfs devtmpfs $1/dev
mount -t tmpfs shm $1/dev/shm
mount -t devpts devpts $1/dev/pts
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'"