FTP O usuário não pode modificar arquivos, mas tem permissões corretas

1

Eu criei um novo usuário ( foo ) e quando ele faz login via ftp ele não pode editar os arquivos no diretório ao qual ele tem acesso.

No diretório, ele pode fazer login em ls -l :

-rw-rw-r-- 1 root www-pub  6427 Nov 17 04:21 index.html

O usuário pertence ao grupo www-pub . Aqui está a saída de cat /etc/group para demonstrar que ele está realmente nesse grupo:

...
www-pub:x:1001:ftpuser,www-data,foo
foo:x:1002:

* editar as permissões no diretório de contenção são:

drwxrwsr-x  5 root www-pub  4096 Nov 17 02:53 thecontainingdir

e o acima:

drwxrwsr-x 49 root www-pub  4096 Nov 16 02:40 thenextdirup

Então, como ele pode fazer login via ftp e como o arquivo que ele precisa editar tem as permissões corretas para permitir que o grupo www-pub leia e grave o arquivo e ele é membro desse grupo, por que ele não pode editar? (ou fazer upload de alguma coisa)?

Somente quando eu alterar o arquivo para 777 , ele poderá editá-lo. É como se ele não estivesse no grupo ... mas ele é! O que está acontecendo?

    
por Lothar_Grimpsenbacher 17.11.2012 / 05:32

1 resposta

0

Resumindo, a v3.2.5 do vsftpd não funcionará com uma raiz gravável dentro do chroot (), então você precisa tornar a pasta raiz do usuário não gravável, atualizar para uma nova versão (e definir algumas configurações conf) ou downgrade para uma versão mais antiga.

Detalhes

OK, o problema veio de mim usando o vsftpd versão 2.3.5 (o último pacote disponível para o meu servidor). Esta versão do vsftpd requer que o diretório home dos usuários do ftp NÃO tenha privilégios de gravação. Sim, você leu corretamente. Então, no meu caso, eu queria que o usuário fosse capaz de fazer o ftp em uma raiz da web e começar a editar. Não pode fazer isso. Eu tive que criar outro diretório acima da raiz da web, fazer o diretório home do usuário, torná-lo não gravável e, em seguida, o usuário poderia ftp, navegar até a raiz da web e editar / carregar conforme o esperado.

Esta solução é uma droga no meu caso, pois eu tenho um número de usuários operando em diferentes profundidades em vários diretórios virtuais, mas pelo menos funciona (e estou usando reescrevendo para evitar que as pessoas fiquem confusas). Agora preciso sempre ter certeza de que existe um diretório "wrapper" em torno de qualquer coisa que eu queira designar a um usuário em particular.

As principais sugestões que encontrei on-line:

add 'allow_writeable_chroot=YES' to your conf file

(isso não apenas não funcionou, mas causou problemas no daemon. Eu suspeito que isso funcione SE você tiver uma versão posterior (3.0+) do vsftpd)

downgrade to a previous version of vsftpd

(removi a versão atual e comecei a tentar obter uma versão mais antiga para trabalhar com o meu servidor, mas encontrei tantas dependências ausentes e com falha que desisti. Outros on-line tiveram alguma sorte com a versão 2.3. 2 ou até 3.x se você puder compilar o seu próprio)

Algumas outras soluções sugeridas por uma das pessoas por trás do vsftpd que encontrei on-line:

Define option local_root= in configuration file. must by /home or other path to directory with users folders. In this way vsftpd chrooting to /home directory.

(para mim isso não funcionaria porque eu não poderia ter uma única raiz local)

Define option passwd_chroot_enable=yes in configuration file and change in /etc/passwd file user home directory from "/home/user" to "/home/./user" (w/o quotes). In this way vsftpd chrooting to /home directory.

(isso simplesmente não funcionaria no meu servidor.)

Download sources of vsftpd-ext, compile and overwrite exist vsftpd binaries or take it from repositories and add to configuration file

option allow_writeable_root=yes.

(não consigo compilar neste servidor.)

    
por 17.11.2012 / 09:53