Para aquellos a quienes les gusta el humor, sudo
se puede configurar para imprimir una frase aleatoria más o menos insultante o divertida en lugar de la neutral Sorry, try again.
agregando la siguiente línea a /etc/sudoers
(¡usando el comando sudo visudo
, no editando manualmente!):
Defaults insults
Aquí hay unos ejemplos:
[sudo] password for bytecommander:
The more you drive -- the dumber you get.
[sudo] password for bytecommander:
I've seen penguins that can type better than that.
[sudo] password for bytecommander:
This mission is too important for me to allow you to jeopardize it.
[sudo] password for bytecommander:
He has fallen in the water!
[sudo] password for bytecommander:
Hold it up to the light --- not a brain in sight!
Ahora, solo por diversión, me gustaría leerlos todos, pero ingresar contraseñas incorrectas todo el día no es realmente el mejor método (demora después de cada intento, solo 2 mensajes por 3 intentos, abortar después de 3 intentos, ...).
Entonces ... ¿dónde están realmente almacenados estos insultos? ¿Algún archivo de texto sin formato que pueda leer directamente? ¿O cadenas codificadas en el código fuente?
¿Cómo puedo obtener una lista de todos los sudo
mensajes de insulto disponibles ?
strings /usr/lib/sudo/sudoers.so
strings
no te dirá si todos los insultos son iguales. Leer la fuente real podría revelar si ciertos criterios influyen en la elección del insulto.Con
podemos buscar qué archivos del paquete
sudo
contienen la palabradumber
.La única coincidencia está en el archivo
/usr/lib/sudo/sudoers.so
. Este es un archivo binario, por lo que usamos elstrings
comando para obtener solo cosas que parecen legibles para los humanos. Como es mucho, canalizamos el resultado enless
:En
less
podemos usarpara buscar nuevamente la palabra "más tonto". Eso nos lleva directamente a los insultos. Desplácese hacia arriba y hacia abajo con las teclas del cursor y salga conq
fuente
strings -n10
para reducir los falsos positivos. Vea también la respuesta de @ DigitalTrauma que usa objcopy para alimentar solo la.rodata
secciónstrings
, nuevamente reduciendo el ruido.Lista de todos los insultos
Cuando observamos todos los insultos, descubrimos un dato interesante: decir que el brócoli es políticamente correcto, pero que Burrito no lo es. Todos los insultos se enumeran a continuación.
ins_2001.h
(Insultos de Space Odyssey 2001):ins_classic.h
(Insultos originales de Sudo 8):ins_csops.h
(Insultos de CSOps):ins_goons.h
(Goon Mostrar insultos):El archivo
insults.h
contiene instrucciones del compilador sobre cuáles de los insultos anteriores incluir en el núcleo compilado. De hecho, podría crear su propio archivo de insultos, agregar el nombre a insults.h y volver a compilar para tener mensajes como "¿Qué, es un usuario de ArchLinux?" o "¡Esto no es Windows donde los errores son comunes!", etc.Observe el
#ifdef PC_INSULTS
en algunos de los archivos de insulto. Esto no significa "si tiene una computadora personal" significa "si quiere ser políticamente correcto".fuente
Las respuestas anteriores son excelentes para la búsqueda sin conexión. Pero estamos en línea. Así que abre la búsqueda de código de Debian y prueba uno de los insultos aquí . Instantáneamente te dice que está adentro
sudo_1.8.12-1/plugins/sudoers/ins_csops.h
. Esto tiene la ventaja de encontrarlo en todas partes, ya sea un archivo de configuración para implementar/etc
o lo que sea. Y dado que es un archivo .h, es visible, está en la fuente y no es algo que pueda modificar.fuente
Para agregar a las otras respuestas, los insultos parecen estar en la
.rodata
sección de sudoers.so. Puede usarobjcopy
para restringir un poco la salida, aunque todavía habrá muchos falsos positivos:fuente
strings
lugar deobjcopy
? :)objcopy | strings
, solo para escanear la.rodata
sección del segmento de texto. Lo que reduce los falsos positivos es el aumento de la longitud mínima de la cadena por defecto 4 hasta algo así como 10:strings -n10
. Y entrarless
, nohead
, en la OMI. Todos los insultos parecen ser contiguos, por cierto.strings
ya estaba en uso.