Estoy confundido acerca de cómo sshd descarta privs para conexiones entrantes. Encontré esta página que fue muy informativa en un nivel alto:
Pero no entiendo cómo el hijo de sshd privilegiado no tiene privilegios.
En mi depuración debajo de sshd privilegiado es 28389 y se llama a clone () para crear 29266, el niño sin privilegios. Cuando uso ps para mostrar el UID / EUID de los pids 29268 es UID 1002 como se esperaba, pero 29266, el niño sin privilegios de sshd, es cero, lo que parece contradecir el enlace anterior que dice "Esto se logra cambiando su uid / gid a un usuario no utilizado '.
woOt@host:~$ sudo strace -p 28389 -e trace=clone
Process 28389 attached - interrupt to quit
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb7076d5a90) = 29266
^CProcess 28389 detached
woOt@host:~$
woOt@host:~$
woOt@host:~$ ps auxf | grep sshd
root 28389 0.0 0.0 49944 1244 ? Ss 18:15 0:00 /usr/sbin/sshd
root 29266 0.0 0.2 54576 3308 ? Ss 18:37 0:00 \_ sshd: test [priv]
test 29268 0.0 0.0 54576 1440 ? S 18:37 0:00 \_ sshd: test@pts/2
woOt@host:~$
woOt@host:~$
woOt@host:~$ ps -eo pid,uid,euid | egrep 'PID|28389|29266|29268'
PID UID EUID
28389 0 0
29266 0 0
29268 1002 1002
woOt@host:~$
woOt@host:~$
woOt@host:~$ grep 1002 /etc/passwd
test:x:1002:1003:,,,:/home/test:/bin/bash
woOt@host:~$
pregunta editada para ilustrar correctamente:
hijo sin privilegios (2406) del proceso de monitoreo (2405)
root 2370 0.0 1.1 55592 5524 ? Ss 00:12 0:00 /usr/sbin/sshd -D root 2405 0.0 1.1 59008 5720 ? Ss 00:12 0:00 \_ sshd: test [priv] sshd 2406 0.0 0.6 56936 3072 ? S 00:12 0:00 \_ sshd: test [net]
y niño privilegiado por el usuario (2419) del proceso de supervisión posterior a la autenticación:
root 2370 0.0 1.1 55592 5524 ? Ss 00:12 0:00 /usr/sbin/sshd -D root 2405 0.0 1.1 60224 5756 ? Ss 00:12 0:00 \_ sshd: test [priv] test 2419 0.0 0.7 60224 3888 ? S 00:12 0:00 \_ sshd: test@pts/1
Aprecio las respuestas, gracias