Wo sind die Beleidigungen von sudo gespeichert?

234

Für diejenigen, die Humor mögen, sudokann konfiguriert werden, einen zufälligen mehr oder weniger beleidigenden oder lustigen Satz anstelle der neutralen zu drucken, Sorry, try again.indem die folgende Zeile hinzugefügt wird /etc/sudoers(mit dem Befehl sudo visudo, nicht manuell bearbeiten!):

Defaults insults

Hier sind einige Beispiele:

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

Jetzt nur zum Spaß möchte ich sie alle durchlesen, aber die Eingabe falscher Passwörter den ganzen Tag ist nicht die beste Methode (Verzögerung nach jedem Versuch, nur 2 Nachrichten pro 3 Versuche, Abbruch nach 3 Versuchen, ...).

Also ... wo sind diese Beleidigungen eigentlich gespeichert? Jede Klartextdatei, die ich direkt lesen kann? Oder fest codierte Zeichenfolgen im Quellcode?

Wie kann ich eine Liste aller verfügbaren sudoBeleidigungsnachrichten erhalten?

Byte Commander
quelle

Antworten:

181

Sie befinden sich in der Binärdatei

/usr/lib/sudo/sudoers.so

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

Wenn Sie Quelldownloads aktivieren und ausführen

apt source sudo

Sie finden die Beleidigungsdateien im Quellverzeichnis unter

plugins/sudoers

Die Dateien sind

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

Beispiel, wie diese Dateien aussehen:

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

und so weiter ... sie sind gut lesbar.

Zanna
quelle
24
Nun, da Zanna uns mitteilt, dass sie in sudoers.so enthalten sind, können Sie sie auch mit Hilfe von Strings anstelle des Quellcodes "lesen". Führen Sie dies aus: strings /usr/lib/sudo/sudoers.so
Stéphane
3
@Stéphane Das stimmt, aber stringsich verrate dir nicht, ob alle Beleidigungen gleich sind. Das Lesen der tatsächlichen Quelle könnte zeigen, ob bestimmte Kriterien die Wahl der Beleidigung beeinflussen.
Kasperd
3
@ Stéphane Plus Das Ausführen von Zeichenfolgen für eine ausführbare Datei führt zu einer mühsam großen Anzahl von Fehlalarmen.
MariusMatutiae
7
Ich würde das eigentlich nicht tun, bis ich Beleidigungen von Goon Show sah, zu welchem ​​Zeitpunkt ich nicht schnell genug
tasten
77

Mit

dpkg -L sudo | xargs grep dumber

Wir können suchen, welche Dateien aus dem Paket sudodas Wort enthalten dumber.

Die einzige Übereinstimmung ist in der Datei /usr/lib/sudo/sudoers.so. Dies ist eine Binärdatei, daher verwenden wir den stringsBefehl, um nur Dinge abzurufen, die menschlich lesbar erscheinen. Da es eine Menge ist, leiten wir das Ergebnis weiter in less:

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

In können lesswir verwenden

/dumber

um erneut nach dem Wort "dümmer" zu suchen. Das bringt uns direkt in die Beleidigungen. Scrollen Sie mit den Cursortasten auf und ab und beenden Sie mitq

Florian Diesch
quelle
6
Ausgezeichnet für das Zeigen einer einfachen allgemeinen Technik, um die Antwort auf diese Art von Fragen zu finden.
200_success
1
Verwenden Sie strings -n10diese Option , um Fehlalarme zu reduzieren. Siehe auch die Antwort von @DigitalTrauma, bei der nur der .rodataAbschnitt mit Objektkopie eingespeist wird strings, wodurch wiederum das Rauschen reduziert wird.
Peter Cordes
76

Liste aller Beleidigungen

Wenn wir alle Beleidigungen betrachten, entdecken wir einen interessanten Leckerbissen: Brokkoli zu sagen ist politisch korrekt, Burrito jedoch nicht. Alle Beleidigungen sind unten aufgeführt.

ins_2001.h (2001 Space Odyssey Beleidigungen):

.
    /*
     * 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 Beleidigungen):

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

    /*
     * 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 (Beleidigungen der Goon Show):

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

Die Datei insults.henthält Compiler-Anweisungen, welche der oben genannten Beleidigungen in den kompilierten Kernel aufgenommen werden sollen. In der Tat können Sie Ihre eigene Beleidigungsdatei erstellen, den Namen zu insults.h hinzufügen und neu kompilieren, um Meldungen wie "Was, sind Sie ein ArchLinux-Benutzer?" Zu erhalten. oder "Dies ist nicht Windows, wo Fehler an der Tagesordnung sind!" usw.

Beachten Sie die #ifdef PC_INSULTSin einigen der Beleidigungsdateien. Dies bedeutet nicht "wenn Sie einen PC haben", sondern "wenn Sie politisch korrekt sein wollen".

WinEunuuchs2Unix
quelle
47
Ich hatte keine Ahnung, dass "Brokkoli" politisch korrekter ist als "Burrito".
flauschiger
9
@fluffy Ich nehme an, es ist ein Hinweis auf Menschen, die nationale Ernährung Burritos enthalten. Ich bedaure jetzt, den Code nicht zensiert zu haben. Ich hätte nur die PC_INSULT-Optionen verwenden und die andere Hälfte löschen sollen. Andererseits mag ich keine Zensur der Geschichte, wie sie bei Tom Sawyer und solchen Büchern passiert ist. Da diese Beleidigungen aus dem Jahr 2004 stammen, wäre ich der Zensur der Geschichte schuldig, wenn ich die #ifdef-Abschnitte entfernt hätte.
WinEunuuchs2Unix
7
Kümmere dich nicht zu sehr um die "Zensur der Geschichte", wenn du darüber sprichst, welche Begriffe wir jetzt verwenden sollten. Ich kann mir viele, viele Wörter vorstellen, die ich vor 40 Jahren verwendet habe und die rassistisch, sexistisch usw. beleidigt haben. Ich beziehe mich gerne auf sie in ihrem historischen Kontext, aber Gott sei Dank hat die Gesellschaft Fortschritte gemacht und den Schaden in vielen dieser Begriffe erkannt . Ja, bitte schimpfen Sie politisch korrekt, wenn Sie wollen. Versuchen Sie, in einer armen Minderheit zu sein, die bitte zuerst durch Worte verletzt wird.
Michael Durrant
4
Die PC-Korrektheit hat kein Ende. Jedes Wort kann als anstößig angesehen werden, und Brokkoli wäre beispielsweise in Peru kein PC ... Burrito ist jedoch ein offensichtlicher Rassenschwindel.
Shautieh
17
Die meisten Menschen außerhalb der USA und wahrscheinlich auch einige in den USA würden dies nicht als "offensichtliche Rassenverschleierung" betrachten. Für mich ist es lustig, dass es demjenigen, der diese Liste mit absichtlichen Beleidigungen geschrieben hat (das ist der Name der Funktion!), Wirklich wichtig ist, dass bestimmte Personen wirklich beleidigt werden ... es gibt kein Ende und wenn Sie wirklich besorgt sind, aktivieren Sie diese Funktion nicht ...?!
Lachen
11

Die obigen Antworten eignen sich hervorragend für die Offline-Suche. Aber wir sind online. Öffnen Sie also die Debian-Codesuche und versuchen Sie eine der Beleidigungen hier . Es sagt dir sofort, dass es drin ist sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Dies hat den Vorteil, dass Sie es überall finden, /etcegal ob es sich um eine Konfigurationsdatei handelt, in der es implementiert werden soll, oder in welcher Form auch immer. Und da es sich um eine .h-Datei handelt, ist sie in der Quelle sichtbar und kann nicht geändert werden.

chx
quelle
7

Um die anderen Antworten zu ergänzen, scheinen sich die Beleidigungen im .rodataAbschnitt von sudoers.so zu befinden. Mit können Sie objcopydie Ausgabe etwas einschränken, obwohl es immer noch viele False Positives geben wird:

$ 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.
$ 
Digitales Trauma
quelle
Wenn Sie viele Fehlalarme tolerieren können, warum nicht einfach stringsstatt verwenden objcopy? :)
Ruslan
@ Ruslan: Es ist schon so objcopy | strings, nur den .rodataAusschnitt des Textsegments zu scannen . Was Fehlalarme reduziert , ist die minimale Stringlänge von der Standard - 4 erhöht bis zu so etwas wie 10: strings -n10. Und leiten Sie in less, nicht head, IMO. Alle Beleidigungen scheinen zusammenhängend zu sein, übrigens.
Peter Cordes
Ah, ich habe den Code nicht gescrollt, um zu sehen, stringswurde er bereits verwendet.
Ruslan