Vraag Waar worden sudo's beledigingen opgeslagen?


Voor degenen die van humor houden, sudo kan worden geconfigureerd om een ​​willekeurige min of meer beledigende of grappige zin af te drukken in plaats van de neutrale Sorry, try again. door de onderstaande regel toe te voegen aan /etc/sudoers (met behulp van het commando sudo visudo, niet handmatig bewerken!):

Defaults insults

Hier zijn enkele voorbeelden:

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

Nu wil ik ze gewoon voor de lol lezen, maar de hele dag verkeerde wachtwoorden invoeren is niet echt de beste methode (vertraging na elke poging, slechts 2 berichten per 3 pogingen, afbreken na 3 pogingen, ...).

Dus ... waar worden deze beledigingen eigenlijk opgeslagen? Kan ik elk gewoon tekstbestand direct lezen? Of harde coderingstrings in de broncode?

Hoe kan ik een lijst van alle beschikbare krijgen sudo beledigingen?


225
2017-10-15 18:25


oorsprong




antwoorden:


Ze bevinden zich in het binaire bestand

/usr/lib/sudo/sudoers.so

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

Als u brondownloads inschakelt en doet

apt source sudo

Je vindt de beledigingsbestanden in de bronmap hieronder

plugins/sudoers

De bestanden zijn

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

Voorbeeld van hoe deze bestanden eruit zien:

#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",

en ga zo maar door ... ze zijn redelijk leesbaar.


173
2017-10-15 18:34



Nu Zanna ons vertelt dat ze sudoers zijn. Dus, je kunt ze ook "lezen" met strings in plaats van de broncode. Voer dit uit: strings /usr/lib/sudo/sudoers.so - Stéphane
@ Stéphane Dat is echter waar strings zal je niet vertellen of alle beledigingen gelijk zijn. Het lezen van de eigenlijke bron zou kunnen uitwijzen of bepaalde criteria de keuze voor belediging beïnvloeden. - kasperd
@ Stéphane Plus hardlopen strings op een uitvoerbaar bestand produceert een vervelend groot aantal valse positieven. - MariusMatutiae
ins_2001.h  ins_classic.h  ins_csops.h  ins_goons.h - Matt
Ik was niet van plan om dit echt te doen totdat ik Goon Show beledigingen zag, op dat moment kon ik niet snel genoeg een sleutelwoord plaatsen - JamesENL


Met

dpkg -L sudo | xargs grep dumber

we kunnen zoeken naar welke bestanden uit het pakket sudo bevatten het woord dumber.

De enige match is in het bestand /usr/lib/sudo/sudoers.so. Dit is een binair bestand, dus gebruiken we het strings commando om alleen dingen te krijgen die eruitzien als leesbaar voor de mens. Omdat het veel is, pompen we het resultaat in less:

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

In less we kunnen gebruiken

/dumber

om opnieuw naar het woord "dommer" te zoeken. Dat brengt ons recht in de beledigingen. Blader omhoog en omlaag met de cursortoetsen en verlaat met q


75
2017-10-15 18:55



Opgewekt voor het tonen van een eenvoudige algemene techniek om het antwoord op dit soort vragen te ontdekken. - 200_success
Gebruik strings -n10 om valse positieven te verminderen. Zie ook @ DigitalTrauma's antwoord die objcopy gebruikt om alleen de .rodata sectie in strings, opnieuw het verminderen van ruis. - Peter Cordes


Lijst met alle beledigingen

Als we naar alle beledigingen kijken, ontdekken we een interessant feitje: zeggen dat Broccoli politiek correct is, maar dat Burrito dat niet is. Alle beledigingen staan ​​hieronder vermeld.

ins_2001.h (2001 beledigingen van Space Odyssey):

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

    /*
     * 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 (CSOps beledigingen):

    /*
     * 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 Toon beledigingen):

.
    /*
     * 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",

Het bestand insults.h bevat compilerinstructies over welke van de bovengenoemde beledigingen in de gecompileerde kernel moeten worden opgenomen. Inderdaad, je zou je eigen beledigingenbestand kunnen maken, de naam toevoegen aan insults.h en opnieuw compileren om berichten te hebben zoals: "Wat, ben jij een ArchLinux-gebruiker?" of "Dit is geen Windows waar fouten gemeengoed zijn!", enz.

Let op de #ifdef PC_INSULTS in sommige van de beledigingsbestanden. Dit betekent niet: "als u een pc hebt", betekent dit "als u politiek correct wilt zijn".


72
2017-10-15 20:22



Ik had geen idee dat 'broccoli' politiek beter klopte dan 'burrito'. - fluffy
@fluffy Ik neem aan dat het een verwijzing is naar mensen met een nationaal dieet, inclusief burrito's. Ik betreur het nu niet om de code te censureren. Ik had alleen de PC_INSULT-opties moeten gebruiken en de andere helft hebben verwijderd. Aan de andere kant hou ik niet van censuur van de geschiedenis zoals het geval is met Tom Sawyer en boeken zoals die. Aangezien deze beledigingen uit 2004 komen, ben ik schuldig aan het censureren van de geschiedenis als ik de # ifdef-secties had verwijderd. - WinEunuuchs2Unix
Maak je niet al te veel zorgen over het 'censureren van geschiedenis' wanneer je het hebt over welke voorwaarden we nu zouden moeten gebruiken. Ik kan veel vele woorden bedenken die ik 40 jaar geleden gebruikte en die racistisch beledigend, seksistisch, enz. Waren. Ik verwijs graag naar hen in hun historische context, maar godzijdank heeft de maatschappij vooruitgang geboekt en de schade in veel van deze termen erkend . Ja, praat alsjeblieft over politiek correct als je wilt. Probeer alsjeblieft in een arme minderheid te komen die eerst door woorden wordt gekwetst. - Michael Durrant
Er komt geen einde aan de pc-correctheid. Elk woord kan als aanstootgevend worden beschouwd, en broccoli zou bijvoorbeeld geen pc in Peru zijn ... Burrito is echter een evident racistisch misnoegd woord. - Shautieh
De meeste mensen buiten de VS en waarschijnlijk een aantal in de VS zouden dit niet als een "evident racistisch verwijt" zien. Voor mij is het grappig dat iedereen die deze lijst met opzettelijke heeft geschreven beledigingen (dat is de naam van de functie!) zorgde er echt voor dat specifieke mensen echt beledigd raakten ... er komt geen einde aan, en als je je echt zorgen maakt, schakel deze functie dan niet in ...?! - laugh


De bovenstaande antwoorden zijn geweldig voor offline zoeken. Maar we zijn online. Zo open Debian code zoeken en probeer een van de beledigingen hier . Het vertelt je meteen dat het erin zit sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Dit heeft het voordeel om het te vinden overal of het nu een configuratiebestand is om in te worden gedistribueerd /etc of wat dan ook. En aangezien het een .h-bestand is, is zichtbaar dat het in de bron staat en niet iets dat u kunt wijzigen.


11
2017-10-18 23:49





Om aan de andere antwoorden toe te voegen, lijken de beledigingen in de .rodata gedeelte van sudoers.so. Je kunt gebruiken objcopy om de uitvoer enigszins te beperken, hoewel er nog steeds veel valse positieven zullen zijn:

$ 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



Als u veel valse positieven kunt verdragen, waarom niet gewoon gebruiken strings in plaats van objcopy? :) - Ruslan
@Ruslan: Dat is het al objcopy | strings, om alleen het te scannen .rodata gedeelte van het tekstsegment. Wat valse positieven vermindert, is het verhogen van de minimumlengte van de reeks van de standaard 4 tot iets als 10: strings -n10. En pijp in less, niet headIMO. Alle beledigingen lijken aaneengesloten te zijn, tussen haakjes. - Peter Cordes
Ah, ik heb de code niet verschoven om te zien strings was al gebruikt. - Ruslan