Eu tenho esse problema no RHEL 8.6 com proftpd 1.3.8a
Eu tenho uma configuração de servidor proftpd, com um usuário chamado IFTPTEST. Em sua home, este usuário possui 2 diretórios, in/ e out/. Meu objetivo é: colocar os arquivos no diretório out/ e o usuário se conectar ao servidor (com usuário/senha) para buscar o arquivo.
Quando o usuário se conecta, ele pode entrar no diretório out/, listar o conteúdo do diretório e colocar os arquivos no diretório. No entanto, quando ele tenta obter o arquivo, recebo um erro de permissão negada :
sftp> ls -al
drwxrwxr-x 3 IFTPTEST 1000 4096 Nov 9 10:02 .
drwxrwxr-x 3 IFTPTEST 1000 4096 Nov 9 10:02 ..
drwxrwxr-x 2 IFTPTEST 1000 4096 Nov 9 10:08 in
drwxrwxrwx 2 IFTPTEST 1000 4096 Nov 9 10:05 out
sftp> cd out
sftp> ls -al
drwxrwxrwx 2 IFTPTEST 1000 4096 Nov 9 10:05 .
drwxrwxr-x 3 IFTPTEST 1000 4096 Nov 9 10:02 ..
-rwxrwxrwx 1 IFTPTEST 1000 13 Nov 9 10:05 test
sftp> get test test.txt
Fetching /out/test to test.txt
remote open("/out/test"): Permission denied
Mesmo com o diretório out/ e o arquivo de teste com direitos 777, recebo o Permission negado .
No sftp.log, posso ver:
OPEN command for '/out/test' blocked by 'RETR' handler
E em /var/log/messages :
RETR /appli_var/XFRF/xfrf_files/ftpusers/IFTPTEST/out/test denied by <Limit> configuration
O que não entendo, porque tenho a configuração RETR para o diretório out/ em meu proftpd.conf (veja abaixo).
É um problema conhecido ? Tenho algum problema na minha configuração?
Conteúdo do proftpd.conf (não coloquei o arquivo inteiro):
# Proftpd server configuration
[...]
LoadModule mod_vroot.c
<Global>
VRootEngine on
VRootLog /appli_var/XFRF/proftpd/vroot.log
VRootOptions allowSymlinks
DefaultRoot ~
</Global>
[...]
# Directory limits
<Global>
<Directory />
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD LIST MDTM MLSD MLST NLST PWD STAT XCUP XPWD OPENDIR READDIR REALPATH LSTAT FSTAT SETSTAT STOR SITE_CHMOD>
AllowAll
</Limit>
</Directory>
<Directory /in>
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD LIST MDTM MLSD MLST NLST PWD STAT XCUP XPWD RETR SIZE APPE DELE RNFR RNTO STOR STOU SITE_CHMOD SETSTAT FSETSTAT LSTAT FSTAT READ>
AllowAll
</Limit>
</Directory>
<Directory /out>
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD LIST MDTM MLSD MLST NLST PWD STAT XCUP XPWD RETR SIZE DELE SITE_CHMOD SETSTAT FSETSTAT LSTAT FSTAT READ>
AllowAll
</Limit>
</Directory>
</Global>
[...]
LoadModule mod_sftp.c
# SFTP virtual server (user/password authentication)
# ----------------------------------------------------
<VirtualHost 10.19.xx.xxx>
<Limit LOGIN>
AllowAll
</Limit>
ServerName "SFTP Server"
Port 20022
AccessGrantMsg "Welcome to SFTP %u"
SFTPEngine on
SFTPHostKey /appli/XFRF/proftpd/etc/ssh/proftpd_dsa_key
SFTPHostKey /appli/XFRF/proftpd/etc/ssh/proftpd_rsa_key
SFTPHostKey /appli/XFRF/proftpd/etc/ssh/proftpd_ecdsa_key
SFTPAuthMethods password
SFTPCompression delayed
SFTPLog /appli_var/XFRF/proftpd/sftp.log
ExtendedLog /appli_var/XFRF/proftpd/sftp_extended.log
TransferLog /appli_var/XFRF/proftpd/sftp_transfer.log
ServerLog /appli_var/XFRF/proftpd/sftp_server.log
</VirtualHost>
[...]
Se necessário, posso ver mais em /var/log/messages :
dispatching PRE_CMD command 'LSTAT /out/test' to mod_tls
dispatching PRE_CMD command 'LSTAT /out/test' to mod_exec
dispatching PRE_CMD command 'LSTAT /out/test' to mod_core
dispatching PRE_CMD command 'LSTAT /out/test' to mod_core
in dir_check(): setting umask to 0022 (was 0022)
dispatching POST_CMD command 'LSTAT /out/test' to mod_exec
dispatching LOG_CMD command 'LSTAT /out/test' to mod_log
dispatching PRE_CMD command 'STAT /out/test' to mod_tls
dispatching PRE_CMD command 'STAT /out/test' to mod_exec
dispatching PRE_CMD command 'STAT /out/test' to mod_core
dispatching PRE_CMD command 'STAT /out/test' to mod_core
in dir_check(): setting umask to 0022 (was 0022)
dispatching POST_CMD command 'STAT /out/test' to mod_exec
dispatching LOG_CMD command 'STAT /out/test' to mod_log
dispatching PRE_CMD command 'RETR /out/test' to mod_tls
dispatching PRE_CMD command 'RETR /out/test' to mod_exec
dispatching PRE_CMD command 'RETR /out/test' to mod_core
dispatching PRE_CMD command 'RETR /out/test' to mod_core
dispatching PRE_CMD command 'RETR /out/test' to mod_vroot
dispatching PRE_CMD command 'RETR /out/test' to mod_vroot
dispatching PRE_CMD command 'RETR /out/test' to mod_auth
dispatching PRE_CMD command 'RETR /out/test' to mod_xfer
in dir_check_full(): path = '/appli_var/XFRF/xfrf_files/ftpusers/IFTPTEST/out/test', fullpath = '/appli_var/XFRF/xfrf_files/ftpusers/IFTPTEST/out/test'
RETR /appli_var/XFRF/xfrf_files/ftpusers/IFTPTEST/out/test denied by <Limit> configuration
dispatching POST_CMD_ERR command 'RETR /out/test' to mod_exec
dispatching POST_CMD_ERR command 'RETR /out/test' to mod_vroot
dispatching POST_CMD_ERR command 'RETR /out/test' to mod_auth
dispatching LOG_CMD_ERR command 'RETR /out/test' to mod_log
dispatching LOG_CMD_ERR command 'RETR /out/test' to mod_xfer
dispatching POST_CMD_ERR command 'OPEN /out/test' to mod_exec
dispatching LOG_CMD_ERR command 'OPEN /out/test' to mod_log