O Ubuntu ProFTP exclui o arquivo parcialmente carregado depois que a conexão falha no lado do cliente

1

Eu instalo o ProFTP do apt no novo ubuntu 14.04 (OpenSSH + LAMP) com o mod-sql para login do usuário. Eu defino a pasta ftp para cada usuário de configuração na tabela sql. E permitir que o usuário retome o arquivo de upload pelo conjunto AllowStoreRestart on na configuração.

Tudo funciona bem. O usuário pode fazer o upload / download do arquivo gerenciado em sua pasta. Se o usuário parar a fila de upload no filezilla, ele poderá continuar mais tarde.

No entanto, quando a conexão com a Internet não é estável no lado do cliente. Após a conexão com a internet, algum arquivo que ainda está sendo enviado desaparece de uma pasta no servidor.

Após a investigação, descobri que todos os arquivos que desaparecem receberam um erro como este

[13/Jul/2014:14:15:37 +0000] 110.xx.xx.xx username STOR  426  2196991 788.205 Timeout exceeded: TimeoutStalled during data transfer  failed Data connection closed

ou

[13/Jul/2014:14:11:48 +0000] 110.xx.xx.xx username STOR  426  675945 211.340 Read EOF from client  failed Data connection closed

Em seguida, esse arquivo desaparecerá da pasta e o filezilla tentará fazer o upload do primeiro byte novamente. Voltei a verificar o xferlog e não encontrei nenhuma solicitação de exclusão do cliente apenas com uma mensagem de upload incompleta.

  • Alguém sabe por que o arquivo parcialmente carregado desaparece da pasta de upload?
  • Como evitar esse comportamento do proftpd?

Versão do servidor

# proftpd -v
ProFTPD Version 1.3.5rc3
# uname -a
Linux testftp 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
# mysql -V
mysql  Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (x86_64) using readline 6.3

proftpd.conf

Include /etc/proftpd/modules.conf
UseIPv6                         on
IdentLookups                    off
ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"
DenyFilter                      \*.*/
RootLogin                       off
DefaultRoot                     ~
RequireValidShell               off
Port                            21
<IfModule mod_dynmasq.c>
</IfModule>
MaxInstances                    30
User                            proftpd
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
Include /etc/proftpd/sql.conf
AllowStoreRestart on
Include /etc/proftpd/conf.d/

P.S.

  • Normalmente, os arquivos transferidos para esse servidor têm mais de 5 GB.
por Pattapong J 14.07.2014 / 16:41

1 resposta

2

Depois de muita pesquisa e teste. O culpado é o AppArmor. Normalmente funciona bem. Apenas alguma condição ocorre que o AppArmor, por vezes, excluir um arquivo de conexão quebrada. Eu não consegui encontrar o padrão específico ou config causar este problema porque com a mesma ação algum arquivo excluir, às vezes não. No entanto, depois de desativar o AppArmor, não encontrei mais esse problema.

Para desativar os comandos de execução do apparmor abaixo:

service apparmor stop 
update-rc.d -f apparmor remove 
apt-get remove apparmor apparmor-utils
    
por 31.07.2014 / 18:17