Где хранятся оскорбления Судо?

234

Для тех, кто любит юмор, sudoможно настроить печать случайной более или менее оскорбительной или смешной фразы вместо нейтральной Sorry, try again., добавив строку ниже в /etc/sudoers(с помощью команды sudo visudo, не редактируя вручную!):

Defaults insults

Вот некоторые примеры:

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

Теперь просто для удовольствия я хотел бы прочитать их все, но ввод неправильных паролей в течение всего дня - не лучший способ (задержка после каждой попытки, только 2 сообщения на 3 попытки, прерывание после 3 попыток, ...).

Итак ... где на самом деле хранятся эти оскорбления? Любой простой текстовый файл, который я могу читать напрямую? Или жестко закодированные строки в исходном коде?

Как я могу получить список всех доступных sudoоскорбительных сообщений?

Byte Commander
источник

Ответы:

181

Они находятся в двоичном файле

/usr/lib/sudo/sudoers.so

(найдено: find /usr/lib/sudo -type f | xargs grep "fallen in the water")

Если вы включаете исходные загрузки и делаете

apt source sudo

Вы можете найти оскорбительные файлы в исходном каталоге

plugins/sudoers

Файлы

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

Пример того, как выглядят эти файлы:

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

и так далее ... они вполне читабельны.

Занна
источник
24
Теперь, когда Zanna сообщает нам, что они находятся в sudoers.so, вы также можете «читать» их, используя строки вместо исходного кода. Запустите это: strings /usr/lib/sudo/sudoers.so
Стефан
3
@ Stéphane Это правда, но stringsне скажу, равны ли все оскорбления. Чтение фактического источника может показать, влияют ли определенные критерии на выбор оскорбления.
Касперд
3
@ Stéphane Plus Запуск строк в исполняемом файле приводит к утомительно большому количеству ложных срабатываний.
MariusMatutiae
7
Я не собирался делать это до тех пор, пока не увидел оскорбления Goon Show, после чего я не смог
набрать
77

С участием

dpkg -L sudo | xargs grep dumber

мы можем искать, какие файлы из пакета sudoсодержат слово dumber.

Единственное совпадение в файле /usr/lib/sudo/sudoers.so. Это двоичный файл, поэтому мы используем stringsкоманду, чтобы получить только то, что выглядит читабельно. Поскольку это много, мы направляем результат в less:

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

В lessмы можем использовать

/dumber

искать снова слово «тупее». Это приводит нас прямо к оскорблениям. Прокрутите вверх и вниз клавишами курсора и выйдите сq

Флориан Диш
источник
6
Проголосовал за демонстрацию простой общей техники, чтобы найти ответ на такие вопросы.
200_успех
1
Используйте strings -n10для уменьшения ложных срабатываний. См. Также ответ @ DigitalTrauma, в котором используется objcopy для подачи только .rodataраздела strings, снова уменьшая шум.
Питер Кордес
76

Список всех оскорблений

Когда мы смотрим на все оскорбления, мы обнаруживаем интересную новость: говорить, что брокколи является политкорректным, а говорить о буррито - нет. Все оскорбления перечислены ниже.

ins_2001.h (2001 Космическая Одиссея оскорбляет):

.
    /*
     * 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 (Оригинальный Судо 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 (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 оскорбления):

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

Файл insults.hсодержит инструкции компилятора о том, какие из вышеперечисленных оскорблений включить в скомпилированное ядро. В самом деле, вы можете создать свой собственный файл оскорблений, добавить имя в insults.h и перекомпилировать, чтобы получить такие сообщения, как "Что, вы пользователь ArchLinux?" или «Это не Windows, где ошибки обычны!» и т. д.

Обратите внимание на #ifdef PC_INSULTSнекоторые из оскорбительных файлов. Это не означает «если у вас есть персональный компьютер», это означает «если вы хотите быть политкорректным».

WinEunuuchs2Unix
источник
47
Я понятия не имел, что «брокколи» считается более политкорректным, чем «буррито».
пушистый
9
@ fluffy Я предполагаю, что это ссылка на людей, чья национальная диета включает буррито. Теперь я сожалею, что не подверг цензуре код. Я должен был использовать только параметры PC_INSULT и удалить другую половину. С другой стороны, я не люблю цензуру истории, как это случилось с Томом Сойером и такими книгами. Поскольку эти оскорбления относятся к 2004 году, я был бы виновен в цензуре истории, если бы удалил разделы #ifdef.
WinEunuuchs2Unix
7
Не беспокойтесь о «цензуре истории», когда говорите о том, какие термины мы должны использовать сейчас. Я могу вспомнить много много слов, которые я использовал 40 лет назад, которые были оскорбительными по расовому признаку, сексистскими и т. Д. Я рад упомянуть их в их историческом контексте, но, слава богу, общество продвинулось вперед и признало вред во многих из этих терминов. , Да, пожалуйста, рассуждайте о политкорректных, если хотите. Попытайтесь быть в бедном меньшинстве, обиженном словами сначала, пожалуйста.
Майкл Даррант
4
Нет предела правильности ПК. Любое слово может считаться оскорбительным, и брокколи не будет, например, ПК в Перу ... Хотя буррито - явное расовое пятно.
Shautieh
17
Большинство людей за пределами США и, возможно, некоторые в США не воспримут это как «явное расовое пятно». Для меня забавно, что кто бы ни написал этот список преднамеренных оскорблений (это название функции!), Он на самом деле заботился о том, чтобы конкретные люди действительно обиделись ... этому нет конца, и если вы действительно обеспокоены, не включайте эту функцию ...?!
смеяться
11

Приведенные выше ответы отлично подходят для автономного поиска. Но мы в сети. Так что откройте поиск кода Debian и попробуйте одно из оскорблений здесь . Он сразу же говорит вам , что в sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Это имеет преимущество в том, что его можно найти везде, будь то файл конфигурации для развертывания /etcили что-то еще. И поскольку это файл .h, он виден в исходном коде, а не в том, что вы можете изменить.

СНХ
источник
7

Чтобы добавить к другим ответам, оскорбления, кажется, находятся в .rodataразделе sudoers.so. Вы можете использовать, objcopyчтобы несколько ограничить вывод, хотя по-прежнему будет много ложных срабатываний:

$ 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.
$ 
Цифровая травма
источник
Если вы можете терпеть много ложных срабатываний, почему бы просто не использовать stringsвместо objcopy? :)
Руслан
@Ruslan: Это уже есть objcopy | strings, чтобы сканировать только .rodataчасть текстового сегмента. Что снижает количество ложных срабатываний является повышение минимальной длины строки от значения по умолчанию 4 до чего - то вроде 10: strings -n10. И труба less, а не headИМО. Все оскорбления кажутся смежными, кстати.
Питер Кордес
Ах, я не прокручивал код, чтобы увидеть, что stringsон уже был использован.
Руслан