我正在建立gists/pure-ftpd在 Docker 容器中创建 FTP 服务器实例。这是我正在使用的服务器启动命令:
# Args explained at http://debianhelp.co.uk/pureftp.htm
#
# -P -Force the specified IP address in reply to a PASV/EPSV/SPSV command
# -S -Connections are accepted on the specified IP and port
# -l -This is the authentication type, in the form "protocol:path"
# -E -Only allow authenticated users (if you wanted anonymous only you would substitute -e).
# -j -If the user doesn't have a home directory create it at first login.
# -R -Disallow the usage of the chmod command.
# -B -Instruct the standalone server to start in the background
# -g -Custom pidfile location (defaults to /var/run/pure-ftpd.pid)
# -d Verbose logging
/usr/sbin/pure-ftpd \
-S $PUBLIC_HOST,21 \
-P $PUBLIC_HOST \
-p $MIN_PASV_PORT:$MAX_PASV_PORT \
-g $PID_FILE \
-l unix \
-d \
-E \
-j \
-R \
-B
我正在使用unix
权限系统,因为我不需要单独的用户数据库系统。但是,我正在创建用户,但它们似乎不起作用,所以我想查看来自 PureFTPd 的一些日志,但服务器不想为我做任何日志记录。
我已经在同一个盒子上尝试通过 SSH 使用用户帐户,并且成功了,所以我知道用户名和密码是有效的。
在尝试这个功能时,我移除了-B
PureFTPd 中的后台开关,但我在 stdout 上看不到任何日志。互联网上的大部分文档/帮助都说日志会被发送到 syslog,但这个容器中并没有运行 syslog,因为它是一个非常简单的 Alpine 版本。我尝试添加 Rsyslog,同时意识到“附带项目”很耗时,结果得到了以下结果:
rsyslogd:imklog:无法打开内核日志(/proc/kmsg):操作不允许。rsyslogd
:模块 imklog.so 激活失败 [v8.31.0 尝试http://www.rsyslog.com/e/2145]
所以我放弃了,并且尝试了--with-altlog /var/log/ftp.log
,但也没有写出任何东西。
我可以切换到 Ubuntu,其中 syslog(等)可能可用并默认运行,但我不想这样做,结果却发现 PureFTPd 中的日志记录功能已损坏。有简单的解决方法吗?
附录
虽然用虚拟 FTP 用户数据库复制 Unix 用户系统似乎毫无意义(就我的用例而言),但我已经尝试过了,而且有效。-l unix
我使用而不是-l puredb:/etc/pureftpd/pureftpd.pdb
。这至少让我的 FTP 服务器正常工作。
更新 2
我已经修复了 Unix 用户问题。我认为这是由于我创建用户的方式造成的 - 他们没有 shell 或组。我已经解决了这个问题,这种身份验证模式现在似乎可以正常工作了。
我们仍在寻求有关记录方面的答案。