¿Es posible 'ocultar' un proceso de la lista de 'ps' o 'top' en Linux

9

Primero, supongo que si esto es posible, debería hacerse como root (o como un usuario que comparte el UID de root de 0).

¿Cómo puede un proceso en marcha para que no se presenta en una ps auxo ps efo topanuncio si el comando se ejecuta por no root?

¿Es esto posible?

Las distribuciones que normalmente ejecuto son RHEL / CentOS y Ubuntu, por lo que si hay una respuesta específica de la distribución, también está bien.

madriguera
fuente
Warren: ¿Alguna vez has encontrado una solución para esto?
Chris
@Chris - no ... la respuesta de @fianchetto parece ser la única ruta, y eso es mucho más trabajo del que me siento cómodo emprendiendo: - |
Warren
Voy a emprender este proyecto e informaré con cualquier cosa que determine.
Chris

Respuestas:

5

Bueno, tienes un par de opciones aquí. Tomar la salida fácil sería intercambiar los ps y los mejores programas con versiones modificadas que ocultan lo que quieres ocultar.

La alternativa sería ejecutar su código incrustado en un proceso existente, o escribir un script de envoltura alrededor de su código con un nombre inocuo.

En algunas versiones de PS, puede modificarlo cambiando argv [], pero no está seguro si eso funciona para top, y no está seguro si funciona en Linux (es principalmente una convención BSD).

Todo depende, ¿exactamente de lo que buscas lograr al hacer esto?

fianchetto
fuente
mi objetivo aquí es que los procesos generados por root no sean visibles para todos los usuarios (quizás demonios relacionados con la seguridad o similares)
warren
@flanchetto Entonces, ¿estás diciendo que si tengo un programa que ya se está ejecutando y luego ejecuta un comando de línea de comandos con una contraseña en el mismo proceso que la contraseña se proporcionará de forma segura? por ejemplo, ejecutar python myScript.pyy todos los subprocess.Popencomandos (que pueden o no contener contraseñas) no se muestran, siempre y cuando sea el mismo proceso?
Shule
De todos modos, eso no funciona (solo lo probé y vi la contraseña). Entonces, supongo que quieres decir algo más. Siéntase libre de aclarar. :)
Shule
12

Según el parche del kernel http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201 , puede usar la opción hidepid para el sistema de archivos proc:

hidepid = 0 (predeterminado) significa el comportamiento anterior: cualquiera puede leer todos los archivos / proc / PID / * legibles por el mundo.

hidepid = 1 significa que los usuarios no pueden acceder a ningún directorio / proc //, sino a los suyos. Los archivos confidenciales como cmdline, sched *, status ahora están protegidos contra otros usuarios. Como la verificación de permisos realizada en proc_pid_permission () y los permisos de los archivos se dejan intactos, los programas que esperan modos específicos de archivos no se confunden.

hidepid = 2 significa hidepid = 1 más todos / proc / PID / serán invisibles para otros usuarios. No significa que oculte si existe un proceso (se puede aprender por otros medios, por ejemplo, mediante kill -0 $ PID), pero oculta el proceso 'euid y egid. Complica la tarea del intruso de recopilar información sobre los procesos en ejecución, si algunos demonios se ejecutan con privilegios elevados, si otro usuario ejecuta algún programa sensible, si otros usuarios ejecutan algún programa, etc.

gid = XXX define un grupo que podrá recopilar la información de todos los procesos (como en el modo hidepid = 0). Este grupo debe usarse en lugar de poner al usuario no root en el archivo sudoers o algo así. Sin embargo, los usuarios no confiables (como demonios, etc.) que no deben monitorear las tareas en todo el sistema no deben agregarse al grupo.

No puede controlar la visibilidad a nivel de proceso; sin embargo, puede asegurarse de que sus usuarios solo puedan ver sus propios procesos.

En caso de que tenga una versión de kernel superior a 3.3, puede intentarlo con el siguiente comando:

 
mount /proc -o remount,hidepid=2

uha
fuente
¿Puede limitar la hidepid=2cosa para que solo afecte a usuarios específicos (o para incluir en la lista blanca a ciertos usuarios)?
Shule
¡Funciona genial! Mi problema era que me estaba conectando a un servidor usando un script cron y cualquier usuario podía ver las credenciales usando "htop" (por ejemplo). Al configurar "hidepid = 2" los usuarios no pueden ver los procesos iniciados por otros usuarios, que es lo que estaba buscando. ¿Por qué no está configurado por defecto?
lepe
@lepe probablemente por razones heredadas. Rompería esto y aquello y, por lo tanto, no puede (todavía) usarse en todas partes.
Dodekeract el
OP pidió que el pid sea invisible en general, no solo para otros usuarios ...
Blauhirn
¿Hay alguna manera de ocultar los procesos creados solo por ciertos usuarios? p.ej. root?
Avery235
-2

use el comando F en el comando top andn, por ejemplo, para configurar lo que desea ver. use el comando W para escribir la configuración que desee ~ / .toprc - use? para ver los mejores comandos. Esto puede resolver su problema rápidamente, lo hizo por mí. Con F puedo agregar / eliminar los campos que quiero ver, mientras que en f puedo usar s para establecer el orden, luego q para volver a mostrar. luego n para establecer cuántos procesos quiero ver y W para guardar en .toprc

JamesD
fuente
Eso solo oculta algo en mi opinión
warren