#!/bin/bash # Adapted from LinuxConfig.org # GNU GPL v3.0+ # cmds build into bash: echo, cd CMDS="bash clear mkdir touch mv rm ls grep cat vim" USER=$1 CMDS=($CMDS) # convert to array # Create user if not exist if ! id "$USER" 2&>/dev/null; then echo 'INFO: User not found' echo 'Creating...' useradd --create-home --shell /usr/bin/bash $USER echo "Password for $USER:" passwd $USER fi CHROOT=$(eval echo ~$USER) mkdir -p $CHROOT$CHROOT # make new home dir chown $USER:$USER $CHROOT$CHROOT echo "PS1='\[\e[38;5;202m\][\[\e[38;5;45m\]\h\[\e[38;5;202m\]:\[\e[38;5;40m\]\W\[\e[38;5;202m\]]\\$ \[\e[0m\]'" > $CHROOT$CHROOT/.bashrc # ChrootDirectory requires these permissions chown root:root $CHROOT chmod 745 $CHROOT printf "Match User $USER\n ChrootDirectory $CHROOT" > /etc/ssh/sshd_config.d/70-$USER.conf # cp user and group into chroot mkdir -p $CHROOT/etc/ cat /etc/passwd | grep $USER > $CHROOT/etc/passwd cat /etc/group | grep $USER > $CHROOT/etc/group # cp in all commands and dependencies for cmd in "${CMDS[@]}"; do for dep in $( ldd $(which $cmd) | grep -v dynamic | cut -d " " -f 3 | sed 's/://' | sort | uniq ); do cp --parents $dep $CHROOT done cp --parents $(which $cmd) $CHROOT done SHELL=$(cat /etc/passwd | grep $USER | tr ":" "\n" | tail -n 1) if [ ! -f $CHROOT$SHELL ]; then echo "WARN: You didn't add the shell specified in /etc/passwd for \"$USER\": ($SHELL)" fi # ARCH amd64 if [ -f /lib64/ld-linux-x86-64.so.2 ]; then cp --parents /lib64/ld-linux-x86-64.so.2 /$CHROOT fi # ARCH i386 if [ -f /lib/ld-linux.so.2 ]; then cp --parents /lib/ld-linux.so.2 /$CHROOT fi systemctl restart sshd