Dove sono archiviati gli insulti di sudo?


234

Per chi ama l'umorismo, sudopuò essere configurato per stampare una frase casuale più o meno offensiva o divertente al posto del neutro Sorry, try again.aggiungendo la riga qui sotto a /etc/sudoers(usando il comando sudo visudo, non modificando manualmente!):

Defaults insults

Ecco alcuni esempi:

[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!

Ora, solo per divertimento, vorrei leggerli tutti, ma inserire password sbagliate tutto il giorno non è proprio il metodo migliore (ritardo dopo ogni tentativo, solo 2 messaggi per 3 tentativi, interruzione dopo 3 tentativi, ...).

Quindi ... dove sono effettivamente memorizzati questi insulti? Qualche file di testo semplice che posso leggere direttamente? O stringhe codificate nel codice sorgente?

Come posso ottenere un elenco di tutti i sudomessaggi di insulto disponibili ?

Risposte:


181

Sono nel file binario

/usr/lib/sudo/sudoers.so

(trovato da find /usr/lib/sudo -type f | xargs grep "fallen in the water":)

Se abiliti il ​​download dei sorgenti e lo fai

apt source sudo

È possibile trovare i file degli insulti nella directory di origine in

plugins/sudoers

I file sono

ins_2001.h
ins_classic.h
ins_csops.h
ins_goons.h
insults.h

Esempio di come si presentano questi file:

#ifndef SUDOERS_INS_GOONS_H
#define SUDOERS_INS_GOONS_H

/*
 * Insults from the "Goon Show."
 */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",

e così via ... sono abbastanza leggibili.


24
Ora che Zanna ci dice che sono in sudoers.so, puoi anche "leggerli" usando le stringhe invece del codice sorgente. Esegui questo: strings /usr/lib/sudo/sudoers.so
Stéphane il

3
@ Stéphane Questo è vero, anche se stringsnon ti dirà se tutti gli insulti sono uguali. La lettura della fonte effettiva potrebbe rivelare se determinati criteri influenzano la scelta dell'insulto.
Kasperd,

3
@ Stéphane Plus che esegue stringhe su un eseguibile produce un numero noiosamente elevato di falsi positivi.
MariusMatutiae,


7
Non avevo intenzione di farlo fino a quando non ho visto gli insulti di Goon Show, a quel punto non sono riuscito a digitare abbastanza velocemente
JamesENL

77

Con

dpkg -L sudo | xargs grep dumber

possiamo cercare quali file dal pacchetto sudocontengono la parola dumber.

L'unica corrispondenza è nel file /usr/lib/sudo/sudoers.so. Questo è un file binario, quindi usiamo il stringscomando per ottenere solo cose che sembrano essere leggibili dall'uomo. Dato che è molto, noi convogliamo il risultato in less:

strings /usr/lib/sudo/sudoers.so | less

In lesspossiamo usare

/dumber

per cercare nuovamente la parola "più scemo". Questo ci porta direttamente agli insulti. Scorrere verso l'alto e verso il basso con i tasti cursore e uscire conq


6
Eseguito l'upgrade per mostrare una semplice tecnica generale per scoprire la risposta a questo tipo di domande.
200_successo

1
Utilizzare strings -n10per ridurre i falsi positivi. Vedi anche la risposta di @ DigitalTrauma che utilizza l'objcopy per alimentare solo la .rodatasezione strings, riducendo di nuovo il rumore.
Peter Cordes,

76

Elenco di tutti gli insulti

Quando guardiamo tutti gli insulti scopriamo un boccone interessante: dire che Broccoli è politicamente corretto, ma dire Burrito non lo è. Tutti gli insulti sono elencati di seguito.

ins_2001.h (2001 insulti di Odissea nello spazio):

.
    /*
     * HAL insults (paraphrased) from 2001.
     */

    "Just what do you think you're doing Dave?",
    "It can only be attributed to human error.",
    "That's something I cannot allow to happen.",
    "My mind is going. I can feel it.",
    "Sorry about this, I know it's a bit silly.",
    "Take a stress pill and think things over.",
    "This mission is too important for me to allow you to jeopardize it.",
    "I feel much better now.",

ins_classic.h (Insulti originali Sudo 8):

    /*
     * Insults from the original sudo(8).
     */

    "Wrong!  You cheating scum!",
#ifdef PC_INSULTS
    "And you call yourself a Rocket Scientist!",
#else
    "No soap, honkie-lips.",
#endif
    "Where did you learn to type?",
    "Are you on drugs?",
    "My pet ferret can type better than you!",
    "You type like i drive.",
    "Do you think like you type?",
    "Your mind just hasn't been the same since the electro-shock, has it?",

ins_csops.h (Insulti CSOps):

    /*
     * CSOps insults (may be site dependent).
     */

    "Maybe if you used more than just two fingers...",
    "BOB says:  You seem to have forgotten your passwd, enter another!",
    "stty: unknown mode: doofus",
    "I can't hear you -- I'm using the scrambler.",
    "The more you drive -- the dumber you get.",
#ifdef PC_INSULTS
    "Listen, broccoli brains, I don't have time to listen to this trash.",
#else
    "Listen, burrito brains, I don't have time to listen to this trash.",
#endif
    "I've seen penguins that can type better than that.",
    "Have you considered trying to match wits with a rutabaga?",
    "You speak an infinite deal of nothing",

ins_goons.h (Goon Show insulti):

.
    /*
     * Insults from the "Goon Show."
     */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",
    "I don't wish to know that.",
    "What, what, what, what, what, what, what, what, what, what?",
    "You can't get the wood, you know.",
    "You'll starve!",
    "... and it used to be so popular...",
    "Pauses for audience applause, not a sausage",
    "Hold it up to the light --- not a brain in sight!",
    "Have a gorilla...",
    "There must be cure for it!",
    "There's a lot of it about, you know.",
    "You do that again and see what happens...",
    "Ying Tong Iddle I Po",
    "Harm can come to a young lad like that!",
    "And with that remarks folks, the case of the Crown vs yourself was proven.",
    "Speak English you fool --- there are no subtitles in this scene.",
    "You gotta go owwwww!",
    "I have been called worse.",
    "It's only your word against mine.",
    "I think ... err ... I think ... I think I'll go home",

Il file insults.hcontiene le istruzioni del compilatore su quale degli insulti sopra deve includere nel kernel compilato. In effetti, potresti creare il tuo file di insulti, aggiungere il nome a insults.h e ricompilare per avere messaggi come "Cosa, sei un utente ArchLinux?" o "Questo non è Windows dove gli errori sono all'ordine del giorno!", ecc.

Notare il #ifdef PC_INSULTSin alcuni dei file di insulto. Questo non significa "se hai un personal computer" significa "se vuoi essere politicamente corretto".


47
Non avevo idea che i "broccoli" fossero considerati politicamente più corretti del "burrito".
soffice

9
@fluffy Suppongo che sia un riferimento a persone che hanno una dieta nazionale inclusa il burrito. Ora mi pento di non aver censurato il codice. Avrei dovuto usare solo le opzioni PC_INSULT ed eliminare l'altra metà. D'altra parte non mi piace la censura della storia come è successo con Tom Sawyer e libri del genere. Dato che questi insulti risalgono al 2004 sarei colpevole di censurare la storia se avessi rimosso le sezioni #ifdef.
WinEunuuchs2Unix,

7
Non preoccuparti troppo della "censura della storia" quando parliamo di quali termini dovremmo usare ora. Riesco a pensare a molte molte parole che ho usato 40 anni fa che erano offensive razziali, sessiste, ecc. Sono felice di riferirle nel loro contesto storico, ma grazie a dio la società si è spostata in avanti e ha riconosciuto il danno in molti di questi termini . Sì, ti preghiamo di parlare politicamente corretto se vuoi. Prova ad essere in una minoranza povera ferita dalle parole, per favore.
Michael Durrant,

4
Non c'è fine alla correttezza del PC. Qualsiasi parola può essere considerata offensiva e, ad esempio, i broccoli non sarebbero PC in Perù ... Il burrito è un evidente insulto razziale.
Shautieh,

17
La maggior parte delle persone al di fuori degli Stati Uniti e probabilmente alcuni negli Stati Uniti non vedono questo come "un evidente insulto razziale". Per me, è divertente che chiunque abbia scritto questo elenco di insulti deliberati (questo è il nome della funzione!) In realtà si preoccupasse del fatto che determinate persone si offendessero davvero ... non c'è fine ad esso, e se sei davvero preoccupato, non abilitare questa funzione ...?!
ride il

11

Le risposte di cui sopra sono ottime per la ricerca offline. Ma siamo online. Quindi apri la ricerca del codice Debian e prova uno degli insulti qui . Ti dice immediatamente che è dentro sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Questo ha il vantaggio di trovarlo ovunque sia un file di configurazione da distribuire /etco altro. E poiché è un file .h, è visibile che è nel sorgente e non è qualcosa che puoi modificare.


7

Per aggiungere alle altre risposte, gli insulti sembrano essere nella .rodatasezione di sudoers.so. È possibile utilizzare objcopyper limitare in qualche modo l'output, anche se ci saranno ancora molti falsi positivi:

$ objcopy /usr/lib/sudo/sudoers.so /dev/null --dump-section .rodata=/dev/stdout | strings | head
/build/sudo-g3ghsu/sudo-1.8.16/plugins/sudoers/auth/sudo_auth.c
invalid authentication methods
Invalid authentication methods compiled into sudo!  You may not mix standalone and non-standalone authentication.
There are no authentication methods compiled into sudo!  If you want to turn off authentication, use the --disable-authentication configure option.
Unable to initialize authentication methods.
Just what do you think you're doing Dave?
It can only be attributed to human error.
That's something I cannot allow to happen.
My mind is going. I can feel it.
Sorry about this, I know it's a bit silly.
$ 

Se riesci a tollerare molti falsi positivi, perché non usare solo stringsinvece di objcopy? :)
Ruslan,

@Ruslan: lo è già objcopy | strings, per scansionare solo la .rodatasezione del segmento di testo. Che riduce i falsi positivi è aumentando la lunghezza minima della stringa dal default 4 fino a qualcosa come 10: strings -n10. E conduci less, non head, IMO. Tutti gli insulti sembrano contigui, a proposito.
Peter Cordes,

Ah, non ho fatto scorrere il codice, per vedere stringsera già stato usato.
Ruslan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.