pure-ftpd 没有监听指定端口

pure-ftpd 没有监听指定端口

我在 Ubuntu 12.04 机器(基于标准 Ubuntu 12.04 AMI 的 EC2 实例)上安装了 pure-ftpd 包(版本 1.0.35-1)。

pure-ftpd 守护进程正在运行(已通过 ps 验证),但没有 PID 文件(预计由 /etc/init.d/pure-ftpd 脚本创建)。

以下是 init.d 脚本运行的结果命令:

/usr/sbin/pure-ftpd -l pam -O clf:/var/log/pure-ftpd/transfer.log -o -8 UTF-8 -u 1000 -E -B -g /var/run/pure-ftpd/pure-ftpd.pid

这是我真正的问题:ftp 服务器实际上没有监听任何端口(使用 netstat 和 nmap 检查)。所以我无法通过 ftp 连接到服务器(无论是本地使用 localhost 还是远程使用公共 IP 地址)。

我尝试将绑定文件添加到 /etc/pure-ftpd/conf 并重新启动,但没有帮助。

当我安装 pure-ftpd 时,它用 openbsd-inetd 替换了 inetd,但由于没有启用任何服务,因此没有运行它。因此 inetd 也没有监听端口 21。(根据https://lists.ubuntu.com/archives/ubuntu-users/2010-September/227905.html) 无论如何,我想单独运行 pure-ftpd(而不是通过 inetd),因为如果您使用 UploadScript 功能,则 /etc/init.d/pure-ftpd 脚本不需要 inetd。

我不熟悉 Ubuntu 如何处理网络服务(除了通用手册页之外找不到任何相关文档),所以我可能遗漏了一些显而易见的东西。/etc/hosts.allow(空)或 hosts.deny(空)似乎没有什么不寻常的,而且我没有添加任何防火墙规则(iptables -L 显示防火墙处于初始状态)。我检查了 pure-ftpd 文档;不知道还要看什么。

任何帮助都将不胜感激,谢谢!

更新:以下是 netstat 的输出:

$ sudo netstat -tulnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      629/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      629/sshd        
udp        0      0 0.0.0.0:68              0.0.0.0:*                           395/dhclient3   

更新:

如果我将 pure-ftpd 绑定到非特权端口(即 >1024),我就能启动它。

另外,当我启动带有完整调试日志的 pure-ftpd 时,我在系统日志中看到以下内容:

pure-ftpd:(?@localhost)[错误] altlog /var/log/pure-ftpd/transfer.log:权限被拒绝

请注意,此目录归 root 所有。

这表明,尽管 pure-ftpd 以 root 身份运行(根据“ps aux”),但它没有 root 权限,因此无法写入 root 拥有的目录或绑定到特权端口。有人知道这里可能发生了什么吗?

答案1

就我的情况而言,我必须pure-ftpd通过以下方式明确删除并再次安装apt

systemctl stop  pure-ftpd
apt remove      pure-ftpd
apt install     pure-ftpd
systemctl start pure-ftpd

或者如果您需要使用pure-ftpd-mysql

systemctl stop  pure-ftpd-mysql
apt remove      pure-ftpd-mysql
apt install     pure-ftpd-mysql
systemctl start pure-ftpd-mysql

相关内容