Por que um usuário iniciou o processo em execução quando não efetuou login?

2

Após um tutorial sobre como configurar o gnupg para gerenciar chaves ssh, consegui executar várias instâncias do gpg-agent:

[root@frylock ~]# ps aux | grep agent
root      2764  0.0  0.0   4208   432 ?        Ss   11:15   0:00 ssh-agent
xtian     2785  0.0  0.1   3500   972 ?        Ss   11:18   0:00 gpg-agent -s --enable-ssh-support --daemon --write-env-file /home/frylock/xtian/.gnupg/gpg-agent.env
root      2958  0.0  0.0   3168   688 ?        Ss   11:39   0:00 gpg-agent -s --enable-ssh-support --daemon --write-env-file /root/.gnupg/gpg-agent.env
root      3036  0.0  0.0   4740   392 ?        Ss   11:43   0:00 gpg-agent --daemon
root      3186  0.0  0.0   4740   388 ?        Ss   11:53   0:00 gpg-agent --daemon
root      3299  0.0  0.0   4740   388 ?        Ss   11:58   0:00 gpg-agent --daemon
root      3549  0.0  0.0   4740   392 ?        Ss   12:54   0:00 gpg-agent --daemon

Eu posso resolver a maior parte dessa bagunça voltando às instruções - pela quinta vez. Mas o que eu não entendo, porque é que o dono da minha conta de usuário de um processo em execução quando eu só estou logado em um tty como root?

    
por xtian 06.09.2013 / 23:27

1 resposta

0

Em geral, o logout elimina os aplicativos que estão conectados aos meios de interação com o usuário. Quando você está logado em um terminal de texto (local ou remotamente), todos os aplicativos que estão conectados a esse terminal são eliminados quando você efetua logout (diretamente pelo kernel ou indiretamente pelo shell). Quando você está conectado a um ambiente gráfico, todos os aplicativos que estão conectados ao servidor X são eliminados quando você efetua logout (ou, mais precisamente, a conexão com o servidor X é interrompida, o que faz com que a maioria dos aplicativos saia).

Efetuar logout não elimina todos os processos iniciados por um usuário. O usuário pode querer deixar os programas em execução em segundo plano ou pode estar conectado em várias sessões.

Aplicativos como ssh-agent e gpg-agent não são interativos, portanto, não estão conectados a nenhum terminal ou servidor X. Uma configuração normal permite que sejam mortos por outros meios. Geralmente, o agente é o processo pai de toda a sessão: os scripts de inicialização da sessão organizam para executar algo como ssh-agent $SHELL ou ssh-agent $SESSION_MANAGER . Dessa forma, quando o processo filho que é o líder da sessão sai, o agente também sai (porque é assim que o agente é projetado). Se o agente for iniciado de forma diferente, cabe ao gerenciador de sessões organizar para eliminá-lo.

Quando você estava experimentando enquanto seguia esse tutorial, evidentemente você iniciou muitos processos de agente de maneiras que o autor do tutorial não esperava, e eles não morreram com sua sessão. Você pode matar os que não está usando. Depois de chegar a uma configuração estável, verifique se o agente foi morto quando você sair. (A menos que você prefira executar um único agente e tê-lo funcionando permanentemente, o que pode ser uma escolha razoável em uma máquina pessoal.)

    
por 08.09.2013 / 04:08

Tags