Gostaria de saber como posso restringir um usuário para acessar e ter permissões RWX apenas para diretórios como /etc/httpd
, /etc/php
e /var/www/html
também para seu próprio diretório inicial.
Também gostaria de poder restringir esse usuário para poder apenas iniciar/parar/reiniciar o serviço apache.
Tudo o que consegui pensar é chroot, mas acabei de fazer isso com um diretório. Alguma ideia?
Um usuário preso não poderá acessar essas pastas como estão. Se você tiver 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, crie um grupo, coloque Bob nesse grupo e então recursivamente dê ao grupo acesso a todos os arquivos existentes e recém-criados em /etc/http/:
Você também pode dar apenas ao usuário "Bob" acesso wrx a /etc/httpd sem criar um grupo:
Para permitir que o grupo WebAccessGroup inicie e pare o Apache, você pode dar ao grupo acesso sudo para executar o script específico que você chama para iniciar/parar o Apache como root:
Use o comando 'visudo' para adicionar o seguinte ao seu arquivo /etc/sudoers:
E então Bob iniciaria o Apache usando sudo:
** 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 alterar All=(root) para All=(anotheruser) e executar o start comando como:
No Linux, você pode usar montagens de ligação para tornar outros diretórios visíveis em um chroot:
Para permitir que um usuário reinicie um único serviço, você pode usar
sudo
e permitir que o usuário execute comandos comoservice apache2 restart
e similares.Ter o usuário em um chroot e permitir que o usuário reinicie um serviço que esteja fora do chroot pode ser difícil, no entanto. Isso exigiria que tudo exigido pelo gerenciador de serviço (systemd?) fosse visível no chroot. Nesse ponto, provavelmente é mais fácil executar todo o servidor dentro do mesmo chroot (ou contêiner ou máquina virtual).