Existem duas respostas óbvias:
- Dê a cada usuário sua própria imagem de máquina virtual. Dentro da máquina virtual, o usuário tem acesso root; fora da máquina virtual, nenhuma. Se o seu hardware suportar,
kvm
funcionará muito bem para isso. E as imagens das máquinas virtuais são apenas arquivos, por isso são fáceis de copiar, etc. Você pode usar o armazenamento copy-on-write, o que economizará espaço em disco, se isso for uma preocupação. - Use o suporte a namespaces newfangled no Linux 3.8, que na verdade permite que todos na máquina tenham raiz em sua própria área. Depende especialmente do que você precisa de root. (Porém, você pode realmente rodar uma distro separada dentro de um espaço de nomes, ele apenas tem que compartilhar o mesmo kernel).
Ao contrário das partições separadas (que são muito fáceis para o root mexer - basta montá-las), as duas acima são realmente seguras (bem, você tem acesso físico à máquina, então essas vulnerabilidades se aplicam independentemente).
Também há coisas mais dolorosas, como recursos e SELinux, dependendo do motivo pelo qual você precisa de acesso root (sudo). Ou, claro, se você precisar apenas de um comando ou dois, o sudo tem suporte embutido para limitar quais comandos podem ser executados.
edit: Para mais informações sobre namespaces, consulte espaços de nomes em operação, parte 1: visão geral dos namespaces , que tem seis partes no total. Os namespaces estão entrando no Linux lentamente, começando há vários anos. As partes 5 e 6 cobrem a parte final, adicionada em 3.8, que permite que qualquer usuário aleatório tenha raiz em seu próprio namespace.