O que quer que você use, o comando kill ou o shell embutido, ele usará a chamada de sistema kill ou relacionada. Para ler sobre isso, consulte man 2 kill
.
Kill não é apenas usado para matar um processo, mas é usado para enviar um sinal. O envio de sinais é uma função fundamental dos sistemas operacionais Unix, portanto você não deseja desabilitá-lo.
A maneira correta:
A maneira correta de fazer o que você está tentando fazer é provavelmente gerenciar seus privilégios corretamente. Os sinais só são permitidos nas seguintes condições:
For a process to have permission
to send a signal it must either
be privileged (under Linux: have the
CAP_KILL capability), or the real or
effective user ID of the sending
process must equal the real or saved
set-user-ID of the target process.
Se você realmente quiser:
Então, se você realmente quiser que os usuários não enviem sinais para o processo que eles iniciam, eu acho que você teria que setuidar o programa root, e mudar o usuário real e efetivo id logo depois que ele começa para um usuário menos privilegiado, pois somente o root pode alterar o id do usuário real. Um exemplo de programa que faz isso é o comando login
. Você tem que ser extremamente cuidadoso ao programar esses programas, ou você criará uma grande falha de segurança.