A exigência de aprovação dupla para determinadas ações é parte de algumas políticas de segurança; por exemplo:
- No setor bancário, transações muito grandes normalmente exigem validação por dois gerentes.
- O lançamento de armas pesadas como armas nucleares requer validações de dois ou mais oficiais de alta patente ou tomadores de decisão.
- Aprovar ou rejeitar um edição sugerida em O estouro de pilha exige que dois usuários tenham reputação suficiente para concordar.
Você notará que não se trata de autenticação (por exemplo, digitar uma senha para mostrar que você é quem você fingir ser), mas sobre a autorização , ou seja, decidir se uma determinada ação é permitida.
Para leitura em segundo plano, eu recomendo Engenharia de Segurança por Ross Anderson . Compre a edição mais recente, se puder, mas, caso contrário, a primeira edição estará disponível on-line. O capítulo mais relevante é o “Controle de Acesso”; há exemplos nos capítulos sobre o comando bancário e nuclear.
O Unix oferece um modelo de segurança simples, com apenas dois níveis: usuário e superusuário. Isso é tanto uma força (simples significa menos espaço para erros no projeto e na implementação do sistema em si e das políticas de segurança) quanto uma fraqueza (políticas de segurança complexas não podem ser expressas nativamente). Se você está preocupado com um invasor que está ganhando root, não dê a ele permissões de root. Existem muito poucas verificações sobre o que a raiz faz; a única restrição seria que a ação de obter raiz pudesse ser registrada remotamente, assim como certas ações externas (tráfego de rede). Um usuário desonesto pode fingir que quer ganhar raiz para fazer uma certa coisa e fazer outra enquanto esconde suas ações do outro usuário. Assim, você não obteria muita segurança exigindo que o acesso root seja examinado por outro usuário. Por outro lado, você perderia a segurança reduzindo a disponibilidade do acesso root (percebo que você quer dar aos usuários menos confiáveis acesso à raiz servir de back-ups se algo der errado; aprovação dupla aumentaria muito a carga).
A aprovação dupla é útil para ações específicas: Alice diz "por favor autorize-me fazer X", Bob diz "eu autorizo Alice a fazer X" e o sistema executa X (X pode ser por exemplo transferir US $ 1.000.000.000 de uma conta bancária para outro, ou nuking Moscou, ou rejeitar uma edição). Se Alice disser "por favor autorize-me a fazer o que eu quiser" e Bob concorda, tudo o que Bob está fazendo é ecoar o que você (o formulador de políticas) já disse, a saber, que Alice pode ser autorizada a fazer qualquer coisa. Você também pode fazer de Alice um sudoer.
Não conheço nenhum sistema existente no unix para que vários usuários aprovem comandos específicos em uma estrutura semelhante ao sudo.