我在Ubuntu 12.04盒(基于标准Ubuntu 12.04 AMI的EC2实例)上安装了pure-ftpd软件包(版本1.0.35-1)。
pure-ftpd守护进程正在运行(用psvalidation),尽pipe没有PID文件(预计将由/etc/init.d/pure-ftpd脚本创build)。
以下是由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到服务器(本地使用本地主机或远程使用公共IP地址)。
我尝试添加绑定文件到/ etc / pure-ftpd / conf并重新启动,但没有帮助。
当我安装pure-ftpd时,它用openbsd-inetd取代了inetd,但是由于没有启用服务,所以没有运行它。 所以inetd也不会在端口21上侦听。 (显然,Ubuntu有一个默认的no-inetd策略,根据https://lists.ubuntu.com/archives/ubuntu-users/2010-September/227905.html) 。我想运行pure-ftpd本身(而不是inetd),因为如果使用UploadScriptfunction,/etc/init.d/pure-ftpd脚本不需要inetd。
我不熟悉Ubuntu如何处理networking服务(除了通用的手册页外,找不到任何相关的文档),所以我可能会错过一些明显的东西。 /etc/hosts.allow(空)或hosts.deny(空)没有什么不寻常的,我没有添加任何防火墙规则(iptables -L显示防火墙处于初始状态)。 我已经检查过纯粹的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
更新:
如果我将它绑定到非特权端口(即> 1024),我就可以启动pure-ftpd。
另外,当我用完整的debugging日志logging启动pure-ftpd时,我在syslog中看到了以下内容:
pure-ftpd:(?@ localhost)[错误] altlog /var/log/pure-ftpd/transfer.log:权限被拒绝
请注意,该目录由root拥有。
这向我build议,虽然pure-ftpd是以根(根据'ps aux')运行的,但是它不具有root权限,它需要写入到根目录或者绑定到特权端口。 有人知道这里可能会发生什么?