Como posso forçar o sudo a pedir sempre uma senha depois de acordar da suspensão?

14

Digamos que eu execute um comando com sudo , então se eu usar sudo dentro do próximo 15/5 minutos (não sei quanto tempo me lembro) não me pede uma senha. Ele só me avisará novamente se eu não o usei por pelo menos esse tempo.

No entanto, se eu suspender minha máquina, ativá-la e fazer o login antes que o período termine, posso executar o comando sudo novamente e ele não me solicitará a senha, porque não deixei seja pelo determinado período de tempo.

Então, como posso fazer com que, não importa por quanto tempo eu não usei sudo , ele definitivamente me solicitará uma senha após a suspensão assim que eu fizer login novamente, mesmo que eu ainda esteja dentro desse período de tempo em que os 15/5 minutos de não usar sudo ainda não passaram?

A coisa mais provável que funcionará é fazê-lo executar um comando para remover todos os caches de identidade para sudo sobre a execução de um determinado comando que é executado na ativação.

Estou executando o Ubuntu GNOME 15.10 com o GNOME 3.18.

    
por Great Uncle Bulgaria 03.01.2016 / 18:35

3 respostas

18

De man sudo :

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

Então, o que você quer é que seu usuário execute sudo -K cada vez que o sistema for suspenso.

Ubuntu 15.04+ (systemd)

Isso pode ser feito no Ubuntu 15.04+, colocando um script em /lib/systemd/system-sleep/ .

  1. Execute sudo nano /lib/systemd/system-sleep/disable_sudo_user (substitua user pelo nome de usuário do usuário por conveniência);
  2. Cole o seguinte script (substitua user pelo nome de usuário do usuário):
#!/bin/sh
case / in
    pre/suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. Pressione CTRL + O , ENTER e CTRL + X

  2. Executar sudo chmod o+x /lib/systemd/system-sleep/disable_sudo_user ;

Para ativar isso também para hibernação / hybrid-sleep, use este script:

#!/bin/sh
case  in
    pre)
        su user -c 'sudo -K'
        ;;
esac

Versões anteriores do Ubuntu (Upstart)

Isso pode ser feito em versões anteriores do Ubuntu, colocando um script em /etc/pm/sleep.d/ .

  1. Execute sudo nano /etc/pm/sleep.d/disable_sudo_user (substitua user pelo nome de usuário do usuário por conveniência);
  2. Cole o seguinte script (substitua user pelo nome de usuário do usuário):
#!/bin/sh
case  in
    suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. Pressione CTRL + O , ENTER e CTRL + X

  2. Executar sudo chmod o+x /etc/pm/sleep.d/disable_sudo_user ;

Para habilitar isso também para hibernação, use este script:

#!/bin/sh
case  in
    suspend|hybernate)
        su user -c 'sudo -K'
        ;;
esac
    
por kos 03.01.2016 / 19:33
3

Apenas se você é tão paranóico! Você pode usar a opção -K de sudo .

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause sudo to ignore the user's cached credentials.  
       As a result, sudo will prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

por exemplo,

sudo -K <command>

Ou você pode simplesmente deixar seu computador em uma caixa de metal protegida por robôs:)

    
por edward torvalds 03.01.2016 / 19:02
1

Ainda outro método

Digite "sudo visudo"

Vá para a linha que diz: 'Padrões env_reset'

e mude para:

'Padrões env_reset, timestamp_timeout = 0

Em seguida, salve o arquivo.

Ao definir o tempo limite como 0, o sistema solicitará a senha toda vez.

    
por Edgar Naser 09.01.2016 / 03:36