OS X, al igual que otros sistemas UNIX, implementa dos sistemas de pseudo-terminales: el sistema pty y el sistema ptmx (los enlaces apuntan al código fuente del kernel utilizado en la versión 10.9.5).
Ambos sistemas ofrecen en última instancia la misma funcionalidad: permiten que un programa (por ejemplo, un emulador de terminal) abra (el lado maestro de) un pseudo-terminal y posteriormente inicie otros programas (por ejemplo, un shell) que se ejecuten "dentro" (el lado esclavo de) ese mismo pseudo-terminal.
El sistema pty es más antiguo. Los nodos de dispositivos para los lados maestros de sus pseudo-terminales siguen el patrón /dev/pty[pqrstuvw][0123456789abcdef]
. Los lados esclavos utilizan nodos correspondientes nombrados con tty
(/dev/tty[pqrstuvw][0123456789abcdef]
). Estos nodos de dispositivos se asignan cuando el sistema se inicia (es decir, siempre están presentes en /dev/
).
El sistema ptmx es más nuevo y utiliza un único nodo de dispositivo maestro, /dev/ptmx
, y utiliza /dev/ttys[0-9][0-9][0-9]
para los lados esclavos. Los nodos de dispositivos esclavos se asignan de forma dinámica (por lo tanto, solo existen los nodos que todavía están en uso en /dev/
).
Básicamente, cualquier programa que utilice las API de pseudo-terminales "modernas" terminará utilizando pseudo-terminales basados en ptmx. Los programas que utilizan las interfaces más antiguas de pseudo-terminales utilizarán pseudo-terminales basados en pty.
En tu caso, al generar sus procesos hijos, tu sshd utilizó el sistema ptmx más nuevo (o una interfaz como openpty que lo utiliza "bajo el capó"), pero el ancestro pertinente de esos shells root utilizó el antiguo sistema pty. Si tienes curiosidad, podrías rastrear los PID de los padres (PPID, la tercera columna en tu resultado) para encontrar el programa ancestro que generó la línea de procesos que acabaron ejecutando esos shells root (el guion al principio indica que son shells de inicio de sesión).
Además, otros sistemas pueden utilizar variaciones en los nombres de dispositivos. Algunos sistemas podrían ir más allá de 0- f para los nombres de pty, y algunos sistemas utilizan /dev/pts/
(es decir, en un subdirectorio en lugar de colocarlos todos en /dev
y tener que utilizar tres dígitos para evitar conflictos con los nodos esclavos ttys0
- ttys9
del sistema pty).