Onde os insultos do sudo são armazenados?

234

Para quem gosta de humor, sudopode ser configurado para imprimir uma frase aleatória, mais ou menos ofensiva ou engraçada, em vez de neutra Sorry, try again., adicionando a linha abaixo a /etc/sudoers(usando o comando sudo visudo, não editando manualmente!):

Defaults insults

aqui estão alguns exemplos:

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

Agora, apenas por diversão, eu gostaria de ler todas elas, mas inserir senhas erradas o dia todo não é realmente o melhor método (atraso após cada tentativa, apenas 2 mensagens por 3 tentativas, abortar após 3 tentativas, ...).

Então ... onde esses insultos são realmente armazenados? Qualquer arquivo de texto simples que eu possa ler diretamente? Ou seqüências codificadas no código fonte?

Como posso obter uma lista de todas as sudomensagens de insulto disponíveis ?

Byte Comandante
fonte

Respostas:

181

Eles estão no arquivo binário

/usr/lib/sudo/sudoers.so

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

Se você habilitar downloads de origem e fazer

apt source sudo

Você pode encontrar os arquivos de insultos no diretório de origem em

plugins/sudoers

Os arquivos são

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

Exemplo de como são esses arquivos:

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

e assim por diante ... eles são bem legíveis.

Zanna
fonte
24
Agora que Zanna nos diz que eles estão no sudoers.so, você também pode "lê-los" usando strings em vez do código-fonte. Execute isto: strings /usr/lib/sudo/sudoers.so
Stéphane
3
@ Stéphane Isso é verdade, embora stringsnão lhe diga se todos os insultos são iguais. A leitura da fonte real pode revelar se certos critérios influenciam a escolha do insulto.
kasperd
3
@ Stéphane Plus executar strings em um executável produz um número tediosamente grande de falsos positivos.
MariusMatutiae 17/10
7
Eu não iria realmente fazer isso até que eu vi Goon Show insultos, altura em que eu não podia chave rápido o suficiente
JamesENL
77

Com

dpkg -L sudo | xargs grep dumber

podemos procurar que os arquivos do pacote de sudoconter a palavra dumber.

A única correspondência está no arquivo /usr/lib/sudo/sudoers.so. Como é um arquivo binário, usamos o stringscomando para obter apenas coisas que parecem legíveis por humanos. Como é bastante, canalizamos o resultado less:

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

Em lesspodemos usar

/dumber

para procurar novamente a palavra "idiota". Isso nos leva diretamente aos insultos. Role para cima e para baixo com as teclas do cursor e saia comq

Florian Diesch
fonte
6
Promovido por mostrar uma técnica geral fácil de descobrir a resposta para esses tipos de perguntas.
200_success 17/10/16
1
Use strings -n10para reduzir falsos positivos. Consulte também a resposta do @ DigitalTrauma, que usa objcopy para alimentar apenas a .rodataseção strings, reduzindo novamente o ruído.
Peter Cordes
76

Lista de todos os insultos

Quando olhamos para todos os insultos, descobrimos um boato interessante: dizer que Brócolis é politicamente correto, mas dizer que Burrito não é. Todos os insultos estão listados abaixo.

ins_2001.h (Insultos no Space Odyssey de 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 (Sudo original 8 insultos):

    /*
     * 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 (Insultos de 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 insultos):

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

O arquivo insults.hcontém instruções do compilador sobre quais dos insultos acima devem ser incluídos no kernel compilado. De fato, você pode criar seu próprio arquivo de insultos, adicionar o nome a insults.he recompilar para ter mensagens como "O que você é um usuário do ArchLinux?" ou "Não é no Windows que erros são comuns!", etc.

Observe o #ifdef PC_INSULTSem alguns dos arquivos de insulto. Isso não significa "se você tem um computador pessoal", significa "se você quer ser politicamente correto".

WinEunuuchs2Unix
fonte
47
Eu não fazia ideia de que "brócolis" era considerado mais politicamente correto que "burrito".
macia
9
@ Fofo Suponho que seja uma referência a pessoas que fazem dieta nacional, incluindo o burrito. Agora lamento não censurar o código. Eu deveria ter usado apenas as opções PC_INSULT e excluído a outra metade. Por outro lado, não gosto de censura da história, como aconteceu com Tom Sawyer e livros assim. Como esses insultos são de 2004, eu seria culpado de censurar a história se removesse as seções #ifdef.
WinEunuuchs2Unix 15/10
7
Não se preocupe muito com "censurar a história" ao falar sobre quais termos devemos usar agora. Posso pensar em muitas palavras que usei há 40 anos que eram racistas, sexistas etc. Estou feliz em me referir a elas em seu contexto histórico, mas graças a Deus a sociedade avançou e reconheceu o dano em muitos desses termos. . Sim, por favor, discuta politicamente correto, se quiser. Tente estar em uma minoria pobre ferida por palavras primeiro, por favor.
Michael Durrant
4
Não há fim para a correção do PC. Qualquer palavra pode ser considerada ofensiva, e o brócolis não seria um PC no Peru, por exemplo ... O burrito é uma evidência racial evidente.
Shautieh 17/10/16
17
A maioria das pessoas fora dos EUA e provavelmente algumas nos EUA não considerariam isso "uma evidente ofensa racial". Para mim, é engraçado que quem escreveu essa lista de insultos deliberados (esse é o nome do recurso!) Realmente se importou com pessoas específicas ficando realmente ofendidas ... não há fim para isso e, se você estiver realmente preocupado, não ative esse recurso ...?!
riso
11

As respostas acima são ótimas para pesquisa offline. Mas estamos online. Então abra a pesquisa de código Debian e tente um dos insultos aqui . Ele imediatamente lhe diz que é no sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Isso tem a vantagem de encontrá-lo em qualquer lugar, seja um arquivo de configuração a ser implantado /etcou o que for. E como é um arquivo .h, é visível que está na fonte e não em algo que você possa modificar.

chx
fonte
7

Para adicionar às outras respostas, os insultos parecem estar na .rodataseção sudoers.so. Você pode usar objcopypara restringir um pouco a saída, embora ainda haja muitos falsos positivos:

$ 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.
$ 
Trauma Digital
fonte
Se você pode tolerar muitos falsos positivos, por que não usar apenas em stringsvez de objcopy? :)
Ruslan
@Ruslan: Já é objcopy | strings, apenas para digitalizar a .rodataseção do segmento de texto. O que reduz os falsos positivos é aumentar o comprimento mínimo corda do padrão 4-se a algo como 10: strings -n10. E tubulação para less, não head, IMO. Todos os insultos parecem contíguos, aliás.
Peter Cordes
Ah, eu não rolei o código, para ver stringsjá estava sendo usado.
Ruslan #