Como faço para “desbloquear” o sudo por 15 minutos após o login?

5

Não faz sentido para mim que depois de me autorizar fazendo login, eu tenha que me autorizar separadamente a sudo, potencialmente digitando a senha duas vezes. Isso tudo veio à tona recentemente quando eu fiz login do meu telefone Android, onde demora 10 ou 15 segundos para digitar a senha na tela sensível ao toque, em vez de 2 segundos no teclado!

Então eu gostaria de configurar o sudo de tal forma que depois de me autorizar (seja através de um login no console, login de senha ssh ou login de chave ssh) o sudo é desbloqueado por 15 minutos, como se eu tivesse digitado uma senha para o sudo comando.

Portanto, isso manteria os benefícios de segurança de bloquear automaticamente o sudo se eu deixasse um console aberto, mas dando alguma conveniência.

Eu suponho que as desvantagens são que eu desbloqueio o sudo em cada login independentemente de eu querer usar sudo, e permitir sudo para logins de chaves ssh pode permitir que alguém que tenha comprometido uma chave privada use sudo apesar de não saber a senha, o que Suponho que delegar a segurança da máquina para a segurança da chave privada. Assim, a perda de uma chave privada seria transferida de uma vulnerabilidade de acesso remoto para uma vulnerabilidade de acesso remoto à raiz ...

Mas ainda assim, seria bastante conveniente!

    
por frankster 12.08.2012 / 08:28

2 respostas

4

Pode ser feito com pam_exec executando um comando que cria os registros de data e hora necessários em /var/lib/sudo .

Anexe o seguinte a /etc/pam.d/sshd e / ou /etc/pam.d/login (mas não common-session ou qualquer coisa assim):

session optional pam_exec.so /usr/lib/sudo-auth

O script pode ser:

#!/bin/sh

# Depends on your distro. May be /var/db/sudo, /var/spool/sudo, etc.
root="/var/lib/sudo"

if [ "$PAM_USER" ]; then
    dir="$root/$PAM_USER/"
    if [ "$PAM_TYPE" = open_session ]; then
        mkdir -p "$dir" && touch "$dir"
    fi
else
    echo "Must be run from PAM." >&2
fi

Requer que a opção tty_tickets seja desativada em sudoers , devido ao modo como o SSH (e o opensshd em particular) funcionam com o ttys.

Isso pode ser modificado para autenticar somente hosts remotos especificados, colocando pam_access acima de pam_exec na pilha do PAM ou apenas comparando $PAM_RHOST no script. (Essas verificações não funcionariam com clientes móveis, no entanto.)

    
por 12.08.2012 / 14:27
1

ref: ubuntuforums.org

timestamp_timeout

Number of minutes that can elapse before sudo will ask for a passwd
again. The default is 5. Set this to 0 to always prompt for a
password. If set to a value less than 0 the user's timestamp will
never expire. This can be used to allow users to create or delete
their own timestamps via sudo -v and sudo -k respectively.

Edite o arquivo:

sudo visudo

Para a linha de padrões, adicione:

timestamp_timeout=15

Por isso, parece simular isso:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset,timestamp_timeout=15 
    
por 12.08.2012 / 17:01