¿Hay alguna manera de crear un proceso que cualquiera pueda eliminar en Linux?

¿Hay alguna manera de crear un proceso que cualquiera pueda eliminar en Linux?

Por ejemplo, me gustaría comenzar a ejecutar un proceso en segundo plano SECRETAMENTE en un servidor Ubuntu, pero cada vez que alguien, excepto yo, inicia sesión en el servidor, ese usuario debe finalizar el proceso. ¿Es posible crear un proceso como este? (Tengo la sudocuenta y puedo modificarla /etc/bash.bashrc)

¡Gracias!

Respuesta1

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 permiso a todos los usuarios para ejecutar este script en sudoers. Finalmente agregue una llamada adecuada para este script con sudo en /etc/bashrc.

Por ejemplo, supongamos que sabe que su proceso se inició /usr/local/sbin/myprocy que desea eliminar todos esos procesos inmediatamente cuando alguien inicia sesión, por lo que utilizará una estrategia simple grep y kill para eliminarlos.

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 quieras hacer algo un poco más sofisticado si realmente continúas e implementas esto. Así que asegúrese de crear un script que capture las señales apropiadas y, en general, haga las cosas de forma segura.

En segundo lugar, otorgue permiso a todos los usuarios para ejecutar este script /etc/sudoersagregando:

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

Reemplácela con su propia cuenta para evitar eliminar sus procesos "secretos" al iniciar sesión usted mismo.

Para resumir: 1) cree un script que no produzca resultados pero elimine los procesos que desea eliminar, 2) agregue la entrada adecuada /etc/sudoerspara que cada usuario de 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/profilepara el caso) obtenga fuentes 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 los archivos de inicialización del shell no se consultan. Hay una manera de evitarlo, usando ForceCommand´sshd_config` pero eso se deja como ejercicio para el lector.

Para concluir, me gustaría recordar nuevamente que esto tiene implicaciones obvias para la seguridad. Esto también suena muy parecido a intentar abrir una puerta trasera a un sistema al que no tienes acceso completo, pero eso no es realmente mi preocupación aquí (si tienes que preguntar estas cosas en Superusuario, de todos modos te atraparán pronto). .

Respuesta2

¿Qué quiere decir "ese usuario debe finalizar el proceso"?

A) ¿Quiere que el usuario elimine su proceso que no le pertenece?

Cree un script para finalizar el proceso, luego configure setuid con chmod u+s(esto puede ser un gran agujero de seguridad a menos que sepa lo que está haciendo).

O

B) ¿Quieres que el proceso note que un usuario inicia sesión y se suicida?

Bueno, eso es lo que harías.

información relacionada