Assegure-se de que nenhuma sessão do console esteja conectada (Linux)

6

Em um sistema Linux com bash como um shell padrão, desejo configurar o logout automático com os seguintes critérios:

  • Sessões de console (VGA, serial, KVM remoto, etc.) são desconectadas após um período de tempo especificado
  • Sessões de console são desconectadas mesmo ao executar processos "não inativos", como top
  • As sessões SSH não são não desconectadas dessa maneira

A intenção é garantir que nenhuma sessão de console, seja via VGA ou KVM remoto ou serial, seja registrada por acidente. Quero garantir isso em nosso site.

A variável de ambiente TMOUT não atende às minhas necessidades devido ao segundo marcador.

Eu poderia encontrar uma solução rápida que mata login de processos de uma certa idade, mas isso parece frágil e propenso a efeitos colaterais. Eu poderia procurar shells cujo /proc/$PID/fd/0 link para um /dev/tty* .

Isso parece ser um problema que deve já ter sido resolvido. Quaisquer indicações de como isso é feito são muito apreciadas.

    
por billyw 23.02.2016 / 00:07

1 resposta

1

Você pode executar esse script no crontab para eliminar as sessões, exceto ssh a cada dois minutos:

pkill -t $(ps  aho tty,command | egrep -v ssh | cut -d" " -f1 |sort |uniq | paste -sd",")


ps aho tty,command listaria os processos e seus TTYs.
egrep -v ssh removeria as sessões ssh da lista.
cut -d" " -f1 selecionaria apenas parte TTY de ps.
sort & uniq removeria duplicatas.
paste -sd"," tornaria a lista em formato de vírgula compatível com o comando pkill .

pkill -t TTY would kill the proccess owned by TTY

    
por 23.03.2016 / 20:02

Tags