chroot um usuário para mais de um diretório em locais diferentes

0

Gostaria de saber como posso restringir um usuário para poder acessar e ter permissões RWX somente para diretórios como /etc/httpd , /etc/php e /var/www/html , além de seu próprio diretório inicial.

Além disso, gostaria de poder restringir esse usuário a ser capaz de apenas iniciar / parar / reiniciar o serviço apache.

Tudo o que eu consegui pensar é o chroot, mas acabei de fazer isso com um diretório. Alguma idéia?

    
por VaTo 23.01.2018 / 19:36

2 respostas

1

Um usuário preso não poderá acessar essas pastas no estado em que se encontra. Se você tiver o acl ativado no sistema de arquivos, poderá criar um usuário regular e controlar o acesso aos diretórios usando uma lista de controle de acesso.

Para dar ao usuário 'Bob' acesso aos diretórios, criar um grupo, colocar Bob nesse grupo e, em seguida, dar ao grupo acesso recursivo a todos os arquivos existentes e recém-criados em / etc / http /:

# groupadd WebAccessGroup
# usermod -a -G WebAccessGroup Bob
# setfacl -Rm d:g:WebAccessGroup:rwx,g:WebAccessGroup:rwx /etc/httpd/

Você também pode conceder acesso apenas ao usuário "Bob" ao / etc / httpd sem criar um grupo:

# setfacl -Rm d:u:Bob:rwx,u:Bob:rwx /etc/httpd/

Para permitir que o grupo WebAccessGroup inicie e pare o Apache, você pode dar ao grupo sudo acesso para executar o script específico que você chama para iniciar / interromper o Apache como root:

Use o comando 'visudo' para adicionar o seguinte ao seu arquivo / etc / sudoers:

# visudo
%WebAccessGroup   ALL=(root)    NOEXEC: /usr/bin/httpd

E então Bob iniciaria o Apache usando o sudo:

$ sudo /usr/sbin/httpd -k start

** Nota: Se você executar o Apache em uma porta não padrão como um usuário não root ("anotheruser" neste exemplo), é mais seguro e melhor mudar All = (root) para All = (anotheruser) e para execute o comando start como:

sudo -u anotheruser /usr/sbin/httpd -k start
    
por 23.01.2018 / 22:28
0

No Linux, você pode usar montagens de bind para tornar outros diretórios visíveis em um chroot:

# mkdir -p /users/chroot/var/www/html
# mount --bind /var/www/html /users/chroot/var/www/html 
etc.

Para permitir que um usuário reinicie um único serviço, você pode usar sudo e permitir que o usuário execute comandos como service apache2 restart e semelhantes.

Ter o usuário em um chroot e permitir que o usuário reinicie um serviço que vive fora do chroot pode ser difícil, no entanto. Isso exigiria que tudo o que é requerido pelo gerenciador de serviços (systemd?) Seja visível no chroot. Nesse ponto, é provavelmente mais fácil executar o servidor inteiro dentro do mesmo chroot (ou container, ou máquina virtual).

    
por 23.01.2018 / 22:02