We want that some users should be able to do e.g.
sudo
and become root,
Bem, esse é o problema que o sudo é projetado para resolver, então essa parte é bastante fácil.
but with the restriction that the user can't change root password.
Você pode, como SHW apontou em um comentário, configurar o sudo para permitir que apenas algumas ações sejam tomadas como root por determinados usuários. Ou seja, você pode permitir que o usuário1 execute sudo services apache2 restart
, permita que o usuário2 execute sudo reboot
, mas nada mais, enquanto permite que o user3
contratado como administrador do sistema faça sudo -i
. Há howtos disponíveis sobre como configurar o sudo assim, ou você pode pesquisar (ou perguntar) aqui. Esse é um problema solucionável.
No entanto, um usuário que tenha recebido a capacidade de sudo -i
ou sudo
em um shell ( sudo bash
, por exemplo) pode fazer qualquer coisa. Isso porque no momento em que o sudo lança o shell, o próprio sudo está fora de questão. Ele fornece o contexto de segurança de um usuário diferente (na maioria das vezes root), mas não tem voz no que o aplicativo executado faz. Se esse aplicativo, por sua vez, lançar passwd root
, não há nada que o sudo possa fazer sobre isso. Note que isso pode ser feito através de outros aplicativos também; por exemplo, muitos dos editores mais avançados fornecem recursos para executar um comando através do shell, um shell que será executado com o uid eficaz desse processo de edição (isto é, root).
That is, a guarantee that we still can login to that server and become root no matter of what the other users will do.
Desculpe; se você realmente quer dizer "garantir que poderemos fazer o login e usar o sistema, não importa o que alguém com acesso root faça a ele", isso (para todos os efeitos) não pode ser feito. Um rápido "sudo rm / etc / passwd" ou "sudo chmod -x / bin / bash" (ou o que a raiz do shell usa) e você é praticamente escolhido de qualquer maneira. "Pretty hosed" significa "você precisará restaurar a partir de backup e espero que eles não fizeram nada pior do que um deslize de dedos". Você pode tomar algumas medidas para reduzir o risco de um acidente
Ao fornecer acesso irrestrito ao sistema para um usuário, você confia nesse usuário (incluindo qualquer software que ele possa escolher para executar, até mesmo algo tão mundano quanto ls) para não ter intenção maliciosa e não atrapalhar por acidente. Essa é a natureza do acesso root.
Acesso raiz limitado por meio de O sudo é um pouco melhor, mas você ainda precisa tomar cuidado para não abrir nenhum vetor de ataque. E com o acesso root, há muitos possíveis vetores de ataque para ataques de escalonamento de privilégios.
Se você não pode confiar neles com o nível de acesso que o root implica, você precisará de uma configuração de sudo apertada very , ou simplesmente não conceder ao usuário em questão acesso root em todos os meios, sudo ou de outra forma.