Se alguém puder executar comandos arbitrários como root, poderá alternar para qualquer conta de usuário, para que eles possam fazer o que o usuário puder fazer.
Na prática, você tem três opções.
- Os usuários privilegiados precisam executar apenas tarefas muito específicas. Então deixe-os apenas executar alguns comandos específicos com o sudo. Isso é seguro apenas se esses comandos não permitirem "escapes de shell", ou seja, se não houver nenhuma maneira de aproveitar esses comandos para executar outros programas. Por exemplo, o gerenciamento de pacotes (permitindo
sudo apt-get install …
) frequentemente permite escapes de shell injetando os comandos dentro de um pacote (isso pode ser ok se as assinaturas de pacotes forem verificadas corretamente a partir de fontes conhecidas). - Os usuários privilegiados precisam de poderes administrativos, mas não precisam disso no computador "real", tudo o que precisam é de um computador algum (por exemplo, para jogar com configurações de rede). Em seguida, crie ambientes virtuais (por exemplo, uma máquina virtual ou um contêiner lxc ou um namespace ad hoc do Linux) para os usuários privilegiados e não disponibilize os dados de outros usuários nos ambientes virtuais.
- Use controles sociais em vez de técnicos: conceda aos usuários permissões amplas, mas que eles saibam que qualquer violação de privacidade será tratada com severidade. Isso geralmente é bom quando os usuários são funcionários, mas depende de quão sensíveis são os dados.