Назад | Перейти на главную страницу

Как заставить работать логирование в PureFTPd в контейнере Alpine Docker?

Я строю на gists / чистый ftpd для создания экземпляров FTP-сервера в контейнере Docker. Вот моя команда запуска сервера, которую я взламываю:

# 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, но это не работает в этом контейнере, поскольку это довольно простая сборка 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 в любом случае не работает. Есть простое исправление?

Дополнение

Хотя кажется бессмысленным (для моего случая использования) дублировать пользовательскую систему Unix с виртуальной базой данных пользователей FTP, я пробовал это, и это работает. Вместо того -l unix, Я использую -l puredb:/etc/pureftpd/pureftpd.pdb. По крайней мере, это заставит мой FTP-сервер работать.

Обновление 2

Я исправил проблему пользователей Unix. Я считаю, что это произошло из-за того, как я создавал пользователей - у них не было оболочки или группы. Я решил это, и теперь этот режим аутентификации, кажется, работает.

Ответы на вопрос о ведении журнала все еще ищутся.