The process I have used for installing vsftpd since 12.04 no longer works. I get the error stop: Unknown instance
when restarting the service. I believe this means the configuration is wrong, but I cannot track down the issue. I'm having this problem on a virtual server.
Additionally, running sudo vsftpd
results in 500 OOPS: munmap
as noted by @Beltran.
Acquire root privileges
sudo -s
Install vsftpd and libpam-pwdfile
apt-get install vsftpd libpam-pwdfile
Edit vsftpd.conf
mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
vim /etc/vsftpd.conf
Copy and paste the following lines.
allow_writeable_chroot=YES
anonymous_enable=NO
chroot_list_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
hide_ids=YES
listen=YES
local_enable=YES
local_umask=022
local_root=/var/clients/$USER
nopriv_user=vsftpd
pasv_address=127.0.0.1
pasv_enable=YES
pasv_min_port=65000
pasv_max_port=65100
port_enable=YES
user_sub_token=$USER
seccomp_sandbox=NO
virtual_use_local_privs=YES
write_enable=YES
Register virtual admin
apt-get install apache2-utils
mkdir /etc/vsftpd
htpasswd -cd /etc/vsftpd/ftpd.passwd admin
vim /etc/vsftpd.chroot_list
Add 1 line for the admin user
admin
Configure PAM
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
Copy and paste these 2 lines.
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
Create a local user without shell access
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Create root directory and give local user proper access.
mkdir /var/clients
chmod -R 755 /var/clients
chown -R vsftpd:nogroup /var/clients
Register jailed virtual users (initially, I skip this step)
htpasswd -d /etc/vsftpd/ftpd.passwd {user_name}
mkdir /var/clients/{user_name}
Restart service
service vsftpd restart