Domanda Dove sono memorizzati gli insulti di sudo?


Per coloro a cui piace l'umorismo, sudo può essere configurato per stampare una frase casuale più o meno offensiva o divertente al posto del neutro Sorry, try again. aggiungendo la linea in basso a /etc/sudoers (usando il comando sudo visudo, non modifica 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, per puro divertimento, mi piacerebbe leggerli tutti, ma inserire password sbagliate per tutto il giorno non è il metodo migliore (ritardo dopo ogni tentativo, solo 2 messaggi per 3 tentativi, interruzione dopo 3 tentativi, ...).

Quindi ... dove vengono effettivamente archiviati questi insulti? Qualunque file di testo semplice che posso leggere direttamente? O stringhe hard coded nel codice sorgente?

Come posso ottenere un elenco di tutti disponibili sudo messaggi di insulto?


225
2017-10-15 18:25


origine




risposte:


Sono nel file binario

/usr/lib/sudo/sudoers.so

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

Se si abilitano i download di origine e lo si fa

apt source sudo

È possibile trovare i file di insulto nella directory di origine sotto

plugins/sudoers

I file sono

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

Esempio di come appaiono 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.


173
2017-10-15 18:34



Ora che Zanna ci dice che sono su sudoers.so, puoi anche "leggerli" usando le stringhe al posto del codice sorgente. Esegui questo: strings /usr/lib/sudo/sudoers.so - Stéphane
@ Stéphane È vero, però strings non ti dirò se tutti gli insulti sono uguali. La lettura della fonte effettiva potrebbe rivelare se determinati criteri influenzano la scelta di insulto. - kasperd
@ Stéphane Plus in esecuzione stringhe su un eseguibile produce un numero noiosamente elevato di falsi positivi. - MariusMatutiae
ins_2001.h  ins_classic.h  ins_csops.h  ins_goons.h - Matt
Non avevo intenzione di farlo fino a quando non ho visto insulti di Goon Show, a quel punto non riuscivo a digitare abbastanza velocemente - JamesENL


Con

dpkg -L sudo | xargs grep dumber

possiamo cercare quali file dal pacchetto sudo contenere la parola dumber.

L'unica partita è nel file /usr/lib/sudo/sudoers.so. Questo è un file binario quindi usiamo il strings comando di ottenere solo cose che sembrano essere leggibili. Dato che è molto, il risultato è un pipe less:

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

In less possiamo usare

/dumber

per cercare nuovamente la parola "più stupido". Questo ci porta dritti agli insulti. Scorrere su e giù con i tasti cursore e uscire con q


75
2017-10-15 18:55



Votato per mostrare una facile tecnica generale per scoprire la risposta a questo tipo di domande. - 200_success
Uso strings -n10 ridurre i falsi positivi. Guarda anche @ Risposta di DigitalTrauma che usa objcopy per nutrire solo il .rodata sezione in strings, di nuovo riducendo il rumore. - Peter Cordes


Elenco di tutti gli insulti

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

ins_2001.h (2001 Odissea nello spazio insulta):

.
    /*
     * 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 (Original Sudo 8 insulti):

    /*
     * 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.h contiene le istruzioni del compilatore su quale dei suddetti insulti includere nel kernel compilato. In effetti, è possibile creare il proprio file di insulti, aggiungere il nome a insults.h e ricompilare per avere messaggi come "Cosa, sei un utente di ArchLinux?" o "Questo non è Windows in cui gli errori sono all'ordine del giorno!", ecc.

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


72
2017-10-15 20:22



Non avevo idea che "broccoli" fosse considerato più politicamente corretto di "burrito". - fluffy
@fluffy Immagino sia un riferimento alle persone che seguono una dieta nazionale inclusa quella del burrito. Ora rimpiango di non censurare il codice. Avrei dovuto usare solo le opzioni PC_INSULT e cancellato l'altra metà. D'altra parte non mi piace la censura della storia come è successo con Tom Sawyer e libri del genere. Dal momento che questi insulti risalgono al 2004, sarei colpevole di censurare la storia se avessi rimosso le sezioni #ifdef. - WinEunuuchs2Unix
Non preoccuparti troppo della "censura della storia" quando parli di quali termini dovremmo usare ora. Posso pensare a molte molte parole che ho usato 40 anni fa che erano insultanti, sessiste, ecc. Sono felice di riferirmi a loro nel loro contesto storico, ma grazie a Dio la società è andata avanti e ha riconosciuto il danno in molti di questi termini . Sì, per favore, non parlare politicamente corretto se vuoi. Prova ad essere in una povera minoranza ferita dalle parole prima per favore. - Michael Durrant
Non c'è fine alla correttezza del PC. Qualsiasi parola può essere considerata offensiva, e i broccoli non sarebbero PC in Perù, ad esempio ... Il burrito è un evidente insulto razziale. - Shautieh
La maggior parte delle persone al di fuori degli Stati Uniti e probabilmente alcuni negli Stati Uniti non vedrebbero questo come "un evidente insulto razziale". Per me è divertente che chiunque abbia scritto questa lista di deliberati insulti (questo è il nome della funzione!) in realtà importava che le persone specifiche si offendessero davvero ... non c'è fine, e se sei davvero preoccupato, non abilitare questa funzione ...?! - laugh


Le risposte sopra sono ottime per la ricerca offline. Ma siamo online. Così aperto Ricerca del codice Debian e prova uno degli insulti Qui . Ti dice istantaneamente che è dentro sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Questo ha il vantaggio di trovarlo ovunque si tratti di un file di configurazione da distribuire /etc o qualsiasi altra cosa E dal momento che è un file .h, è visibile è nella fonte e non qualcosa che puoi modificare.


11
2017-10-18 23:49





Per aggiungere alle altre risposte, gli insulti sembrano essere nel .rodata sezione di sudoers.so. Puoi usare objcopy 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.
$ 

7
2017-10-17 23:48



Se riesci a tollerare molti falsi positivi, perché non utilizzarli strings invece di objcopy? :) - Ruslan
@Ruslan: Lo è già objcopy | strings, per scansionare solo il .rodata sezione del segmento di testo. Ciò che riduce i falsi positivi è l'aumento della lunghezza minima della stringa dal valore predefinito 4 a qualcosa come 10: strings -n10. E infilare dentro lessno head, IMO. Tutti gli insulti sembrano contigui, a proposito. - Peter Cordes
Ah, non ho fatto scorrere il codice, per vedere strings era già usato - Ruslan