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


10

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

Informação de fundo

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-me de que o usuário sftp esteja com o chroot no 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 / 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 eu tentei

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

Posso fazer 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 lidas / lidas + x para o bit do grupo, portanto ... Não funciona.

Eu também tentei com a ACL, mas, à medida que aplico as permissões ACL RWX para o usuário sftp em / var / www (diretórios e arquivos recursivamente), ele também altera as permissões unix, que é o que eu não quero.

O que posso fazer aqui?

Eu estava pensando em permitir que o usuário www-data efetue login como sftp, para que ele possa modificar os arquivos / diretórios que a www-data possui em / var / www. Mas, por alguma razão, acho que seria uma jogada estúpida em termos de segurança.


Eu não acho que é possível sem alterar a permissão.
Unnikrishnan

Respostas:


15

O que eu fiz foi chroot meus usuários para seus diretórios pessoais e, em seguida, usado mount --bindpara criar um link para ele em seus diretórios pessoais.

Eu costumava setfaclgarantir que os www-datamaintans escrevessem permissões em novos arquivos no diretório. Esse efeito se repetirá /var/www, e é isso que você deseja fazer.

Ao definir g+so 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ê deseja que suas montagens ainda estejam lá quando você reiniciar 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 o faz.

Basta adicionar linhas como esta:

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

Você pode querer reiniciar para garantir que funcione.


11
O fato é que, quando você chmod g + s / home / someuser / www e chown someuser: www-data / home / someuser / www, também transferirá as mesmas permissões e owner: group para / var / www. Isto é devido à montagem --bind. Muito obrigado!
bashintosh

2
Onde posso pagar uma cerveja? Parece que está tudo bem, e o Apache não parece reclamar do sftp-user como proprietário de / var / www. Eu estava muito perto da sua solução quando segui o caminho da ACL, mas deixei de fora a parte suid: você é mágica, obrigada!
bashintosh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.