Restringir o acesso de um usuário RedHat a um diretório

3

Estou usando o RedHat Gnu / Linux Eu tenho um grupo de 10 usuários e gostaria de restringir o acesso a todos eles. Aqui estão as regras que eu gostaria de respeitar para elas:

  1. Para cada usuário user_i , existe uma pasta chamada user_i . O user_i deve ter permissões de escrita e leitura em seu diretório e em todos os arquivos / diretórios contidos nele.
  2. Quando o user_i se conecta à máquina, ele deve se encontrar no diretório user_i por padrão.
  3. Ele (usuário user_i ) não pode ver os outros diretórios ou arquivos e não tem acesso a eles. O diretório user_i é seu diretório "raiz".

Eu criei o grupo, criei todos os usuários e os atribui a esse grupo e criei todas as pastas. Mas eu não sei como continuar além disso.

Eu olhei online e neste site. A maioria dos resultados encontrados fala sobre a modificação de /etc/ssh/sshd_config para usuários conectados ao SSH, enquanto o meu também precisa se conectar via FTP e SFTP. E outros guias falam sobre dar acesso a todos os usuários de um determinado grupo a uma pasta compartilhada, o que não é o meu caso, porque eu preciso de uma pasta separada para cada usuário.

Editar:

Obrigado a todos pela sua interação e pelas informações úteis e peço desculpas pela confusão. Aqui vou esclarecer a especificação:

  1. As pastas user_i são novas pastas criadas no diretório / transfers especificamente para cada usuário e nomeadas após seu nome de usuário. Então, a hierarquia parece semelhante a isso:

    /  
    --transfers/ 
    ----user_i/ 
    ------received_data/
    ------archive_data/
    

    Todo user_i gravará e lerá os dados nas subpastas received_data e archive_data . Ele não pode acessar nenhum outro diretório, incluindo os diretórios típicos do Linux e especificamente os diretórios de outros usuários (os outros 9 user_i ).

    Ao se conectar ao servidor, ele deve chegar à pasta user_i por padrão e, portanto, ver apenas as duas subpastas received_data e archive_data .

  2. Todos os user_i pertencem a um grupo criado especificamente para eles.

por Sevigne 04.05.2017 / 18:28

1 resposta

3

Provavelmente você está procurando a opção ChrootDirectory para sshd_config .

For each user user_i, there is a folder named user_i. The user_i should have writing and reading permissions on his directory and all the files/directories in it.

Isso não é possível com chroot . Os usuários não podem ter acesso de gravação ao diretório em que estão chroot -ed, porque seria uma vulnerabilidade de segurança (CVE-2009-2904). Todo usuário precisa de seu próprio diretório dentro do chroot em que ele pode escrever. A hierarquia do sistema de arquivos pode ser assim:

directory -- owner:group permissions
/chroots/ -- root:root 700
  user_i/ -- root:root 700
    data/ -- user_i:chroot_users 700

O sshd_config pode ser assim:

Match Group chroot_users
  ChrootDirectory /chroots/%u/

Isso separará os usuários. Mas observe que esses usuários não têm nenhum programa para executar em seus diretórios separados! Você pode conceder a eles somente acesso via SFTP:

Subsystem       sftp    internal-sftp

ou copie os programas necessários em cada chroot, por exemplo, para simples bash :

cp --parents /bin/bash /chroots/user_i/
cp --parents 'ldd /bin/bash | cut -d'>' -f2 | awk '{print $1}'' /chroots/user_i/
    
por 05.05.2017 / 08:05