Usando o sftp ChrootDirectory enquanto dá a outros usuários acesso de gravação ao mesmo diretório

1

Eu preciso permitir um acesso SFTP de usuário não confiável a um diretório específico sob sua raiz do servidor da web. Eu não quero que ele acesse qualquer outra parte do sistema (incluindo o resto da web), então pensei em usar o ChrootDirective do OpenSSH. Essencialmente algo como a abordagem descrita aqui .

No entanto, parece que não há como fazer isso, ao mesmo tempo em que permite que o servidor da Web (ou o script git deploy) grave nesse diretório, pois assim que eu fizer isso, recebo um erro fatal: bad ownership or modes for chroot directory component "/srv/www/" .

Eu pensei em criar o diretório em outro lugar e mount --bind ing, mas a limitação parece se aplicar ao diretório chrooted e não apenas aos pais, então eu recebo o mesmo problema novamente.

Eu entendo que é uma questão de segurança, mas isso não é relevante aqui desde:

  • os outros usuários são confiáveis (bem, relativamente, e eles não podem adicionar arquivos suid)
  • o usuário não confiável só tem acesso ao SFTP, não ao SSH, por isso eles não podem executar nada de nenhuma maneira

Então, qualquer coisa que eu tenha esquecido? Alguma maneira sensata de sair dessa bagunça? (Sem passar para o FTP ou configurar o incron / rsync entre 2 diretórios, de preferência.)

    
por himdel 17.04.2014 / 00:41

1 resposta

0

Você pode configurar o diretório pessoal do usuário para ser sua pasta chroot, conforme descrito no tutorial ao qual você se conectou. Em seguida, monte /srv/www/ em um subdiretório do diretório inicial do usuário:

mkdir /home/jdoe/srv-www
mount --bind /srv/www /home/jdoe/srv-www

Após conectar-se ao sftp, ele teria que digitar no subdiretório para acessar o conteúdo de /srv/www/ . Você poderia bloquear permissões no diretório pessoal do usuário e nos outros arquivos, se quisesse.

    
por 22.04.2014 / 18:44