GNU/Linux >> Tutoriales Linux >  >> Linux

No se puede rastrear sudo; informa que el uid efectivo es distinto de cero

Cómo rastrear sudo

$ sudo  strace -u <username>  sudo -k <command>
  1. sudo ejecuta strace como root.
  2. strace ejecuta sudo como <username> pasado a través del -u opción.
  3. sudo elimina las credenciales almacenadas en caché del sudo anterior con -k opción (para volver a pedir la contraseña) y ejecuta <command> .

El segundo sudo es el tracee (el proceso que se está rastreando).

Para poner automáticamente al usuario actual en el lugar de <username> , usa $(id -u -n) .

Por qué sudo no funciona con strace

Además de esta respuesta de Charles, esto es lo que execve() la página del manual dice:

Si el bit set-user-ID se establece en el archivo de programa al que hace referencia el nombre de ruta, entonces el ID de usuario efectivo del proceso de llamada se cambia por el del propietario del archivo de programa. De manera similar, cuando se establece el bit set-group-ID del archivo de programa, el ID de grupo efectivo del proceso de llamada se establece en el grupo del archivo de programa.

Las transformaciones mencionadas anteriormente de los ID efectivos no se realizan (es decir, se ignoran los bits set-user-ID y set-group-ID) si se cumple alguna de las siguientes condiciones:

  • el atributo no_new_privs está establecido para el subproceso de llamada (ver prctl(2));
  • el sistema de archivos subyacente está montado nosuid (el indicador MS_NOSUID para mount(2)); o
  • se está rastreando el proceso de llamada.

Las capacidades del archivo de programa (ver capacidades(7)) también se ignoran si alguna de las anteriores es verdadera.

Los permisos para rastrear un proceso, inspeccionar o modificar su memoria, se describen en la subsección Comprobación del modo de acceso de Ptrace en la sección NOTAS de la página de manual de ptrace(2). He comentado sobre esto en esta respuesta.


Por razones de seguridad, el bit setuid y el ptrace (usados ​​para ejecutar archivos binarios bajo un depurador) no se pueden respetar al mismo tiempo. El incumplimiento de esta restricción en el pasado condujo a CVE-2001-1384.

En consecuencia, cualquier sistema operativo diseñado pensando en la seguridad dejará de respetar ptrace en la ejecución de un binario setuid o no respetará el bit setuid cuando ptrace esté en uso.

En Linux, considere usar Sysdig en su lugar, que, al poder solo ver pero no modificar el comportamiento, no corre los mismos riesgos.


Linux
  1. Crear un usuario de Sudo en Debian:¿proceso paso a paso?

  2. ¿Herramienta que permite el registro del uso de la memoria?

  3. Linux:¿Sudo no puede abrir /etc/sudoers?

  4. ¿Cómo rastrear el proceso secundario usando strace?

  5. ERROR:ld.so:el objeto 'libgtk3-nocsd.so.0' de LD_PRELOAD no se puede precargar

No se puede iniciar php-fpm:no se puede obtener uid para el usuario 'apache'

No se puede iniciar Nvidia nsight

no puedo instalar node-sass por lo tanto no puedo instalar gulp-sass

Process Monitor equivalente para Linux?

¿Cómo deshabilitar el apagado para que no se pueda interrumpir un proceso importante?

¿Cómo matar un proceso que nunca muere?