vsftpd-即使文件存在也无法读取配置文件

我在Ubuntu 15.04上,我刚刚安装了vsftpd 。 当我运行命令service vsftpd status ,我得到以下输出:

 vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Fri 2015-10-09 19:18:50 IST; 3min 11s ago Process: 2981 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2) Process: 2979 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 2981 (code=exited, status=2) Oct 09 19:18:50 harshal-Lenovo-B40-70 systemd[1]: Starting vsftpd FTP server... Oct 09 19:18:50 harshal-Lenovo-B40-70 systemd[1]: Started vsftpd FTP server. Oct 09 19:18:50 harshal-Lenovo-B40-70 systemd[1]: vsftpd.service: main process exited, code=exited, status=2/INVALIDARGUMENT Oct 09 19:18:50 harshal-Lenovo-B40-70 systemd[1]: Unit vsftpd.service entered failed state. Oct 09 19:18:50 harshal-Lenovo-B40-70 systemd[1]: vsftpd.service failed. 

我检查了/etc/vsftpd.conf ,它存在,我没有发现任何错误。 我怎么解决这个问题?

我试图在Ubuntu 16.04上启动vsftpd时遇到了同样的症状。 在我的情况下,在/etc/vsftpd.conf注释掉这一行就足够了:

 listen_ipv6=YES 

我不知道为什么我不能为我使用ipv6,但我不需要IP-v6并且禁用它解决了我的问题。

第1步:检查vsftpd.conf

 listen=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem 

步骤2:查看正在运行的ftp服务

 $ lsof -i | grep ftp 

第3步:停止xinetd

 $ sudo service xinetd stop 

第4步:停止xinetd后,通过键入来重新启动vsftpd服务

 $ /etc/init.d/vsftpd restart 

这可以通过注释来修复:

 listen_ipv6=yes 

我现在活跃在vsftpd上。

这些解决方案都不适合我。 我甚至禁用了SELinux因此不是原因而且vsftpd的配置文件是100%完美的,因为service vstfpd start立即工作,但它不会在启动时启动。

我的最终解决方案是这个bash脚本,它与cron一起运行,不断检查服务并且现在可以正常工作,并通过检查并查看服务已经死亡然后启动它来启动启动时的vsftp。

 #!/bin/bash service=vsftpd if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 )) then echo "$service is running!!!" else service vsftpd start fi 

然后我的cron就是

 * * * * * sudo /usr/sbin/startvsftpd.sh 

vsftpd需要/etc/vsftpd.conf由root拥有。 检查谁拥有它

 ls -la /etc 

要更改所有者,请以root身份或通过sudo运行以下命令

 chown root /etc/vsftpd.conf 

你可以看到/etc/vsftpd.conf。 这个文件配置Listen = YES,如果你设置,,你使用vsftpd启动serivce。 你可以试试。 我遇到过这个问题,我是如此解决,希望你能帮忙。