¿Hay una manera de crear un proceso que pueda ser eliminado por cualquiera en Linux?


0

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, inicie sesión en el servidor, ese proceso debe ser cancelado por ese usuario. ¿Es posible crear un proceso como este? (Tengo sudo cuenta y puede modificar /etc/bash.bashrc )

¡Gracias!


3
Puedes describir lo que tu De Verdad Necesito lograr? Esto parece algo artificial. ¿Cuál es el verdadero objetivo aquí?
slhck

Respuestas:


1

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). .


1

¿Qué quiere decir con "el proceso debe ser eliminado por ese usuario"?

A) ¿Desea que el usuario mate su proceso que él / ella no posee?

Haga 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) ¿Desea que el proceso note que un usuario inicia sesión y se suicida?

Bueno, eso es lo que harías.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.