Centos – “vsftpd.service: cgroup is empty” service fails to start

centosvsftpd

I have a CentOS 7.1 machine, recently installed with no other services currently configured. I have installed vsftpd via yum, but when I go to start the service (via systemctl), I get the response:

Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.

systemctl status isn't particularly enlightening:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2017-05-02 11:17:55 BST; 49s ago
  Process: 111420 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=1/FAILURE)

And journalctl -xe provides the following (removing the timestamps for brevity):

systemd[1]: Received SIGCHLD from PID 111421 (vsftpd).
systemd[1]: Child 111420 (vsftpd) died (code=exited, status=1/FAILURE)
systemd[1]: Child 111420 belongs to vsftpd.service
systemd[1]: vsftpd.service: control process exited, code=exited status=1
systemd[1]: vsftpd.service got final SIGCHLD for state start
systemd[1]: vsftpd.service changed start -> failed
systemd[1]: Job vsftpd.service/start finished, result=failed
systemd[1]: Failed to start Vsftpd ftp daemon.
systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=JobRemoved cookie=9 reply_cookie=0 error=n/a
systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=JobRemoved cookie=17180 reply_cookie=0 error=n/a
systemd[1]: Unit vsftpd.service entered failed state.
systemd[1]: vsftpd.service failed.
systemd[1]: vsftpd.service: cgroup is empty
systemd[1]: Child 111421 (vsftpd) died (code=exited, status=2/INVALIDARGUMENT)

The only line that seems meaningful is the penultimate one, vsftpd.service: cgroup is empty. But I can't find anything that is useful in this regard. The config file is the default set from the yum repo. I followed these same steps on a test environment and they worked fine.

Best Answer

The problem for me was that the default install for vsftpd on CentOS 7 expects IPv6 to be enabled on the host. In my case, it wasn't, and I hadn't noticed the difference between my local VM and what our service providers had given us.

In the configuration file /etc/vsftpd/vsftpd.conf change the lines (near the end of the file):

listen=NO
listen_ipv6=YES

to instead read as:

listen=YES
listen_ipv6=NO

And the service now starts!