Queremos que alguns usuários sejam capazes de fazer, por exemplo, sudo
tornar-se root,
Bem, esse é o problema que o sudo foi projetado para resolver, para que essa parte seja fácil o suficiente.
mas com a restrição de que o usuário não pode alterar a senha root.
Você pode, como apontou o SHW em um comentário, configurar o sudo para permitir apenas que determinadas ações sejam executadas como raiz por determinados usuários. Ou seja, você pode permitir que o usuário1 faça sudo services apache2 restart
, permita que o usuário2 faça, sudo reboot
mas nada mais, enquanto permite que o contratado como administrador user3
do sistema faça sudo -i
. Existem instruções 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 foi concedida a capacidade de sudo -i
ou sudo
em um shell ( sudo bash
por exemplo) pode fazer nada. Isso ocorre porque, no momento em que o sudo lança o shell, o próprio sudo está fora de cena. Ele fornece o contexto de segurança de um usuário diferente (na maioria das vezes root), mas não tem voz sobre o que o aplicativo executado faz. Se esse aplicativo for iniciado, passwd root
não há nada que o sudo possa fazer a respeito. Observe que isso também pode ser feito por outros aplicativos; por exemplo, muitos dos editores mais avançados fornecem facilidades para executar um comando através do shell, um shell que será executado com o uid efetivo desse processo do editor (ou seja, root).
Ou seja, uma garantia de que ainda podemos fazer login no servidor e nos tornarmos root, independentemente do que os outros usuários farão.
Desculpa; se você realmente quer dizer "garantir que poderemos efetuar login e usar o sistema, independentemente do que alguém com acesso root faça", isso (para todos os efeitos) não pode ser feito. Um rápido "sudo rm / etc / passwd" ou "sudo chmod -x / bin / bash" (ou qualquer que seja a raiz do shell que use) e você estará praticamente hospedado de qualquer maneira. "Praticamente", que significa "você precisará restaurar do backup e torcer para que eles não tenham feito nada pior do que um deslize de dedos". Você pode tomar algumas medidas para reduzir o risco de um acidente acidental que leve a um sistema inutilizável, mas não pode impedir que a malícia cause problemas muito sérios, incluindo o ponto de precisar reconstruir o sistema do zero ou, pelo menos, do conhecido bons backups.
Ao fornecer acesso root irrestrito em um sistema a um usuário, você confia que esse usuário (incluindo qualquer software que ele possa executar, mesmo algo tão mundano quanto ls) não tem intenção maliciosa e não estraga por acidente. Essa é a natureza do acesso root.
O acesso root limitado, por exemplo, por sudo, é um pouco melhor, mas você ainda precisa ter cuidado para não abrir nenhum vetor de ataque. E com acesso root, há muitos vetores de ataque possíveis para ataques de escalonamento de privilégios.
Se você não puder confiar neles com o nível de acesso que o root implica, precisará de uma configuração sudo muito mais rígida ou simplesmente não conceda ao usuário em questão acesso root de nenhuma maneira, sudo ou de outra forma.
sudo
para conceder permissão apenas para aplicativos com privilégios de root específicos. Dessa forma, o usuário não poderá alterar a senha root