Supongo que usted está en el archivo /etc/sudoers
. Por lo tanto, las cosas están funcionando como se espera en el terminal de stock. Además, sería extraño que un rootkit de cualquier hack de Ohter lo elimine de su propio archivo sudoers
; Los rootkits permiten accesos adicionales al atacante, pero no deshabilitan el acceso a los usuarios normales (aunque solo sea porque la ruptura de la funcionalidad atrae la atención, exactamente lo opuesto a lo que apunta un rootkit).
Por lo tanto, todos los síntomas apuntan a un error en iTerm2 (especialmente porque lo acabas de actualizar), no en un ataque.
Supongo que iTerm2 cambió la forma en que asigna su pseudo terminal . En los sistemas Unix (incluido MacOS X), las utilidades de línea de comandos deben ejecutarse en un dispositivo especial llamado terminal ; es un dispositivo de entrada-salida que maneja caracteres pero también conceptos como un "tamaño de terminal" con un número dado de columnas y líneas. Esto proviene de una época en la que los terminales eran realmente hardware tangible, como ese (pasé muchas horas de codificación en un VT220). En sistemas menos antiguos, tenemos tarjetas gráficas, millones de píxeles y colores, y emuladores de terminal que son aplicaciones como iTerm2 que hacen creer que todavía hay un terminal conectado a la máquina. Para hacer su trabajo, un emulador de terminal obtiene del kernel un par de pseudo terminales : estos son dos dispositivos (es decir, archivos especiales), uno que se verá como un verdadero terminal para las aplicaciones de línea de comandos y shell, y el otro que ofrece una vista hacia atrás del primero. El emulador de terminal traduce lo que lee y escribe al segundo pseudo-terminal en conceptos gráficos como dibujar caracteres en la pantalla.
Por lo tanto, sudo
se ejecutará en un pseudo-terminal que fue asignado y configurado por iTerm2. Se sabe que sudo
es exigente con las terminales; Consulte, por ejemplo, la opción requiretty
en la página de manual . "Por razones de seguridad" (una excusa favorita de todos los tiempos), sudo
puede requerir que el terminal sea "genuino" y que esté vinculado a una sesión real del sistema operativo. Para ser compatibles con estos requisitos sudo
, los emuladores de terminales deben saltar a través de una variedad de aros en una danza ritual compleja. Me parece posible que la actualización de iTerm2 haya cambiado algún parámetro oscuro que sudo
ahora declara hereje, explicando el mensaje.
Como pasos de investigación, intente ejecutar estos comandos en una Terminal estándar y en iTerm2:
id
ls -la 'tty'
w
El primer comando le dirá quién es (desde el punto de vista de la máquina), el segundo comando mostrará el dispositivo pseudo-terminal actualmente en uso, con derechos de acceso, y el tercer comando muestra las "sesiones" abiertas actualmente (luego de nuevo con los terminales correspondientes). Cualquier discrepancia entre los dos terminales podría apuntar a la causa próxima de su problema.