Acesso SFTP semelhante ao shell preso

4

Eu tenho uma pergunta sobre a criação de um usuário com uma espécie de acesso ao shell (na verdade, tudo que é necessário deste usuário é um sftp access para um diretório específico).

O cenário é o seguinte - eu tenho um código existente que é protegido por IonCube, então não consigo mexer com ele - estou preso a pastas de saída que ele fornece. O que faz cria algumas pastas com alguns arquivos para baixar durante sua operação. Tudo isso acaba em /var/www/xy/backup/orderbackup/random-name-folder-here/files_here

Agora, gostaria de criar um usuário que tenha acesso sftp a /var/www/xy/backup/files/ e seus subordinados, mas de preferência em nenhum outro lugar.

Eu crio um usuário comum e o prendo nesse diretório (embora eu não tenha certeza se posso criar uma cadeia porque não posso alterar /var/www/xy/backup/orderbackup/ ownership para root porque ele irá parar de salvar arquivos), ou talvez eu deva use alguma outra técnica.

Eu li posts sobre o RSSH, MySecureShell etc. que abordagem seria meio termo entre ser seguro e complicado de configurar (eu não sou um guru do Linux).

Obrigado antecipadamente!

    
por RandomWhiteTrash 13.07.2011 / 12:46

3 respostas

6

O OpenSSH (que também fornece a funcionalidade sftp e scp) ganhou funcionalidade chroot em suas versões posteriores. Basicamente, você só precisa adicionar linhas semelhantes a estas ao arquivo /etc/ssh/sshd_config .

Subsystem sftp internal-sftp

Match group sftpusers
     ChrootDirectory /var/www/xy/backup/files/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Em seguida, crie um novo grupo chamado sftpusers com o comando groupadd sftpusers .

O último passo é criar um usuário pertencente ao grupo sftpusers :

useradd -g sftpusers -d /var/www/xy/backup/files yourusername 
passwd yourusername

Em seguida, basta reiniciar o serviço ssh: /etc/init.d/sshd restart e você deve estar pronto.

    
por 13.07.2011 / 12:59
2

Você pode usar a configuração do sshd para conseguir isso. Crie um usuário, por exemplo fred , em seguida, adicione o seguinte ao seu arquivo sshd_config

Match user fred
    ChrootDirectory /var/www/xy/backup/files
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

Isso bloqueará o usuário fred no diretório desejado e nos subdiretórios. O usuário fred precisa apenas de r-- access para o arquivo e r-x para os diretórios. Verifique as permissões atuais que já podem fazer isso.

    
por 13.07.2011 / 12:59
0

Talvez você possa definir um novo grupo, apenas para esse usuário do sftp, alterar a propriedade do grupo do diretório para esse grupo e definir o bit do setgid no diretório?

Isso pode ou não funcionar, dependendo de como o aplicativo cria os diretórios.

    
por 13.07.2011 / 12:56