Как был бы я идти о преобразовании этого сценария удара:
mkdir /store/sftp/%USERNAME%
sudo useradd -d /incoming %USERNAME%
sudo passwd %USERNAME%
## Password needs to be typed or passed in here
sudo usermod -g sftp %USERNAME%
sudo usermod -s /bin/false %USERNAME%
sudo chmod 755 /store/sftp/%USERNAME%
sudo chown root:root /store/sftp/%USERNAME%
sudo mkdir /store/sftp/%USERNAME%/incoming
sudo chown %USERNAME%:sftp /store/sftp/%USERNAME%/incoming
Принять имя пользователя и пароль?
Во-первых, необходимо избежать что много из sudo
вызовы. Вместо этого необходимо запустить скрипт с sudo
. Окончательная версия была бы похожа на это:
#!/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"
Заключение в кавычки необходимо, потому что имя пользователя может содержать пробелы (но уверенный, оно обычно не делает).
Отредактированный для работы.