Por que o sudo pede uma senha na janela depois que eu acabei de me autenticar em outra?

10

Se estiver usando a linha de comando no xterm, gnome-terminal, etc., posso não sudosolicitar novamente uma senha, dentro de alguns limites, ou posso desativá-la.

Como um compromisso entre usabilidade e segurança, geralmente eu só quero que esse tempo de espera para consulta seja prolongado.

Por padrão, existe apenas um período de carência de 15 minutos após a inserção de uma senha sudo antes que ela seja solicitada novamente. Para alterar para 45 minutos, eu posso editar /etc/sudoerse definir timestamp_timeout para o período de espera que eu quero (em minutos).

arquivo sudoers

Se eu estiver na mesma sessão do terminal e iniciar um novo shell (digitando cshou bash), o período de espera será respeitado.

Mas se eu for para outra janela para acessar a linha de comando, ela solicitará imediatamente minha senha se eu tentar sudo.

Na mesma sessão pseudoterminal ( pts) (por exemplo, se eu aparecer um novo shell dentro da mesma janela do terminal gnome), o tempo limite será respeitado.

Se eu iniciar um novo xterm, gnome-terminal etc., devo inserir credenciais novamente.

Apesar de ser o único usuário ativo no meu sistema doméstico (um sistema de usuário único) etc., o sudo não confia que todas as minhas ptsentradas sejam do mesmo usuário:

~/pseudoland$ w
 01:27:39 up 1 day, 15:03,  7 users,  load average: 0.32, 0.71, 0.77
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
jgb    tty1                      23:56    1:30m  0.55s  0.51s -bash
jgb    tty7     :0               Tue10   39:03m  2:28m  0.76s gnome-session
root     pts/1    :0.0             00:30   56:23   0.01s  0.01s /bin/bash
jgb    pts/3    :0.0             01:16    0.00s  0.59s  3.22s gnome-terminal
jgb    pts/4    :0.0             01:27   26.00s  0.23s  0.23s /bin/bash
jgb    pts/5    :0.0             01:17    9:26   0.23s  0.23s bash

Existe uma maneira de dizer ao sudo que ele deve considerar todas as janelas que abro como provenientes do mesmo usuário e não pedir novamente minha senha se o último temporizador do sudo não tiver expirado?

belacqua
fonte

Respostas:

12

O período de carência é controlado pelo que sudochama de 'ticket'. Quando você se autentica com o sudo, ele cria esse ticket com um determinado carimbo de data / hora que basicamente indica quando a autenticação deve expirar.

Por padrão (isso é definido quando o pacote é compilado), esse tempo limite é, como você descobriu, por tty . Este é um recurso do sudo chamado 'tty_tickets'. Basicamente, isso significa que, em vez de criar um bloqueio por usuário, o sudo cria um bloqueio por tty.

Para voltar ao comportamento antigo e substituir o padrão, você precisa editar /etc/sudoers. Localize a Defaultslinha " ", que você já editou para alterar o tempo limite e anexe- ,!tty_ticketsa. Isso desativará o recurso tty_tickets e fornecerá o comportamento desejado.

Iain Lane
fonte