Alterar as permissões de gravação para o SFTP preso nega o login

11

Eu tenho procurado em muitos sites e fóruns sobre como configurar um usuário SFTP que é preso a um determinado diretório usando CHROOT. Aqui estão os passos que tenho seguido, mas não consigo obter permissões de gravação para trabalhar.

Configuração

sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Criar pasta

mkdir /var/www/sites

Criar usuário e grupo

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Permissões e propriedade

chown root:root /var/www
chmod 755 /var/www/sites

Agora, com essas configurações, o usuário que fez o upload pode enviar o SFTP para o diretório inicial, mas não consegue gravar no diretório.

Existem 2 erros típicos que ocorrem, ou eu não consigo fazer login ou não tenho permissões de gravação.

Erro de login

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Eu estou em desacordo e acabo tentando descobrir isso e se alguém puder me apontar na direção certa, eu ficaria muito agradecido.

Obrigado.

    
por onggie 13.04.2013 / 04:26

2 respostas

12

Ok, descobri a solução para isso, espero que ajude algumas pessoas.

O usuário é preso a / var / www / sites. Eu então criei outra pasta / var / www / sites / site1. Eu faço root: webmaster / var / www / sites / site1 assim como chmod 775 / var / www / sites / site1. Isso permitiu que o diretório inicial tivesse as permissões corretas para efetuar login e, em seguida, pudesse gravar na próxima pasta.

Se o usuário precisar de acesso de escrita a / var / www / sites, você deve prender o usuário em / var / www, que tem root: propriedade root e permissões de 755. Você então precisa dar / var / www / sites propriedade do root: (seu grupo) e permissões de 775.

    
por onggie 14.04.2013 / 01:07
1

Talvez a melhor solução seja:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Adicione os usuários:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Então, para cada usuário que você criou, adicione uma tag ssh como esta: (Você também pode usar a diretiva "Match Group" como no seu exemplo, em vez de "Match User")

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Assim, você pode gerenciar todos os usuários de que precisa em um ambiente chrooted.

Fabrizio

    
por fabreg 13.07.2013 / 12:00