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


Для тех, кто любит юмор, 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 оскорбительные сообщения?


225
2017-10-15 18:25


происхождения




ответы:


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

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

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


173
2017-10-15 18:34



Теперь, когда Zanna говорит нам, что они находятся в sudoers.so, вы также можете «читать» их, используя строки вместо исходного кода. Запустите это: strings /usr/lib/sudo/sudoers.so - Stéphane
@ Stéphane Это правда, хотя strings не скажет вам, все ли оскорбления равны. Чтение фактического источника может показать, влияют ли определенные критерии на выбор оскорбления. - kasperd
@ Stéphane Plus работает строки на исполняемый файл производит утомительно большое количество ложных срабатываний. - MariusMatutiae
ins_2001.h  ins_classic.h  ins_csops.h  ins_goons.h - Matt
Я не собирался на самом деле делать это, пока не увидел оскорбления Goon Show, после чего я не мог быстро зайти - JamesENL


С

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


75
2017-10-15 18:55



Приобретен для демонстрации простой общей техники, чтобы найти ответ на эти вопросы. - 200_success
использование strings -n10 для уменьшения ложных срабатываний. Смотрите также @ Ответ DigitalTrauma который использует objcopy для подачи только .rodata раздел в strings, снова уменьшая шум. - Peter Cordes


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

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

ins_2001.h (Оскорбления 2001 года 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 (Исходные Судо 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 в некоторых файлах оскорблений. Это не означает, что «если у вас есть персональный компьютер», это означает «если вы хотите быть политически корректным».


72
2017-10-15 20:22



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


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


11
2017-10-18 23:49





Чтобы добавить к другим ответам, оскорбления оказываются в .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.
$ 

7
2017-10-17 23:48



Если вы можете терпеть множество ложных срабатываний, почему бы просто не использовать strings вместо objcopy? :) - Ruslan
@Ruslan: Это уже objcopy | strings, только для сканирования .rodata раздел текстового сегмента. То, что уменьшает ложные срабатывания, увеличивает минимальную длину строки от значения по умолчанию 4 до примерно 10: strings -n10, И труба в less, а не head, ИМО. Все оскорбления кажутся смежными, кстати. - Peter Cordes
Ах, я не прокрутил код, чтобы увидеть strings был уже использован. - Ruslan