Де зберігаються образи судо?


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повідомлень про образи?

Відповіді:


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
Тепер, коли Занна каже нам, що вони знаходяться в sudoers.so, ви також можете "прочитати" їх, використовуючи рядки замість вихідного коду. Виконати це: strings /usr/lib/sudo/sudoers.so
Стефан

3
@ Stéphane Це правда, хоча stringsне скаже, чи всі образи рівні. Читання власне джерела може виявити, чи впливають певні критерії на вибір образи.
kasperd

3
@ Stéphane Plus, що виконує рядки на виконуваному файлі, створює неприємно велику кількість помилкових позитивів.
MariusMatutiae


7
Я насправді цього не збирався робити, поки не побачив образи на Goon Show, і тоді я не міг достатньо швидко натиснути клавішу
JamesENL

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деякі файли з образами. Це не означає, "якщо у вас персональний комп'ютер", це означає, "якщо ви хочете бути політично коректними".


46
Я не мав уявлення, що "брокколі" вважається політично правильнішою, ніж "буріто".
пухнастий

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він уже використаний.
Руслан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.