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を使用する必要はなく、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で活動しています。
他のいくつかのソリューション(listen_ipv6=NO
およびlisten=YES
)に加えて、変更した後にコメントを含めたため、同じエラーで失敗しました。
listen_ipv6=NO # modified
また、同じstatus=2/INVALIDARGUMENT
エラーが発生していました。デーモンを直接実行することでしか理解できませんでした:
$ Sudo /usr/sbin/vsftpd /etc/vsftpd.conf
500 OOPS: bad bool value in config file for: listen_ipv6
Systemctl/serviceも/var/log/vsftpd.logも使用されていません。
解決策は、末尾のコメントを削除することでした:
listen_ipv6=NO
vsftpdには、rootが所有する/etc/vsftpd.confが必要です。所有者を確認する
ls -la /etc
所有者を変更するには、rootとして、またはSudo経由で次のコマンドを実行します
chown root /etc/vsftpd.conf
これらのソリューションはどれも私にとってはうまくいきませんでした。 SELinuxを無効にしているので、それは原因ではなく、vsftpdの構成ファイルは100%完璧です。service vstfpd start
はすぐに動作しますが、起動時に開始されないだけです。
私の最終的な解決策は、cronで継続的にサービスをチェックして実行するこのbashスクリプトで、現在完全に動作し、起動時にサービスが停止していることを確認して起動することで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