Como fazer com que as permissões de superusuário durem mais que usando o sudo?

24

Existe uma maneira de fazer com que o comando sudo me dê permissões por um período mais longo do que o tempo padrão?

Pode ser difícil manter a senha sudo ao solicitar a instalação de muitos pacotes, portanto seria bom se houvesse um comando ou configuração que pudesse ser feito para afetá-lo.

    
por DevRobot 06.09.2015 / 20:04

7 respostas

26

O comportamento de sudo está configurado no arquivo /etc/sudoers . Há timestamp_timeout opção responsável por recodificar o usuário para senha após um período de tempo específico.

De man sudoers

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

Para alterar essa configuração, faça o seguinte:

  1. Na execução do terminal sudo visudo . visudo é usado especificamente para editar o arquivo /etc/sudoers e, por padrão, usa o editor de texto nano .
  2. Encontre as linhas que começam com Defaults . Adicione a seguinte linha

    Defaults        timestamp_timeout=x
    

    em que x é a quantidade de minutos que você deseja entre os recados

  3. Salve o arquivo com Ctrl + O

por Sergiy Kolodyazhnyy 06.09.2015 / 20:23
11

De man sudoers :

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

Como você pode ver, o tempo limite padrão de sudo é de 15 minutos. Você pode alterar esse valor em /etc/sudoers .

Você não edita diretamente /etc/sudoers , em vez disso, use visudo para fazer isso.

De man visudo :

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

Portanto, digite sudo visudo em um terminal, que abrirá o arquivo /etc/sudoers em nano text-editor.

Procure esta linha:

Defaults    env_reset

E adicione timestamp_timeout=X , em que X é a hora que você deseja definir em minutos.

Então, como exemplo:

Defaults    env_reset,timestamp_timeout=5

Se você especificar 0, sempre será solicitada a senha. Se você especificar um valor negativo, o tempo limite nunca expirará.

Uma vez feito, salve e saia.

Veja RootSudoTimeout

    
por Ron 06.09.2015 / 20:23
8

Tente isso.

  1. Execute o seguinte comando em um terminal:

    sudo visudo
    
  2. Desloque-se para a linha que se parece com isto:

    Defaults        env_reset
    
  3. Altere para, por exemplo:

    Defaults        env_reset,timestamp_timeout=30
    

Altere 30 para o tempo, em minutos, que você deseja que ele espere antes que o tempo limite seja atingido. Você também pode alterá-lo para 0 se quiser um prompt de senha toda vez que executar o sudo ou -1 se nunca quiser um prompt de senha Pressione Ctrl + X para finalizar a edição, Y para salvar as alterações e Enter para sair.

Aqui está a fonte: link

    
por Michał Żywiecki 06.09.2015 / 20:26
5

Eu não posso acreditar que o comando mais simples:

sudo -s

não é mencionado aqui. A opção "-s" fornece um console com permissões de root, que duram até você sair. Não há necessidade de navegar com as configurações padrão.

    
por Oliver Friedrich 07.09.2015 / 08:33
4

Você pode editar o arquivo /etc/sudoers (com sudo visudo : tenha cuidado) e adicionar uma linha como

Defaults:myname timestamp_timeout=15 

onde myname é o seu ID de usuário. O valor de tempo limite é em minutos. Você pode usar um valor de -1 para nunca expirar, e então digite sudo -k para matar a autenticação, então você precisa uma senha novamente.

Ou você pode adicionar uma entrada para dizer que um comando específico não precisa de senha alguma.

    
por meuh 06.09.2015 / 20:23
1

Todas as outras respostas até agora parecem estar centradas na alteração do tempo limite padrão por quanto tempo até que você tenha que digitar sua senha novamente com sudo . No entanto, se você quiser apenas executar comandos como root sem preceder todos os comandos com sudo , poderá obter um shell de root com:

sudo -i

ou

sudo bash

ou

sudo <your preferred shell here>

Embora todos eles apenas iniciem um único processo como root, o único processo em questão é um shell que permitirá que você inicie quantos outros processos desejar, como root, sem precisar digitar sudo ou uma senha. :)

Claro, com grande poder vem uma grande responsabilidade, não faça coisas estúpidas, etc.

    
por reirab 07.09.2015 / 07:52
1

Depois de ver muitas perguntas de usuários que modificaram arquivos de configuração e ficaram confusos sobre o motivo de suas alterações terem sido substituídas após um upgrade de pacote, observarei que, se você quiser modificar timestamp_timeout , é melhor fazer isso criando um arquivo em /etc/sudoers.d em vez de modificar /etc/sudoers diretamente.

Então você deve fazer

sudo visudo -f /etc/sudoers.d/timeout

(o nome do arquivo pode ser o que você quiser, desde que não contenha um ponto ( . ) nem termine com um til ( ~ )). Em vez de abrir /etc/sudoers em seu editor de escolha, ele abrirá /etc/sudoers.d/timeout , normalmente como um arquivo vazio, uma vez que não existe. Coloque seu

Defaults timestamp_timeout=X

e salve como de costume. Então, se uma nova versão de /etc/sudoers for lançada, você não precisará escolher entre instalar a versão mais nova ou manter suas alterações - você terá automaticamente ambas.

    
por fkraiem 18.12.2017 / 08:40