Mate os processos do usuário no logout

Mate os processos do usuário no logout

Eu tenho um servidor Ubuntu que lida com sessões X remotas de 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 algum processo em segundo plano ou existe alguma maneira simples de eliminar processos de usuários que não estão logados?

Responder1

Eu faço algo semelhante em meus servidores. A essência geral disso é esta

1) Adicione /etc/pam.d/loginna parte inferior dos sessionitens:

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

2) Em seguida, crie /etc/pam_session.shcomo (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 quiser, você pode adicionar algo como sleep 5; pkill -9 -u "$PAM_USER"depois de pkillpara garantir que está realmente morto.

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

Responder2

Você poderia usar este comando para descobrir quais usuários estão logados no sistema e eliminá-los:

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

Seria necessário definir quando 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.

informação relacionada