6

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.


  1. Acquire root privileges

    sudo -s
    
  2. Install vsftpd and libpam-pwdfile

    apt-get install vsftpd libpam-pwdfile
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. Create a local user without shell access

    useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
    
  7. Create root directory and give local user proper access.

    mkdir /var/clients
    chmod -R 755 /var/clients
    chown -R vsftpd:nogroup /var/clients
    
  8. Register jailed virtual users (initially, I skip this step)

    htpasswd -d /etc/vsftpd/ftpd.passwd {user_name}
    mkdir /var/clients/{user_name}
    
  9. Restart service

    service vsftpd restart
    
6
  • I have the same issue but using the standard vsftpd configuration: $ sudo vsftpd 500 OOPS: munmap
    – Beltran
    Apr 25, 2014 at 16:52
  • 1
    This appears to be a bug.
    – roydukkey
    Apr 30, 2014 at 14:26
  • @roydukkey It looks like the patched fix has been uploaded to trusty-proposed.
    – Elder Geek
    Apr 30, 2014 at 19:36
  • 1
    Is it on a virtualized server? See bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1313450
    – netvope
    May 26, 2014 at 4:29
  • 1
    Yes. You're correct. It is on a virtualised server. I just had time to try the configuration, I outline above, a few weeks ago. And, the issue still existed at that point. I'd not thought to update this post.
    – roydukkey
    May 27, 2014 at 4:12

5 Answers 5

3

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 use service 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:

lrwxrwxrwx 1 root root 21 May 16  2013 /etc/init.d/vsftpd -> /lib/init/upstart-job*

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.

Upstart is an event-based replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.

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:

sudo service vsftpd {start|stop|status|restart}

and enter your password or use:

service vsftpd {start|stop|status|restart} --system
16
  • That's all true. I've been starting the service from root. Also, the permissions on /etc/init.d/vsftpd are as you suggest.
    – roydukkey
    Apr 25, 2014 at 18:54
  • @roydukkey: So what exactly are you looking for?
    – jobin
    Apr 25, 2014 at 19:04
  • A reason why the same exact configuration doesn't work on Ubuntu 14.04, but does on 12.04-13.10.
    – roydukkey
    Apr 25, 2014 at 19:14
  • @roydukkey: Are you sure you don't need to use sudo even on 13.04? I doubt that.
    – jobin
    Apr 25, 2014 at 20:18
  • 1
    I might have the same problem askubuntu.com/questions/457248/vsftpd-not-working Apr 28, 2014 at 22:14
3
+50

Enable trusty-proposed in your software sources and re-install vsftpd. I'm checking if this passes muster.

If you don't wish to enable proposed in your sources vsftpd source and builds are available on this page. https://launchpad.net/ubuntu/trusty/+source/vsftpd/3.0.2-1ubuntu2.14.04.1

2
  • I don't really want to do this for the entire server as it will be production. Is there a way to just update vsftpd from trust-proposed?
    – roydukkey
    May 1, 2014 at 14:51
  • @roydukkey, you can enable it, apt-get update then apt-get install vsftpd it will update only vsftpd and its required dependencies (it will ask for confirmation, check change list). Then disable it.
    – user.dz
    Jun 13, 2014 at 18:37
2

If you're receiving this issue on an AWS EC2 instance, you should try creating the instance with HVM virtualization instead of the Paravirtual.

If you still desire a paravirtual instance, there no telling when the bug will be fixed as it is a bug in the Xen kernal, which is used to run virtualization for AWS.

Here is the bug thread addressing this issue in more detail: https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1313450

1
  • FYI The fix was released
    – Elder Geek
    Mar 5, 2017 at 16:13
1

Still new to Ubuntu. Had it working on Ubuntu 12.4 with no hassles but on Ubuntu 14.04, this is what i did:

in the /etc/vsftpd.conf file add these 2 lines:

allow_writeable_chroot = YES
seccomp_sandbox = NO

Change the value of pam_service_name to ftp.

Hope this helps someone

0

This worked for me on Ubuntu 14.04. Ifthe user is jailed within /var/www/html/kofi_site directory then simply run:

sudo chmod ugo-w /var/www/html/kofi_site

2
  • This worked for me, any reason for the downvote?
    – nastycrow
    May 26, 2014 at 23:10
  • I would guess it was downvoted because it didn't address the problem the OP was having. If the question had been "What do I do if the user is jailed within the /var/www/html/kofi_site directory?" I would assume you would have gotten better results.
    – Elder Geek
    Jun 13, 2014 at 18:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .