Gdzie przechowywane są zniewagi sudo?

234

Dla tych, którzy lubią humor, sudomożna skonfigurować drukowanie losowej mniej lub bardziej obraźliwej lub śmiesznej frazy zamiast neutralnej Sorry, try again., dodając poniższy wiersz do /etc/sudoers(używając polecenia sudo visudo, nie edytując ręcznie!):

Defaults insults

Oto kilka przykładów:

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

Teraz dla zabawy chciałbym je wszystkie przeczytać, ale wpisywanie niewłaściwych haseł przez cały dzień nie jest tak naprawdę najlepszą metodą (opóźnienie po każdej próbie, tylko 2 wiadomości na 3 próby, przerwanie po 3 próbach ...).

Więc ... gdzie faktycznie są przechowywane te obelgi? Jakiś plik tekstowy, który mogę bezpośrednio odczytać? Lub na stałe napisane w kodzie źródłowym?

Jak mogę uzyskać listę wszystkich dostępnych sudowiadomości obrażających?

Bajt Dowódca
źródło

Odpowiedzi:

180

Są w pliku binarnym

/usr/lib/sudo/sudoers.so

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

Jeśli włączysz pobieranie źródłowe i zrobisz to

apt source sudo

Pliki obelg można znaleźć w katalogu źródłowym pod

plugins/sudoers

Pliki są

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

Przykładowy wygląd tych plików:

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

i tak dalej ... są dość czytelne.

Zanna
źródło
24
Teraz, gdy Zanna mówi nam, że są w sudoers.so, możesz także „czytać” je za pomocą ciągów zamiast kodu źródłowego. Uruchom to: strings /usr/lib/sudo/sudoers.so
Stéphane,
3
@ Stéphane To prawda, ale stringsnie powie ci, czy wszystkie obelgi są równe. Czytanie rzeczywistego źródła może ujawnić, czy pewne kryteria wpływają na wybór zniewagi.
kasperd
3
@ Ciągi znaków uruchomione w pliku wykonywalnym Stéphane Plus generują żmudną liczbę fałszywych alarmów.
MariusMatutiae
7
Nie zamierzałem tego robić, dopóki nie zobaczyłem obelg Goon Show, w którym to momencie nie mogłem wystarczająco szybko wprowadzić klucza
JamesENL
77

Z

dpkg -L sudo | xargs grep dumber

możemy wyszukać, które pliki z pakietu sudozawierają słowo dumber.

Jedyne dopasowanie znajduje się w pliku /usr/lib/sudo/sudoers.so. Jest to plik binarny, więc używamy tego stringspolecenia, aby uzyskać tylko to, co wygląda na czytelne dla człowieka. Ponieważ jest wiele, dzielimy wynik na less:

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

W lessmożemy użyć

/dumber

ponownie wyszukać słowo „głupszy”. To prowadzi nas bezpośrednio do obelg. Przewiń w górę i w dół za pomocą klawiszy kursora i wyjdź za pomocąq

Florian Diesch
źródło
6
Wybitny za wykazanie łatwej ogólnej techniki odkrywania odpowiedzi na tego rodzaju pytania.
200_success 17.10.16
1
Służy strings -n10do zmniejszania liczby fałszywych trafień. Zobacz także odpowiedź @ DigitalTrauma, która używa objcopy do zasilania tylko .rodatasekcji strings, ponownie redukując hałas.
Peter Cordes
76

Lista wszystkich zniewag

Kiedy patrzymy na wszystkie obelgi, odkrywamy interesującą ciekawostkę: mówienie brokułów jest poprawne politycznie, ale mówienie Burrito nie. Wszystkie obelgi wymieniono poniżej.

ins_2001.h (2001 Space Odyssey obraża):

.
    /*
     * 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 (Oryginalne obelgi w 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 (Obelgi 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 (Obelgi 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",

Plik insults.hzawiera instrukcje kompilatora, które z powyższych zniewag należy uwzględnić w skompilowanym jądrze. Rzeczywiście, możesz stworzyć swój własny plik zniewag, dodać nazwę do insults.h i ponownie skompilować, aby mieć wiadomości typu „Co, jesteś użytkownikiem ArchLinux?” lub „To nie jest Windows, w którym błędy są powszechne!” itp.

Zwróć uwagę #ifdef PC_INSULTSna niektóre z plików obrażeń. Nie oznacza to „jeśli masz komputer osobisty”, to znaczy „jeśli chcesz być politycznie poprawny”.

WinEunuuchs2Unix
źródło
46
Nie miałem pojęcia, że ​​„brokuły” są uważane za bardziej poprawne politycznie niż „burrito”.
puszysty
9
@fluffy Zakładam, że jest to odniesienie do osób, których narodowa dieta obejmowała burrito. Teraz żałuję, że nie oceniłem kodu. Powinienem był użyć tylko opcji PC_INSULT i usunąć drugą połowę. Z drugiej strony nie lubię cenzury historii, jak to się stało z Tomem Sawyerem i takimi książkami. Ponieważ te obelgi pochodzą z 2004 roku, byłbym winny historii cenzury, gdybym usunął sekcje #ifdef.
WinEunuuchs2Unix
7
Nie martw się zbytnio o „historię cenzury”, kiedy mówimy o tym, jakich terminów powinniśmy używać teraz. Mogę wymyślić wiele słów, które stosowałem 40 lat temu, które były obraźliwe rasistowskie, seksistowskie itp. Z przyjemnością odnoszę się do nich w kontekście historycznym, ale dzięki Bogu społeczeństwo posunęło się naprzód i rozpoznało szkodę w wielu z tych terminów . Tak, proszę, jeśli chcesz, rant na temat poprawności politycznej. Najpierw spróbuj znaleźć się w biednej mniejszości zranionej słowami.
Michael Durrant
4
Poprawność komputera nie ma końca. Każde słowo można uznać za obraźliwe, a brokuły nie byłyby na przykład PC w Peru ... Burrito jest jednak ewidentną rasistowską obelgą.
Shautieh
17
Większość ludzi spoza USA i prawdopodobnie niektórzy w USA nie postrzegaliby tego jako „ewidentnej rasistowskiej obelgi”. Dla mnie to zabawne, że ktokolwiek napisał tę listę umyślnych obelg (taka jest nazwa funkcji!), Tak naprawdę troszczył się o to, by ludzie byli naprawdę obrażani ... nie ma końca, a jeśli naprawdę się martwisz, nie włączaj tej funkcji ...?!
śmiech
11

Powyższe odpowiedzi świetnie nadają się do wyszukiwania offline. Ale jesteśmy online. Więc otwórz wyszukiwanie kodu Debiana i wypróbuj jedną z obelg tutaj . Od razu mówi ci, że jest w środku sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Ma to tę zaletę, że można go znaleźć wszędzie,/etc niezależnie od tego, czy jest to plik konfiguracyjny do wdrożenia, czy cokolwiek innego. A ponieważ jest to plik .h, jest widoczny w źródle i nie można go modyfikować.

chx
źródło
7

Aby dodać do innych odpowiedzi, zniewagi wydają się znajdować w .rodatasekcji sudoers.so. Możesz użyć, objcopyaby nieco ograniczyć wynik, chociaż nadal będzie wiele fałszywych trafień:

$ 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.
$ 
Cyfrowa trauma
źródło
Jeśli możesz tolerować wiele fałszywych trafień, dlaczego nie użyć stringszamiast tego objcopy? :)
Ruslan
@ Ruslan: Już jest objcopy | strings, aby skanować tylko .rodatafragment segmentu tekstowego. Co zmniejsza liczbę fałszywych alarmów jest zwiększenie minimalnej długości strun z domyślnie 4 do czegoś jak 10: strings -n10. I rura na lessnie head, IMO. Wszystkie obelgi wydają się być ciągłe, BTW.
Peter Cordes
Ach, nie przewijałem kodu, żeby zobaczyć, że stringszostał już użyty.
Ruslan