Conta FTP para apenas um diretório

3

Informações básicas:

Estou usando o Serverpilot para gerenciar meu servidor Ubuntu que não fornece nenhum serviço de FTP.

  • Existe um usuário: serverpilot
  • Com o diretório inicial: /srv/users/serverpilot/
  • E há um site em execução neste diretório: /srv/users/serverpilot/apps/website/public/ .

O que eu quero:

Agora eu gostaria de ter uma conta de FTP que só pode ler e gravar neste diretório: /srv/users/serverpilot/apps/website/public/ftpdir/ .

O que eu tentei:

  • Eu instalei o vsftpd: sudo apt-get install vsftpd
  • Criado um novo usuário com esse diretório como home: sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser (provavelmente não é uma boa ideia ter um diretório inicial de um usuário em outro diretório inicial de usuários)
  • alterei a senha com sudo passwd ftpuser
  • Editou a configuração padrão vsftpd com sudo vi /etc/vsftpd.conf
    • local_enable=YES , então o ftpuser pode ser usado como login de ftp
    • write_enable=YES o usuário é capaz de escrever
    • chroot_local_user=YES não pode acessar nada fora de seu diretório inicial
    • pam_service_name=ftp porque eu estava recebendo um 530 Erro incorreto de login
  • E abri meu firewall com: sudo ufw allow 21/tcp

Os problemas:

  • Outros usuários ao lado de ftpuser também podem ser usados como login de FTP. Eu só quero ter um usuário ftp e não permitir que outros usuários do sistema usem o FTP.
  • O ftpuser também pode ser SSH no servidor.
  • Estou recebendo um erro 553 error: could not create file ao tentar enviar um arquivo. Para corrigir isso, me deparei com essa pergunta: link mas não acho que esse seja o caminho certo porque o arquivo deve ser de propriedade do usuário serverpilot , não do usuário ftpuser . O site que está sendo executado sob o usuário serverpilot deve processar os arquivos enviados.

Como já resolvi isso antes:

No passado, em outro servidor, mudei a propriedade do diretório e, depois de adicionar essas opções extras de configuração do vsftpd, ele estava finalmente funcionando:

file_open_mode=0775
local_umask=022
allow_writeable_chroot=YES
pam_service_name=vsftpd

Mas nesse servidor eu tive problemas com o processamento dos arquivos enviados por causa da propriedade, então eu estou usando a função file_get_contents() PHP para obter os arquivos pela web ao invés de acessá-los diretamente no servidor que não é ' t que bom.

A pergunta final:

Como eu posso simplesmente ter 1 login de ftp que pode ler e gravar em um diretório em um diretório home de usuários onde a propriedade permanece no usuário de onde o diretório home é?

Desculpe pela duplicação, eu também fiz esta pergunta no Ask Ubuntu sem qualquer resposta: link talvez mais sorte aqui

    
por Roy 02.06.2016 / 15:52

0 respostas