diff --git a/pkg/challenge/init b/pkg/challenge/init index 90bff1d..226267a 100755 --- a/pkg/challenge/init +++ b/pkg/challenge/init @@ -20,8 +20,21 @@ cmdline() { USER_LOGIN=$(cmdline adlin.login) USER_PKEY=$(cmdline adlin.key) USER_IP=$(cmdline adlin.ip) +ROOT_PASSWORD=$(cmdline adlin.rootpasswd) + +[ -f /etc/shadow_ ] && mv /etc/shadow_ /etc/shadow [ -n "${USER_IP}" ] && echo "${USER_IP}" > /root/my_ip +[ -n "${ROOT_PASSWORD}" ] && sed -i "/^root:/s@!@${ROOT_PASSWORD}@" /etc/shadow + +# Handle extra user from /etc/shadow +sed -r 's/^([^:]+):.*$/\1/' /etc/shadow | while read u; do + grep -q "^$u" /etc/passwd || { + i=$(($(wc -l /etc/passwd | cut -d ' ' -f 1) + 988)) + echo "$u:x:$i:$u" >> /etc/group + echo "$u:x:$i:$i:new user:/home:/bin/ash" >> /etc/passwd + } +done # Define hostname hostname adlin-${USER_LOGIN} @@ -45,6 +58,7 @@ done # Launch some daemons #/usr/bin/setsid /usr/sbin/crond > /dev/null & +/usr/bin/setsid /bin/shadow-up > /dev/null 2> /dev/null & # Prepare bonus 2 mkdir -p /mnt @@ -68,7 +82,7 @@ N2=$((25 + $RANDOM % 35)) sync rm /mnt/bonus2 sync -umount /mnt +umount /mnt 2> /dev/null # Launch requested init