vsftpd 无法启动:“systemd[1]:vsftpd.service:主进程已退出,代码=已退出,状态=2/INVALIDARGUMENT”

vsftpd 无法启动:“systemd[1]:vsftpd.service:主进程已退出,代码=已退出,状态=2/INVALIDARGUMENT”

我有安装了 Arch Linux 的 Rapsberry Pi B+。uname报告版本:

[computer@computer001 ~]$ uname -a
Linux computer001 3.18.3-3-ARCH #1 PREEMPT Mon Jan 26 20:10:28 MST 2015 armv6l GNU/Linux

我已经通过安装了 ftp 服务器pacman -S vsftpd并且安装已经通过,没有任何错误。然后我尝试配置它,结果如下vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
#local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=computer
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
ftpd_banner=Welcome to personal ftp service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
listen=YES
#listen_ipv6=YES

现在,当我尝试重新启动时vsftpd,我得到:

[computer@computer001 etc]$ sudo systemctl restart vsftpd.service && systemctl status -l vsftpd.service
* vsftpd.service - vsftpd daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 1970-01-01 06:32:24 UTC; 112ms ago
  Process: 350 ExecStart=/usr/bin/vsftpd (code=exited, status=2)
 Main PID: 350 (code=exited, status=2)

这也是以下的输出sudo journalctl | grep -i vsftp

Jan 01 06:32:24 computer001001 sudo[347]: computer001 : TTY=pts/0 ; PWD=/etc ; USER=root ; COMMAND=/usr/bin/systemctl restart vsftpd.service
Jan 01 06:32:24 computer001001 systemd[1]: Starting vsftpd daemon...
Jan 01 06:32:24 computer001001 systemd[1]: Started vsftpd daemon.
Jan 01 06:32:24 computer001001 systemd[1]: vsftpd.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Jan 01 06:32:24 computer001001 systemd[1]: Unit vsftpd.service entered failed state.
Jan 01 06:32:24 computer001001 systemd[1]: vsftpd.service failed.

这是单元脚本/usr/lib/systemd/system/vsftpd.service

[Unit]
Description=vsftpd daemon
After=network.target

[Service]
ExecStart=/usr/bin/vsftpd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

如果我运行sudo /usr/bin/vsftpd,我会收到以下错误:

500 OOPS: config file not owned by correct user, or not a file

我已经更正了/etc/vsftpd.confvia的文件权限sudo chown root:root /etc/vsftpd.conf,现在服务器可以手动启动。我还知道日期/时间不正确,我还没有设置它。我遗漏了什么?

答案1

如果有人在 vsftpd 中偶然发现这个问题,请通过命令检查你得到了什么错误:

/usr/sbin/vsftpd /etc/vsftpd.conf

如果是:

500 OOPS: SSL: cannot load RSA private key

然后重新生成 SSL 证书(或从您的提供商重新颁发):

sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

我的工作/etc/vsftpd.conf

anonymous_enable=NO
connect_from_port_20=YES
dirmessage_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
listen_ipv6=YES
listen=NO
local_enable=YES
local_umask=022
pam_service_name=vsftpd
pasv_enable=Yes
pasv_max_port=10200
pasv_min_port=10100
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
secure_chroot_dir=/var/run/vsftpd/empty
ssl_ciphers=HIGH
ssl_enable=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
use_localtime=YES
write_enable=YES
xferlog_enable=YES

如果您希望查看以点开头的文件名,请添加:

force_dot_files=YES

答案2

/etc/vsftpd.conf我已经重置了viaroot:root的权限sudo chown root:root /etc/vsftpd.conf,现在vsftpd服务器开始 viasudo systemctl restart vsftpd.service并通过 手动运行它sudo /usr/bin/vsftpd

答案3

步骤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

答案4

我得到了同样的状态错误:2/INVALIDARGUMENT

对我来说,问题与我的配置中的被动地址解析有关:

pasv_addr_resolve=YES
pasv_address=xxx.yyy.org

这需要在启动时运行互联网连接来解析地址。为了完成这项工作我必须做

sudo systemctl edit vsftpd

并添加以下几行:

[Unit]
Wants=network-online.target
After=network-online.target

相关内容