AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1064138
Accepted
vidarlo
vidarlo
Asked: 2018-08-11 03:56:26 +0800 CST2018-08-11 03:56:26 +0800 CST 2018-08-11 03:56:26 +0800 CST

Faça o sudo não pedir senha por n minutos após o login

  • 772

Eu regularmente faço login no boxen via SSH e executo a atualização e assim por diante como root, usando sudo.

Agradeço que sudopeça senha após certo tempo, caso me afaste de terminais ou afins. Mas como já inseri a senha de login ou a frase-chave SSH, prefiro sudo não solicitar uma senha nos primeiros n minutos após o login, mas me comporto como se o sudo tivesse sido executado com sucesso imediatamente após o login.

É possível configurar para que nenhuma senha seja necessária para a primeira chamada após o login?

Para fazer um exemplo do comportamento desejado

ssh [email protected]
[~]$ sudo somecommand
[~]$ #no password asked.
[~]$ sudo somecommand #n minutes later
[sudo] password for foo: 
ssh password sudo
  • 1 1 respostas
  • 588 Views

1 respostas

  • Voted
  1. Best Answer
    zwets
    2018-08-11T05:55:00+08:002018-08-11T05:55:00+08:00

    Aqui está uma ideia de como isso poderia ser feito. NOTA: este é um hack; use apenas se as palavras sudo sem senha fizerem suas sobrancelhas quererem rastejar até o crânio.

    A premissa é: não podemos passar credenciais de login para sudo. Portanto, a questão é como ter um NOPASSWDsudo apenas nos primeiros minutos de um login. Podemos fazer isso iniciando o shell de login no NOPASSWDmodo e gerando um processo em segundo plano no .bashrcqual, após alguns minutos, desfaz o arquivo NOPASSWD.

    # somewhere near the bottom of ~/.bashrc
    sudo -n /bin/bash -c "$HOME/nopasswd-sudo 60s 12h <&- >&- &"
    

    É claro que o próprio script deve ser iniciado com NOPASSWD sudo, ou ainda seríamos solicitados a fornecer uma senha. E o script deve restabelecer a NOPASSWDregra quando a sessão bash terminar, para que NOPASSWDseja definida para o próximo login.

    Aqui está o script $HOME/nopasswd-sudoque fará isso:

    #!/bin/bash
    
    SUDO_FILE="/etc/sudoers.d/$(basename "$0")-${SUDO_USER}"
    SUDO_RULE="${SUDO_USER} ALL=(ALL:ALL) NOPASSWD: ALL"
    
    [ -z "$SUDO_USER" ] &&
         echo "$(basename "$0"): must be invoked with sudo" >&2 &&
         exit 1
    
    # Trap exit to recreate SUDO_FILE for next login
    trap "echo '$SUDO_RULE' > '$SUDO_FILE'; exit 0" EXIT
    
    # First time around just exit, creating the SUDO_FILE
    [ -f "$SUDO_FILE" ] || exit 0
    
    # After $1 (default 5m) remove SUDO_FILE to end NOPASSWD sudo
    sleep ${1:-5m} && rm -f "$SUDO_FILE"
    
    # Wait until our parent exits, and we will exit via the trap
    # If after $2 (default 12h) still alive, we assume we missed the HUP
    sleep ${2:-12h}
    

    Em sua primeira execução (que deve ser feita a partir da linha de comando, não de .bashrc), o script cria o arquivo /etc/sudoers.d/nopasswd-sudo-$USERcontendo um NOPASSWDcuringa para o logado $USER:

    {username} ALL=(ALL:ALL) NOPASSWD: ALL
    

    Em seguida, a cada login, ele inicia e aguarda em segundo plano até que o tempo sem senha acabe, após o qual remove o arquivo e o próximo sudoexigirá uma senha.

    Depois disso, ele espera indefinidamente (na verdade, até 12h, para evitar órfãos que perderam o sinal HUP de seus pais) ou até que seu pai, o shell de login, termine. Pouco antes de sair, sua interceptação EXIT recria o NOPASSWDarquivo.


    Dica para os aventureiros: lembre-se de sempre manter um shell root separado aberto enquanto você mexer com scripts ou sudoregras de login. Você não seria o primeiro a se trancar.

    • 5

relate perguntas

  • Como interagir graficamente com um servidor sem cabeça?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve