如何使 Alpine Docker 容器中的 PureFTPd 进行日志记录?

如何使 Alpine Docker 容器中的 PureFTPd 进行日志记录?

我正在建立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 使用用户帐户,并且成功了,所以我知道用户名和密码是有效的。

在尝试这个功能时,我移除了-BPureFTPd 中的后台开关,但我在 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 或组。我已经解决了这个问题,这种身份验证模式现在似乎可以正常工作了。

我们仍在寻求有关记录方面的答案。

相关内容