Estou desenvolvendo o gists / pure-ftpd para criar instâncias do servidor FTP em um contêiner Docker . Aqui está o meu comando de inicialização do servidor, que estou hackeando:
# 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
Estou usando o sistema de permissões unix
, pois não preciso do sistema de banco de dados do usuário separado. No entanto, eu estou criando usuários e eles não parecem funcionar, então eu quero ver alguns logs do PureFTPd, e o servidor simplesmente não quer fazer nenhum registro para mim.
Eu tentei a conta de usuário via SSH na mesma caixa, e isso funciona, então sei que o nome de usuário e a senha são válidos.
Ao brincar com isso, eu removi a opção -B
background no PureFTPd, mas não vejo nenhum log no stdout. Grande parte da documentação / ajuda em torno da internet diz que os logs são enviados para o syslog, mas isso não está sendo executado neste contêiner, já que é uma construção Alpine bem nua. Eu tentei adicionar o Rsyslog, enquanto estava consciente de que "projetos paralelos" são um desperdício de tempo, e eu tenho isso:
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
rsyslogd: activation of module imklog.so failed [v8.31.0 try http://www.rsyslog.com/e/2145 ]
Então eu desisti disso e tentei --with-altlog /var/log/ftp.log
, e isso também não foi escrito.
Eu poderia mudar para o Ubuntu, onde o syslog (etc) provavelmente está disponível e em execução por padrão, mas eu não quero fazer isso apenas para descobrir que o registro está quebrado no PureFTPd de qualquer maneira. Existe uma solução simples?
Embora pareça inútil (para o meu caso de uso) duplicar o sistema de usuários Unix com um banco de dados de usuários FTP virtual, eu tentei isso e funciona. Em vez de -l unix
, eu uso -l puredb:/etc/pureftpd/pureftpd.pdb
. Isso faz com que meu servidor FTP funcione, pelo menos.
Eu consertei o problema dos usuários Unix. Acredito que foi devido a como eu estava criando usuários - eles não tinham um shell ou um grupo. Eu resolvi isso, e esse modo de autenticação agora parece funcionar.
Respostas sobre o aspecto da extração de madeira ainda são procuradas.