FTP usando VSFTPD “Acesso negado”

1

Estou executando o Ubuntu 10.04 i386. Eu uso Cyberduck (cliente GUI FTP) para conectar ao meu servidor mysub.domainname.com (alterado aqui).

Isso é o que eu quero ser capaz de fazer:

1) Altere a raiz do apache2 de /var/www para /home/myuser/webroot para exibir arquivos como index.html

2) Permitir que o FTP grave em /home/myuser/webroot

3) Permita que myuser entre com sua combinação de usuário / senha com FTP e leia / escreva em qualquer lugar dentro de myuser pasta

A pasta raiz do Apache2 funciona bem. Indo para myserver.com/index.html funciona. Mas eu não consigo FTP para escrever, mesmo que eu mudei essas linhas em etc/vsftpd.conf :

listen=YES
#listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
#local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
# chroot_list_enable below.
#chroot_local_user=YES
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

O problema

Sempre que tento criar uma pasta em /home/myuser ou /home/myuser/webroot , recebo o erro Create directory operation failed. no meu programa de FTP, o Cyberduck.

Talvez informações úteis:

drwxrwsr-x 2 myuser www-data 4096 2011-04-18 03:04 webroot

e eu mudei as permissões aqui também:

-rw-rwSr-- 1 myuser root 69 2011-04-18 02:14 index.html

... mas sem sorte. Ainda não consigo carregar ou escrever usando FTP. Qualquer sugestão ou ponteiros seria ótimo, eu estou bastante perdido em um presente.

ATUALIZAÇÃO:

Eu tentei ativar logins anônimos para FTP, e eu nem consegui fazer isso funcionar ... Eu acho que a única solução é remover completamente o sistema de vsftpd e apache2 e apenas começar de novo

    
por lollercoaster 19.04.2011 / 00:21

1 resposta

2

Para permissões, você precisa ter a pasta e os arquivos que pertencem a myuser , para que possam ser acessados a partir da conta myuser.

Se o apache (ou seus scripts) precisar gravar na pasta, a melhor coisa a fazer é usar chgrp para atribuir os locais específicos que devem ser gravados para o www-data grupo, então chmod g+w dessa localização ou arquivo. Se você estiver dando acesso de gravação a uma pasta, chmod g+sw dará acesso de gravação à pasta e garantirá que os arquivos criados nela também pertencerão ao grupo de dados www.

Os arquivos e diretórios, neste caso, seriam parecidos com:

drwxrwxr-x 2 myuser   www-data    4096 2011-04-18 03:04 webroot
-rw-rw-r-- 1 myuser   www-data    1000 2011-04-18 03:04 index.html
drwxrwsr-x 2 myuser   www-data    4096 2011-04-18 03:04 folderwithg+ws

Você deve ter muito cuidado ao dar acesso de gravação a arquivos e pastas para o apache, caso contrário, um invasor pode descobrir uma maneira de fazer com que seus scripts se sobreponham ou substituam index.html, ou o que for.

Caso contrário, se o apache não precisar gravar em seu diretório de documentos, as permissões devem ser boas, pois todos os subdiretórios e arquivos são legíveis (e os diretórios são acessíveis ao mundo).

Para SSL / TLS, você está faltando

ssl_enable=YES

Você pode forçar os usuários a usar criptografia:

force_local_logins_ssl=YES
force_local_data_ssl=YES

E também há uma opção ssl_ciphers= , se você quiser limitá-la a ALTA ou a uma lista específica de cifras. Se você quiser "SSL implícito" (em vez dos comandos AUTH SSL ou AUTH TLS para iniciar a criptografia, a criptografia é negociada no início da conexão), então isso é implicit_ssl=YES

    
por 19.04.2011 / 01:33