Primeiro, grep todo o processo do usuário 'test' e kill -9 all pid's e depois delete o usuário.
pgrep -u test
ps -fp $(pgrep -u test)
killall -KILL -u test
userdel -r test
Estou tendo um problema no servidor (CentOS 6, Plesk 11.5) onde um usuário em particular está usando um mailer de massa e está na lista negra de nosso endereço IP. Eu tentei excluir este usuário usando:
/usr/sbin/userdel test
mas retorna uma mensagem dizendo que o usuário está logado no momento. Eu pensei ok, mate o processo. Então eu tentei:
pkill -u test
e também bloqueou a conta usando:
passwd -l test
que, esperamos, o impedirá de entrar no sistema no futuro.
Ainda dizendo que o usuário está logado. Como posso logar este usuário para permitir que eu o exclua do sistema?
passwd -l <user>
não interrompe todos os meios possíveis de login. Por exemplo, se eles fizerem login usando ssh
com chaves públicas, eles ainda poderão efetuar login, já que não precisarão de senha.
Para impedir que o usuário faça login novamente, edite o arquivo /etc/passwd
e remova o usuário ou altere a sétima coluna para /sbin/nologin
.
Executar:
ps -u <user>
para ver qual processo o usuário ainda está usando e matar todos eles. Você pode ter que usar:
kill -s 9 <pid>
para forçar o processo a parar.
passwd -l <user>
não desativa a conta. Como Gareth disse que o usuário ainda pode fazer login usando outro token de autenticação, como a chave SSH.
para desativar esta conta você deve usar
usermod --expiredate 1
definiu a data de expiração da conta para 1970.
Agora você deve matar todos os processos que o usuário iniciou.
executando:
$pgrep -u Foo
imprimirá todos os processos em que o usuário Foo é iniciado.
executando:
$kill -9 <pid>
enviará SIGKILL
sinal que elimina esse processo. Agora
Executar:
$pgrep -u Foo | xargs kill -9
isto irá obter todos os ids do processo do usuário Foo e matá-los todos.
OR:
$kill -9 -u Foo
Você já tentou matar todos os processos do usuário com o SIGKILL?
pkill -KILL -u username