Evitar que os usuários matem processos que eles possuem

4

Eu iniciei alguns processos (baseados em janelas) do arquivo .bashrc do usuário. Eu quero impedir que os usuários matem esses processos. Existe uma maneira de transferir o processo para o superusuário para que um usuário normal não possa eliminá-lo? Ou existe uma maneira de iniciar algum processo que é de propriedade do superusuário?

    
por Juzer Ali 04.09.2012 / 20:09

3 respostas

3

Iniciar um comando como um usuário diferente geralmente é feito com su, sudo ou definindo o bit setuid nas permissões do executável.

Você não quer que os executáveis sejam executados como root, a menos que eles precisem, já que esse usuário tem todos os privilégios. Se esses processos não precisam de nenhum privilégio, você pode fazê-los rodar como "nobody", que é o usuário a quem tentamos conceder o menor número possível de pré-requisitos.

Um usuário sempre tem o direito de matar seus próprios processos (desde que tenha acesso à chamada do sistema kill), ou dito de outra forma, um processo de um determinado uid efetivo sempre tem o direito de enviar um sinal para um processo correndo como o mesmo uid eficaz.

    
por 04.09.2012 / 21:18
1

Você pode criar uma armadilha em seus processos para evitar uma morte normal (SIGINT). Isso obviamente não funcionaria para um SIGKILL (-9). Tal armadilha seria semelhante (bash):

trap "echo trapped" INT

Para redefinir a armadilha que você poderia usar

trap - INT
    
por 04.09.2012 / 21:01
1

Depende do que exatamente você está fazendo, mas suas opções são:

  • Torne o usuário capaz de executar o programa como um usuário diferente. Você pode fazer isso via sudo, ou através do setuid no executável. Esteja ciente de que, com qualquer um desses itens, outras coisas além do .bashrc do usuário poderão iniciar o programa. (Nota: sudo e setuid podem ser usuários diferentes de root e devem ser, se possível)
  • Solicite que o sistema de login chame o processo (como root) antes realmente terminar o login do usuário. A vantagem aqui é que você não concede nenhuma permissão ao usuário e o usuário não poderá contorná-lo (por exemplo, editando ou removendo .bashrc ou alternando shells ou ...). Uma maneira parece ser pam_exec para conectar-se ao PAM. Seu executável deve eliminar privilégios de root, se possível.
por 04.09.2012 / 21:18