Por que eu posso matar um processo sudo no Xubuntu mas não no Linux Mint? (como usuário normal)

2

Eu tenho dois computadores, um executando o Xubuntu 12.04 e o outro rodando o Linux Mint 14.

No Xubuntu:

$ sudo gedit

em outro terminal:

$ kill [pid of the gedit process]
bash: kill: ([pid]) - Operation not permitted

$ kill [pid of the sudo process]

Este último realmente mata sudo (e gedit com ele), mesmo que o sudo seja executado como root (setuid) e um usuário normal não seja capaz de matar os processos do root. Mas meu palpite é que, porque nós mesmos começamos, de alguma forma temos direitos especiais sobre isso.

Na hortelã:

$ sudo gedit

em outro terminal:

$ kill [pid of the gedit process]
bash: kill: ([pid]) - Operation not permitted

$ kill [pid of the sudo process]
bash: kill: ([pid]) - Operation not permitted

Então, por que podemos matar o sudo como usuário normal no Xubuntu, mas não no Mint? O que causa isso? Como posso mudar esse comportamento?

Estou não procurando maneiras de eliminar processos, obviamente sudo kill funcionaria.

    
por stk 12.03.2013 / 13:47

3 respostas

2

Eu arriscaria dizer que essa é uma diferença entre userid REAL e userid EFFECTIVE para um determinado processo e como exatamente o sudo opera em cada uma de suas duas máquinas.

MINT aparece, ao sudoar um processo, para alterar o ID do usuário efetivo (root) e o ID do usuário real (o usuário que invocou o processo) para root. Assim, o usuário original não pode matar o processo sudo ou o processo sudoed (gedit). O Xubuntu (e, no meu caso, o Fedora) não faz isso. O userid real ainda é o usuário original.

Use o comando ps para ver o processo pertencente aos usuários (real ou efetivo). Eu corri o seu comando sudo gedit. ps uaxf produziu esta árvore:

myuserid  22868  0.0  0.0 163400  4872 pts/2   Ss   13:19  0:00   |  \_ -zsh
root      30392  0.0  0.0 205044  3736 pts/2   S+   13:45  0:00   |  | \_ sudo gedit
root      30417  0.0  0.1 699788 23692 pts/2   Sl+  13:45  0:00   |  |   \_ gedit

É evidente que o id de usuário efetivo para sudo e gedit é raiz, e não eu mesmo. Então usei ps com a opção --User (--User userlist Selecione por ID de usuário real (RUID) ou nome.) Para ver quem é o verdadeiro userid para os processos:

ps --User "myuserid" 

Isso produziu muitos resultados, mas havia uma linha que se destacava:

30392 pts/2    00:00:00 sudo

Mas o processo 30417 estava visivelmente ausente ...

Então eu corri:

ps --User "root"

Isso também produziu muitos resultados, mas essa linha se destacou:

30417 pts/2    00:00:00 gedit

Mas o processo 30392 estava ausente.

Então, parece que mesmo que o processo sudo (30392) tenha um dono efetivo de root, o dono real sou eu, e eu posso matá-lo. O processo de gedit, por outro lado, tem propriedade efetiva e real por raiz e não é (diretamente) eliminável por mim. Eu acho que no Lint, ambos os processos são efetivamente e realmente possuídos pelo root.

Eu pensei que isso poderia ser afetado pela opção stay_setuid em / etc / sudoers , mas a descrição disso não faz isso parecer provável.

Há alguma diferença em seus arquivos / etc / sudoers entre o Mint e o Xubuntu?

    
por 13.03.2013 / 19:11
1

Isso provavelmente é mais bem servido em um comentário, mas não posso postar comentários ainda. Tente um

ps aux | grep sudo

e olhe para o usuário (proprietário) desse processo sudo. Pode ser possível que o processo sudo esteja sendo executado como seu usuário em vez de root.

Eu apenas tentei no meu sistema Red Hat e não consegui matar o processo sudo do meu usuário normal local, pois ele era de propriedade do root.

    
por 12.03.2013 / 14:38
0

Em ambos os casos, a execução do comando como root eliminará o processo. A razão pela qual ele não funciona no Mint é provavelmente porque não existe um gerenciador de "elevação automática" no ambiente de desktop como existe no? Buntu.

Veja: Ubuntu: elevação automática de administração?

A questão não é exatamente relevante, mas a resposta aceita toca na causa da diferença percebida.

    
por 13.03.2013 / 09:20