usuário sftp chrooted com permissões de gravação para / var / www

8

Estou ficando confuso sobre essa configuração que estou tentando implantar. Espero que alguém de vocês possa me dar uma mão: muito apreciado.

Informações de plano de fundo

O servidor é Debian 6.0, ext3, com Apache2 / SSL e Nginx na frente como proxy reverso. Eu preciso fornecer acesso sftp ao diretório raiz do Apache (/ var / www), certificando-se de que o usuário sftp seja chrooted para esse caminho com permissões RWX.

Tudo isso sem modificar nenhuma permissão padrão em / var / www.

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

Dentro de / var / www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

O que tentei

  1. criou um novo grupo secureftp
  2. criou um novo usuário sftp, associado aos grupos secureftp e www-data também com o shell nologin . Homedir é /
  3. editado sshd_config com
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Eu posso fazer o login com o usuário sftp, listar arquivos, mas nenhuma ação de gravação é permitida. O usuário do Sftp está no grupo www-data, mas as permissões em / var / www são read / read + x para o bit do grupo, então ... Não funciona.

Eu também tentei com ACL, mas como eu aplico permissões ACL RWX para o usuário sftp em / var / www (dirs e arquivos recursivamente), ele irá mudar as permissões do unix também, que é o que eu não quero .

O que posso fazer aqui?

Eu estava pensando que eu poderia permitir que o usuário www-data fizesse login como sftp, para que ele pudesse modificar arquivos / diretórios que o www-data possui em / var / www. Mas por alguma razão, acho que isso seria um movimento estúpido no sentido da segurança.

    
por bashintosh 05.11.2013 / 06:07

1 resposta

12

Isso provavelmente seria mais uma questão de falha de servidor, mas de qualquer forma.

O que eu fiz foi chroot meus usuários em seus diretórios home e então usei mount --bind para criar um link para eles em seus diretórios home. Em seguida, usei setfacl para garantir que www-data maintans escrevesse permissões em novos arquivos no diretório. Este efeito reciclará em /var/www , que é o que você deseja fazer.

Ao definir g + s no diretório, todos os novos arquivos e diretórios criados nele herdarão a propriedade do grupo de seu pai.

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

Isso deve fazer o truque.

Torne suas montagens persistentes

Obviamente, você quer que suas montagens ainda estejam lá quando você reinicializar o servidor. É tão simples quanto adicionar as montagens ao seu /etc/fstab . Nem todos os provedores permitem que você toque nesse arquivo, mas a maioria faz isso. Basta adicionar linhas como esta:

/var/www        /home/someuser/www        none        bind        0        0

Você pode querer reinicializar para garantir que funcione.

    
por 05.11.2013 / 10:29