Mata processess de usuário no logout

7

Eu tenho um servidor Ubuntu que lida com sessões X remotas dos usuários. No entanto, não quero permitir que os usuários executem qualquer tipo de processo em segundo plano. Então, aqui está minha pergunta:

Como evito que os usuários tenham qualquer processo em segundo plano ou há alguma maneira simples de eliminar processos de usuários que não estão conectados?

    
por Wiesław Herr 29.04.2013 / 16:47

2 respostas

1

Eu faço algo semelhante nos meus servidores. A essência geral é isso

1) Adicione a /etc/pam.d/login na parte inferior dos itens session :

session optional pam_exec.so quiet /etc/pam_session.sh

2) Em seguida, crie /etc/pam_session.sh as (e chmod +x ):

#!/bin/bash
[[ "$PAM_USER" == "root" ]] && exit 0

SESSION_COUNT="$(w -h "$PAM_USER" | wc -l)"

if (( SESSION_COUNT == 0 )) && [[ "$PAM_TYPE" == "close_session" ]]; then
  pkill -u "$PAM_USER"
fi

Se você quiser, adicione algo como sleep 5; pkill -9 -u "$PAM_USER" após o pkill para garantir que esteja realmente morto.

Isso só será chamado quando os shells de login saírem, portanto, não afetará a atividade automatizada do sistema. No entanto, se você quiser ser ainda mais seguro, adicione uma verificação de algo como o UID sendo maior que 1000.

    
por 03.08.2013 / 19:59
0

Você pode usar este comando para descobrir quais usuários estão conectados ao sistema e eliminá-los:

$ who | awk '{ printf ("%s",$1 "\n"); }' | \
        grep -v root | xargs -I {} -t pkill -u $1{}

No entanto, ele precisaria ser bloqueado para executar, talvez:

$ ps -eaf | egrep -q [g]nome-session || who | \
            awk '{ printf ("%s",$1 "\n"); }' | \
            grep -v root | xargs -I {} -t pkill -u $1{}

É uma ideia, mas acho que precisa de mais refinamento.

    
por 29.04.2013 / 18:11