Como adicionar um usuário ssh que tenha apenas permissões para acessar uma pasta específica?

16

Como adicionar um usuário ssh que tenha apenas permissões para acessar uma pasta específica?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Eu criei um usuário chamado musteri . Eu defino sua pasta pessoal e grupo. Então, quero integrar musteri usuários em "/var/www/xyz.com.tr/musteri". Eu não quero que ele acesse outra pasta.

    
por Cell-o 21.06.2011 / 11:00

2 respostas

18

Parece que você quer que o seu mestre tenha acesso à transferência de arquivos para uma pasta sem realmente dar-lhes shells. Isso é bom porque, como binfalse apontou , dar às pessoas shells com acesso limitado é complicado porque os shells precisam acessar todos os tipos de coisas espalhadas no sistema apenas para rodar.

Para permitir o acesso do SFTP a uma pasta específica, você pode fazer algo assim.

  1. Adicione um novo grupo ao sistema, digamos 'sftponly'.
  2. Adicione usuários ao seu sistema que devem ter direitos restritos a esse grupo. Você também pode fornecer shells restritos como / bin / true, mas isso não é necessário.
  3. Altere seu arquivo de configuração ssh (geralmente /etc/ssh/sshd_config ) com estas linhas
    Subsystem sftp internal-sftp

    Match Group sftponly
        ChrootDirectory %h
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

Isso ativaria o subsistema sftp dentro do SSH e forçaria os membros desse grupo de sistema a usar apenas esse sistema ao efetuar login. Ele também iria fazer chroot em seus diretórios iniciais. Você poderia mudar isso para ser uma sub-pasta de seus home directores, assim como algo como ChrootDirectory %h/musteri_sftp , para que eles não pudessem ver o resto de seus arquivos de sistema, mas entrassem diretamente em uma subpasta especial de sua pasta pessoal. / p>

Kolay gelsin.

    
por 21.06.2011 / 16:59
2

Na minha opinião, isso é muito difícil, se não impossível. Quando o usuário se conecta via SSH ele pelo menos precisa de um shell, no seu caso o bash . Para executar /bin/bash ele precisa de permissões para acessar /bin . bash precisa ler algumas informações de /etc (por exemplo, /etc/bash.bashrc ), portanto, o usuário também precisa acessar /etc . Supondo que o usuário não queira apenas ficar nesse diretório, ele pode querer ler um arquivo, mas para executar, por exemplo, vim ele também precisa acessar /usr/bin .
Esta é apenas uma pequena demonstração, existem algumas outras dependências, por exemplo Eu realmente não sei o que acontecerá se o usuário não tiver acesso a /tmp ..

Você deve pensar sobre sua intenção. Você quer que alguém tenha acesso de leitura / gravação a uma parte do seu serviço da web? Em seguida, você pode configurar algo como o FTP para exportar um diretório específico para esse usuário. Então ele é capaz de ler / gravar esses arquivos sem acesso SSH.
Outra boa solução seria um repositório. Por exemplo, configure um repositório GIT e deixe o usuário cloná-lo. Ele pode fazer as alterações localmente e enviar um patch. Você pode decidir se aplica ou não esse patch, mas também é muito fácil fazer um rollback para patches de bugs.

    
por 21.06.2011 / 11:58