58 lines
1.4 KiB
Bash
Executable file
58 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
## Mount directories into /ftp
|
|
|
|
vsftp_add_user() {
|
|
local username="$1"
|
|
local password="$2"
|
|
echo "Adding user:$username with password:******"
|
|
mkdir -p "/home/$username"
|
|
|
|
# UID 33 is for www-data in WP
|
|
adduser \
|
|
-h "/home/$username" \
|
|
-s /bin/sh \
|
|
-D \
|
|
"$username"
|
|
echo "$username:$password" | chpasswd
|
|
# GID 33 is for www-data in WP
|
|
sed -i "s/^$username:x:[0-9]*:[0-9]*:/$username:x:33:33:/" /etc/passwd
|
|
sed -i "s/^$username:x:[0-9]*:/$username:x:33:/" /etc/group
|
|
chown "$username:$username" "/home/$username"
|
|
}
|
|
|
|
vsftp_main() {
|
|
|
|
# Create users
|
|
idx=0
|
|
while true ; do
|
|
idx=$((idx + 1 ))
|
|
eval "username=\${VSFTP_USER_${idx}_USERNAME:-}"
|
|
eval "password=\${VSFTP_USER_${idx}_PASSWORD:-}"
|
|
if [ -z "$username" ]; then break ; fi
|
|
vsftp_add_user "$username" "$password"
|
|
done
|
|
if [ $idx -eq 1 ]; then
|
|
echo "Please export environement variables for users"
|
|
echo ""
|
|
echo "Ex: "
|
|
echo " VSFTP_USER_1_USERNAME=johnsnow"
|
|
echo " VSFTP_USER_1_PASSWORD=Winter1sC0ming"
|
|
echo " VSFTP_USER_2_USERNAME=tyrionlannister"
|
|
echo " VSFTP_USER_2_PASSWORD=aLann1ster4lwaysPaysHisD3bts"
|
|
fi
|
|
|
|
echo "Starting VSFTP"
|
|
exec vsftpd /etc/vsftpd/vsftpd.conf
|
|
}
|
|
|
|
sed -i \
|
|
-e "s/^pasv_address=.*$/pasv_address=${VSFTP_HOSTNAME:-}/" \
|
|
-e "s/^anonymous_enable=.*$/anonymous_enable=NO/" \
|
|
/etc/vsftpd/vsftpd.conf
|
|
|
|
{
|
|
echo "log_ftp_protocol=YES" ;
|
|
} >> /etc/vsftpd/vsftpd.conf
|
|
|
|
vsftp_main
|