Tenga en cuenta que lo que sigue puede comprometer la seguridad de su sistema de varias maneras.
Cree un script que se encargue de matar ese proceso suyo (llamémoslo proceso P). Luego, otorgue a todos los usuarios permiso para ejecutar este script en sudoers. Finalmente agregue la llamada adecuada para este script con sudo en /etc/bashrc
.
Por ejemplo, supongamos que sabe que su proceso se inicia desde /usr/local/sbin/myproc
y que quieres eliminar todos esos procesos inmediatamente cuando alguien inicia sesión, así que usarás la estrategia grep and kill simple para matarlos.
Entonces, primero ponga lo siguiente en /usr/local/sbin/killmyprocs
:
#!/bin/sh
ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1
# end of file.
Probablemente quiera algo más sofisticado si realmente procede e implementa esto. Así que asegúrese de crear un script que atrape las señales apropiadas y, en general, haga las cosas de manera segura.
Segundo, dé a todos los usuarios permiso para ejecutar este script en /etc/sudoers
agregando en ella:
ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs
El tercer y último paso es agregar una llamada sudo a su script en /etc/bashrc
:
[ "`id -n -u`" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs
Reemplace con su propia cuenta para evitar matar sus procesos "secretos" al iniciar sesión usted mismo.
Para resumir: 1) cree un script que no produzca resultados pero que elimine los procesos que desea matar, 2) agregue la entrada apropiada a /etc/sudoers
para que cada usuario en su sistema pueda ejecutar ese script como root, 3) agregue una llamada a su script a través de sudo a /etc/bashrc
(o /etc/profile
).
Una advertencia: /etc/bashrc
(o /etc/profile
para el caso) se obtienen solo para shells interactivos. Esto significa que es bastante fácil para un usuario hacer ssh yourhost 'ps auxw' y encontrar su proceso en la tabla de procesos, no se eliminará con el mecanismo introducido anteriormente porque no se consultan los archivos de inicialización de shell. Hay una manera de evitar eso, usando ForceCommand
en ´sshd_config` pero eso queda como un ejercicio para el lector.
Para concluir, quisiera recordar nuevamente que esto tiene implicaciones obvias para la seguridad. Esto también suena muy parecido a tratar de hacer una puerta trasera a un sistema al que no tienes acceso completo, pero no es mi preocupación aquí (si tienes que preguntar estas cosas al superusuario, te sorprenderemos lo suficiente). .