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
Best Answer
Ubuntu 14.04 uses user sessions which was absent in 12.04, so
service
is looking at the user session, not the system session, and your user isn't running vstfpd(root is). So, you will need to specify--system
when you useservice
to start, stop or check the status of a service.vsftpd is a soft-link to upstart, so you won't be able to run it as an unprivileged user, you will need to be root to start or stop or check the status of such a process.
Doing an
ls -l on /etc/init.d/vsftpd
reveals:which is similar to
cron
,resolvconf
and a few more, which are all upstart jobs and need to be root to be started or stopped.These services are usually started on boot. See here for more on upstart:
Refer man page of upstart if you want even more!
So, long story short, to start, stop, check status, you need to be root. You can do that as follows:
and enter your password or use: