Posso definir um tempo limite bash somente para consoles virtuais (ctrl + alt + {f1-f6})

7

Eu sei que posso definir um TMOUT para finalizar automaticamente uma sessão bash após um período especificado de inatividade. No entanto, o que eu quero é aplicar somente aos meus 6 consoles virtuais internos, que são acessados por ctrl + alt + {< kbd> F1 ... F6 }.

Eu quase sempre uso um aplicativo Terminal quando quero abrir um terminal. Quando saio do meu computador, bloqueio a tela, o que impede que alguém acesse esses terminais. Então, eu gostaria de não ter um tempo limite sobre isso.

No entanto, em raras ocasiões, usarei um dos meus consoles virtuais para trabalhar no meu computador. Normalmente, é devido a minha sessão principal do Gnome estar congelada ou inutilizável. Eu mato o aplicativo ofensivo e volto para a minha sessão principal.

Além disso, algumas vezes esqueci de sair do meu console virtual quando restaurei minha sessão do Gnome. Assim, meu computador fica completamente desprotegido se eu me afastar, já que bloquear a tela no Gnome só bloqueia a GUI; um usuário pode mudar para um console virtual e matar minha tela de bloqueio do gnome ou mexer com meu computador.

Posso definir um valor de tempo limite somente para os consoles virtuais integrados, enquanto permite que uma sessão de aplicativo do Terminal permaneça inativa indefinidamente?

    
por Stephen Schrauger 06.11.2013 / 18:26

3 respostas

8

Você pode verificar se está executando em um terminal gráfico e definir TMOUT apenas se não estiver. Uma maneira fácil de fazer isso é o comando tty :

   tty - print the file name of the terminal connected to standard input

Quando executado a partir de um emulador de terminal da GUI:

$ tty
/dev/pts/5

Quando executado a partir de um console virtual:

$ tty
/dev/tty2

Portanto, adicionar essas linhas ao seu ~/.profile deve matar sua sessão de bash após dez minutos:

tty | grep tty >/dev/null && TMOUT=600
    
por 06.11.2013 / 18:47
1

Este é um bom exemplo para o módulo pam_env.so PAM. Os logons do console virtual usam o programa login , portanto, você pode abrir /etc/pam.d/login e adicionar uma linha como a seguinte:

session  required  pam_env.so  readenv=1 envfile=/etc/vc-environment user_readenv=0

Com o novo arquivo acompanhante, /etc/vc-environment :

TMOUT=600

Duas vantagens em usar o PAM para isso:

  • Aplica-se a qualquer usuário que se conecte ao console virtual (embora isso não os impeça de alterar TMOUT depois).
  • O tempo limite também pode ser aplicado a outros serviços específicos, como sudo .

Leia aqui para detalhes sobre este módulo.

    
por 24.05.2016 / 18:19
0

Eu nunca gostei da solução TMOUT. Primeiro, porque só funciona se você deixar sua sessão no prompt; se você deixá-lo dentro do Vim ou até mesmo em um prompt de senha sudo, ele não irá expirar. E segundo, eu não quero que a sessão seja fechada, eu quero que ela seja bloqueada, assim como os ambientes gráficos fazem.

O GNU Screen é capaz de travar após um período ocioso, então fiz o seguinte. No início do meu ~/.bashrc , adicionei isso:

if [ "$TERM" = "linux" ] && tty | egrep -q '^/dev/tty[[:digit:]]+$'
then
    exec screen -c ~/.ttyscreenrc
fi

O exec é importante, porque garante que screen substitua o Bash e, quando terminar, a sessão do TTY será encerrada.

E em ~/.ttyscreenrc eu coloquei isto:

startup_message off
idle 180 lockscreen

Para pular a tela de boas-vindas da Tela e bloquear após 3 minutos de inatividade.

    
por 03.05.2018 / 16:23