Question Où sont stockées les insultes de sudo?


Pour ceux qui aiment l'humour, sudo peut être configuré pour imprimer une phrase aléatoire plus ou moins insultante ou drôle au lieu du neutre Sorry, try again. en ajoutant la ligne ci-dessous à /etc/sudoers (en utilisant la commande sudo visudo, ne pas éditer manuellement!):

Defaults insults

Voici quelques exemples:

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

Maintenant, juste pour le plaisir, je voudrais les lire tous, mais la saisie de mauvais mots de passe toute la journée n’est pas vraiment la meilleure méthode (délai après chaque tentative, seulement 2 messages par 3 tentatives, abandon après 3 tentatives, ...).

Alors ... où sont stockées ces insultes? Tout fichier texte que je peux lire directement? Ou des chaînes codées en dur dans le code source?

Comment puis-je obtenir une liste de tous les disponibles sudo insulter les messages?


225
2017-10-15 18:25


origine




Réponses:


Ils sont dans le fichier binaire

/usr/lib/sudo/sudoers.so

(Trouvé par: find /usr/lib/sudo -type f | xargs grep "fallen in the water")

Si vous activez les téléchargements de sources et faites

apt source sudo

Vous pouvez trouver les fichiers d'insultes dans le répertoire source sous

plugins/sudoers

Les fichiers sont

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

Exemple de ce à quoi ces fichiers ressemblent:

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

et ainsi de suite ... ils sont tout à fait lisibles.


173
2017-10-15 18:34



Maintenant que Zanna nous dit qu'ils sont dans sudoers.so, vous pouvez aussi les "lire" en utilisant des chaînes au lieu du code source. Lance ça: strings /usr/lib/sudo/sudoers.so - Stéphane
@ Stéphane C'est vrai strings ne vous dira pas si toutes les insultes sont égales. La lecture de la source réelle pourrait révéler si certains critères influencent le choix de l'insulte. - kasperd
@ Stéphane Plus en cours d'exécution des cordes sur un exécutable produit un nombre fastidieusement élevé de faux positifs. - MariusMatutiae
ins_2001.h  ins_classic.h  ins_csops.h  ins_goons.h - Matt
Je n'allais pas le faire avant d'avoir vu les insultes de Goon Show, à quel point je ne pouvais pas taper assez vite - JamesENL


Avec

dpkg -L sudo | xargs grep dumber

nous pouvons rechercher quels fichiers du paquet sudo contenir le mot dumber.

La seule correspondance est dans le fichier /usr/lib/sudo/sudoers.so. Ceci est un fichier binaire donc nous utilisons le strings commande pour obtenir seulement des choses qui semblent être lisibles par l'homme. Comme il y a beaucoup, nous conduisons le résultat dans less:

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

Dans less on peut utiliser

/dumber

chercher à nouveau le mot "dumber". Cela nous amène directement dans les insultes. Faites défiler vers le haut et le bas avec les touches fléchées et quittez avec q


75
2017-10-15 18:55



Encouragé pour montrer une technique générale facile pour découvrir la réponse à ce genre de questions. - 200_success
Utilisation strings -n10 pour réduire les faux positifs. Voir également @ La réponse de DigitalTrauma qui utilise objcopy pour alimenter uniquement le .rodata section dans strings, réduisant encore le bruit. - Peter Cordes


Liste de toutes les insultes

Lorsque nous regardons toutes les insultes, nous découvrons une nouveauté intéressante: dire que le brocoli est politiquement correct, mais dire que le burrito ne l'est pas. Toutes les insultes sont listées ci-dessous.

ins_2001.h (Insultes 2001 Odyssée de l'espace):

.
    /*
     * 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 (Original Sudo 8 insultes):

    /*
     * 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 (Insultes 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 (Insultes du spectacle de Goon):

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

Le fichier insults.h contient des instructions de compilation sur les insultes ci-dessus à inclure dans le noyau compilé. En effet, vous pouvez créer votre propre fichier d'insultes, ajouter le nom à insults.h et le recompiler pour avoir des messages comme "Quoi, êtes-vous un utilisateur ArchLinux?" ou "Ce n'est pas Windows où les erreurs sont monnaie courante!", etc.

Notez le #ifdef PC_INSULTS dans certains fichiers d'insultes. Cela ne signifie pas "si vous avez un ordinateur personnel", cela signifie "si vous voulez être politiquement correct".


72
2017-10-15 20:22



Je n'avais aucune idée que le "brocoli" était considéré plus politiquement correct que le "burrito". - fluffy
@ Fluffy Je suppose que c'est une référence aux personnes dont le régime alimentaire national comprend des burritos. Je regrette maintenant de ne pas censurer le code. Je n'aurais dû utiliser que les options PC_INSULT et supprimer l'autre moitié. D'un autre côté, je n'aime pas la censure de l'histoire comme cela s'est produit avec Tom Sawyer et des livres comme celui-là. Comme ces insultes datent de 2004, je serais coupable de censurer l’histoire si j’avais supprimé les sections #ifdef. - WinEunuuchs2Unix
Ne vous inquiétez pas trop de la "censure de l'histoire" lorsque vous parlez des termes que nous devrions utiliser maintenant. Je peux penser à beaucoup de mots que j'ai utilisés il y a 40 ans et qui étaient insultants, sexistes, etc. sur le plan racial. Je suis heureux de me référer à eux dans leur contexte historique, mais grâce à la société . Oui, s'il vous plait, rancez-vous politiquement si vous voulez. Essayez d'être dans une minorité pauvre blessée par les mots d'abord s'il vous plaît. - Michael Durrant
Il n'y a pas de fin à l'exactitude du PC. N'importe quel mot peut être considéré comme offensant, et le brocoli ne serait pas un PC au Pérou, par exemple ... Le burrito est une insulte raciale évidente. - Shautieh
La plupart des gens en dehors des États-Unis et probablement des États-Unis ne considéreraient pas cela comme une "insulte raciale évidente". Pour moi, c'est drôle que quiconque a écrit cette liste de délibéré les insultes (c'est le nom de la fonctionnalité!) En fait, certaines personnes se sentent vraiment offensées ... il n'y a pas de fin, et si vous êtes vraiment concerné, n'activez pas cette fonctionnalité ...?! - laugh


Les réponses ci-dessus sont idéales pour la recherche hors ligne. Mais nous sommes en ligne. Donc ouvert Recherche de code Debian et essayez l'une des insultes ici . Il vous dit instantanément que c'est dans sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Cela a l'avantage de le trouver partout que ce soit un fichier de configuration à déployer dans /etc ou peu importe. Et comme c'est un fichier .h, il est visible dans le source et non pas modifiable.


11
2017-10-18 23:49





Pour ajouter aux autres réponses, les insultes semblent être dans le .rodata Section de sudoers.so. Vous pouvez utiliser objcopy restreindre quelque peu la sortie, même s'il y aura toujours beaucoup de faux positifs:

$ 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



Si vous pouvez tolérer beaucoup de faux positifs, pourquoi ne pas simplement utiliser strings au lieu de objcopy? :) - Ruslan
@Ruslan: C'est déjà objcopy | strings, pour ne scanner que le .rodata section du segment de texte. Ce qui réduit les faux positifs, c'est d'augmenter la longueur minimale de la chaîne de 4 par défaut à quelque chose comme 10: strings -n10. Et le tuyau dans less, ne pas head, OMI. Toutes les insultes semblent être contiguës, BTW. - Peter Cordes
Ah, je n'ai pas fait défiler le code, pour voir strings était déjà utilisé. - Ruslan