Usuários do SFTP do Chroot que requerem acesso a vários diretórios sob a mesma pasta pai

3

Eu tenho um servidor RHEL 6 com um diretório / Documents, e ele tem diretórios filhos 1 2 3 4 5 .... logo abaixo do diretório / Documents. É possível criar uma cadeia de chroot SFTP que apenas dê acesso ao usuário para 1,2,7,9, mas não para as outras pastas?

Estou usando o NFSv3 com o RHEL 6 e, portanto, estou limitado nas opções de ACL.

    
por Gregg Leventhal 10.01.2014 / 20:25

2 respostas

1

A solução simples é colocar todos esses usuários na mesma cadeia chroot e organizar os diretórios para que todos tenham nomes e permissões não-confidenciais que garantam que os usuários só possam acessar diretórios que, de outra forma, seriam colocados em sua cadeia. . É o suficiente para impor a permissão de diretórios de nível superior, os usuários não podem acessar nada abaixo de um diretório para o qual não tenham permissão x .

Se isso não for bom o suficiente, ou se você não puder configurar os grupos ou ACLs apropriados, poderá configurar montagens de associação para tornar visíveis todos os diretórios permitidos de um usuário em um diretório comum.

mkdir /Jails/bob /Jails/bob/{1,2,7,9}
mount --bind /Documents/1 /Jails/bob/1
mount --bind /Documents/2 /Jails/bob/2
…
    
por 11.01.2014 / 03:18
0

Não, não acho que você possa fazer isso. Você pode finagle-lo, mas é um pesadelo de manutenção. No arquivo /etc/ssh/sshd_config , você pode adicionar seções que correspondam às coisas, digamos, um grupo de usuários ou um nome de usuário.

sshd_config

AllowGroups sftponly sftpadmin root

Match   Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes

Mas isso só permite controlar o ponto de entrada de um usuário, seu ChrootDirectory . Então você teria que soltá-los em seus chroot apropriados.

Você também pode jogar alguns jogos adicionais com a montagem automática desses diretórios.

Exemplo

*       /               -fstype=cifs,ro,noperm,netbiosname=${HOST},file_mode=0444,dir_mode=0555,credentials=/etc/sftpuser_credentials.txt       ://server/sftpdata/& \
        /upload         -fstype=cifs,rw,noperm,netbiosname=${HOST},file_mode=0666,dir_mode=0777,credentials=/etc/sftpuser_credentials.txt       ://server/sftpdata/&/upload

Assim, você poderia adicionar montagens que permitiriam acesso de leitura para aqueles aos quais eles têm acesso e acesso sem leitura àqueles a que não têm acesso.

OBSERVAÇÃO: O texto acima concederá ao usuário acesso de leitura em tudo, mas somente o acesso de gravação em seu subdiretório /upload em seu diretório chrooted.

Eu provavelmente pensaria em uma maneira alternativa de conseguir o que você quer, isso pode ficar feio rápido, e será uma dor para manter.

    
por 10.01.2014 / 21:14