Primeiro, você deve evitar as muitas chamadas sudo
. Em vez disso, você deve executar o script com sudo
. A versão final ficaria assim:
#!/bin/bash
# first check for root user
if [ ! $UID -eq 0 ]; then
echo "This script must be run as root."
exit 1
fi
# check if the user provided an argument
if [ -z $1 ]; then
echo "No username provided. Usage: $0 username"
exit 2
fi
username=$1 # set the first argument as the username
mkdir "/store/sftp/$username"
useradd -d /incoming "$username"
passwd "$username"
## Password needs to be typed or passed in here
usermod -g sftp "$username"
usermod -s /bin/false "$username"
chmod 755 "/store/sftp/$username"
mkdir "/store/sftp/$username/incoming"
chown "$username:sftp" "/store/sftp/$username/incoming"
As citações são necessárias porque o nome do usuário pode conter espaços (mas, com certeza, isso não acontece).
Editado para trabalhar.