Ubuntu - FTP 的 VSFTPD 配置在重新启动时失败

Ubuntu - FTP 的 VSFTPD 配置在重新启动时失败

我需要在 Ubuntu 虚拟机中设置一个 FTP 服务器,但在 VSFTPD 中配置配置文件时遇到问题

从在线教程中我不断看到选择不同的选项和不同的推理,我只需要一个简单而安全的配置,而无需启用我不明白的设置。

到目前为止,我已经选择使用以下选项/etc/vsftpd.conf

Listen=NO
Anonymous_enable=NO
Local_enable=YES
wrtite_enable=YES
dirmessage_enable=YES
use_localtime=YES
connect_from_port_20=YES
xferlog_enable=YES
ftpd_banner=Welcome to Toms FTP Server.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

据我了解,这些选项执行以下操作:

监听启用独立,匿名拒绝未经验证的登录,写入启用允许写入文件,dir消息是目录解释,本地时间是用于约会文件的时间,端口20是不言自明的,xferlog是日志创建/格式类型?,横幅不言自明,chroot 指定用户仅限于其目录,不限于其目录的用户列在 chroot_list 中。

我遇到的问题是我不断看到有关用户列表的教程参考,其中将说明哪些用户确实具有访问权限,如下所示:

user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

这在我的文件中不存在,每当我尝试手动输入它时,它都会导致我的 VSFTPD 在重新启动时启动失败,我几乎在每个教程中都看到了这一点,但它不包含在我的配置文件中???

我是否尝试配置错误?

安全 VSFTPD 配置的最低要求是什么?

该用户列表是否不再受支持?

我还需要这个用户列表吗?

错误代码也不会消失删除这些文件并再次重新启动,它完全破坏了服务并且每次都需要重新安装,错误代码如下:

systemctl status vsftpd.service

● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2020-04-26 13:58:09 UTC; 14min ago
  Process: 30588 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
  Process: 30584 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
 Main PID: 30588 (code=exited, status=2)

Apr 26 13:58:09 ubuntu systemd[1]: Starting vsftpd FTP server...
Apr 26 13:58:09 ubuntu systemd[1]: Started vsftpd FTP server.
Apr 26 13:58:09 ubuntu systemd[1]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 26 13:58:09 ubuntu systemd[1]: vsftpd.service: Failed with result 'exit-code'.

答案1

注释掉(或删除)use_localtime,然后重试。

#use_localtime=YES

答案2

listen=NO方法别的东西正在处理传入网络连接的监听 - 它可以是一个经典的inetd、一个xinetd或一个.socket单元systemd

要点是,当配置为 时listen=NOvsftpd假设启动该vsftpd进程的任何事物都将立即向其提供传入连接,并且一旦该连接结束,vsftpd就可以退出,因为启动的事物vsftpd将为任何新连接启动它的新实例。如果像这样配置并从一个简单的开始systemctl start vsftpd,那么vsftpd将期望systemd给它一个附加到vsftpd进程的标准输入和输出的网络套接字。

但是,由于您的vsftpd.service单元显然没有配置为这种类型的套接字传递(它至少需要一条StandardInput=socket线和一个相应的vsftpd.socket单元),因此该vsftpd进程获得的标准输入和输出不是单个双向网络套接字,并且失败并显示结果出现“无效参数”错误。

如果您计划从 开始vsftpdsystemctl start vsftpd.service则将vsftpd负责侦听传入的 FTP 连接,并且应将其配置为listen=YES

如果您选择使用它,则userlist_file应该指向一个包含简单用户名列表的文件,每行一个。如果userlist_deny=NO,则文件中列出的用户将是唯一允许登录的人通过FTP。如果userlist_deny=YES使用该设置,则用户列表文件中列出的用户将总是被拒绝,甚至在询问密码之前。

相关内容