Fornece acesso de leitura / gravação do sftp para pastas e subpastas, restringe todo o resto

5

Eu preciso fornecer acesso de usuário ao Ubuntu 14.04 Server, limitado apenas a determinada pasta. Para aproveitar a segurança do ssh e não abrir novos serviços e portas (ou seja, ftp), eu gostaria de ficar com o sftp. No entanto, apenas criar um usuário e ativar o acesso ssh é muito generoso - o usuário pode fazer logon via ssh e ver o que estiver visível para todos.

Eu preciso que o usuário se encontre em um diretório específico após o login e, de acordo com seus privilégios, leia / grave arquivos, bem como crie pastas onde for permitido. Não há acesso a nenhum arquivo ou diretório acima da pasta "raiz" do usuário.

Qual seria o método sugerido para conseguir isso? Existe algum tipo de shell muito restrito para isso? Eu tentei com

$ usermod -s /bin/false <username>

Mas isso não permite que o usuário grave em subpastas de sua pasta base.

    
por Passiday 12.09.2014 / 18:24

1 resposta

4

Se você quiser restringir um usuário ao SFTP, poderá fazê-lo facilmente no arquivo de configuração do daemon SSH /etc/ssh/sshd_config . Coloque um bloco Match no final do arquivo:

Match User bob
ForceCommand internal-sftp
ChrootDirectory /path/to/root
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no

Se o diretório de jail for o diretório inicial do usuário, conforme declarado em /etc/passwd , você poderá usar ChrootDirectory %h em vez de especificar um caminho explícito. Essa sintaxe permite especificar um grupo de contas de usuário como somente SFTP - todos os usuários cujo grupo, conforme declarado no banco de dados do usuário, é sftponly serão restritos ao SFTP:

Match Group sftponly
ForceCommand internal-sftp
ChrootDirectory %h
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no
    
por 14.09.2014 / 03:26