SSH com chroot e somente trabalhando “sftp”, “rsync” (ambos)?

3

Eu tenho dois usuários e uma pasta compartilhada no meu servidor Ubuntu:

  1. Usuário writer , que tem acesso de gravação a /var/shared . É um aplicativo que faz alterações de arquivos nesta pasta, de maneira remota, com a chave SSH.

  2. O usuário reader é usado por vários clientes com a chave SSH, uma chave que eles podem obter sem minha permissão. Por isso, preciso restringir comandos disponíveis neste shell.

Pergunta:

Eu preciso restringir os comandos acessíveis para reader user, portanto, ele pode usar somente os protocolos sftp e rsync (sem comandos padrão como mkdir , ls top , ..); Somente o diretório /var/shared deve ser legível e deve ser um caminho raiz, por exemplo, não há necessidade de cd , já é / em sftp ou rsync.

Como escrever um script de shell para poder aplicá-lo com usermod -s para o usuário reader que dará tal comportamento? Não consigo encontrar nenhuma amostra. Como fazer com que writer permaneça "preso" a /var/share , então os caminhos são iguais?

Notas

  1. Já tentei as diretivas sshd_config Match, ForceCommand internal-sftp e ChrootDirectory . Isso requer que ChrootDirectory seja de propriedade de raiz e não gravável (755 ou menos), mas também não suporta rsync

  2. Eu tentei o rssh , mas ele simplesmente não funciona para diretórios fora do diretório home para usuários logados. Então eu não pude chroot usuários para o mesmo diretório com permissões diferentes ...

  3. Eu tentei usar o arquivo command=".." ssh-rsa.... em authorized_keys , mas não entendi como posso ativar o comportamento que preciso, só verifico o script rrsync dos documentos do rsync. Este método não possui o recurso chroot que eu preciso.

Posso ter uma amostra pelo menos para essas conchas? Isso é possível com scripts?

Bash e C ++ (se necessário) são bem-vindos. Saída de ldd /bin/bash :

    linux-vdso.so.1 =>  (0x00007fff7e9d1000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f79dfd8b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f79dfb87000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f79df7bd000)
    /lib64/ld-linux-x86-64.so.2 (0x000055bd0767c000)
    
por George 22.06.2016 / 00:55

0 respostas