====== Ubuntu - FTP - Install vsftpd using text file for virtual users ====== ===== Install required packages ===== sudo apt install vsftpd libpam-pwdfile ---- ===== Configure vsftpd ===== Edit these variables in the config file and leave everything else with the default value. anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 nopriv_user=vsftpd virtual_use_local_privs=YES guest_enable=YES user_sub_token=$USER local_root=/var/www/$USER chroot_local_user=YES hide_ids=YES guest_username=vsftpd **NOTE:** Set the local_root to the parent directory where the user’s home directories are located. ---- ===== Configure PAM ===== Configure PAM to check the passwd file for users. auth required pam_pwdfile.so pwdfile /etc/ftpd.passwd account required pam_permit.so Make sure you remove everything else from the file. ---- ===== Create the passwd file containing the users ===== htpasswd -cd /etc/ftpd.passwd user1 You can later add additional users to the file like this: htpasswd -d /etc/ftpd.passwd user2 ---- ===== Create a local user account to authenticate virtual users ===== Create a local user that’s used by the virtual users to authenticate. useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd ---- ===== Restart vsftpd ===== /etc/init.d/vsftpd restart ---- ===== Create home directory ===== Create user’s home directory since vsftpd doesn’t do it automatically. mkdir /var/www/user1 chown vsftpd:nogroup /var/www/user1 chmod a-w /var/www/user1