对于那些喜欢幽默的人,可以通过添加以下行(使用命令,而不是手动编辑!)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!
现在只是为了好玩,我想通读所有这些,但是整天输入错误的密码并不是最好的方法(每次尝试后延迟,每 3 次尝试只有 2 条消息,3 次尝试后中止,...)。
那么......这些侮辱实际上存储在哪里?我可以直接读取任何纯文本文件吗?还是源代码中的硬编码字符串?
如何获取所有可用sudo
侮辱消息的列表?
它们在二进制文件中
(发现者
find /usr/lib/sudo -type f | xargs grep "fallen in the water"
:)如果您启用源下载并执行
您可以在以下源目录中找到侮辱文件
这些文件是
这些文件的外观示例:
等等......它们非常易读。
制造自己的侮辱
您可以在不重新编译 sudo 的情况下更改 sudo 侮辱。
请参阅:添加新的 sudo 侮辱
带有侮辱性的头文件
当我们看到所有的侮辱时,我们发现了一个有趣的花絮:说西兰花在政治上是正确的,但说墨西哥卷饼不是。所有的侮辱都在下面列出。
ins_2001.h
(2001 年太空漫游侮辱):ins_classic.h
(原须藤8侮辱):ins_csops.h
(CSOps 侮辱):ins_goons.h
(Goon Show 侮辱):该文件
insults.h
包含编译器指令,说明在编译的 sudo 程序中包含上述哪些侮辱。实际上,您可以创建自己的侮辱文件,将名称添加到侮辱.h 并重新编译以显示诸如“什么,您是 ArchLinux 用户吗?”之类的消息。或“这不是错误司空见惯的 Windows!”等。注意
#ifdef PC_INSULTS
一些侮辱文件中的。这并不意味着“如果你有个人电脑”,而是意味着“如果你想在政治上正确”。列出对您的终端的所有侮辱
对于 Ubuntu 16.04.6 LTS,您可以使用:
对于其他 Ubuntu 版本,传递给
head
command 的行号可能会更改。希望其他人可以验证他们的版本。和
我们可以从包中搜索哪些文件
sudo
包含单词dumber
。唯一的匹配是在 file 中
/usr/lib/sudo/sudoers.so
。这是一个二进制文件,所以我们使用该strings
命令只获取看起来像人类可读的东西。因为它很多,我们将结果输入less
:在
less
我们可以使用再次搜索单词“dumber”。这让我们陷入了侮辱。使用光标键上下滚动并退出q
以上答案非常适合离线搜索。但是我们在线。所以打开Debian 代码搜索并尝试 这里的侮辱之一。它会立即告诉您它在
sudo_1.8.12-1/plugins/sudoers/ins_csops.h
. 这样做的好处是可以在任何地方找到它,无论是要部署的配置文件/etc
还是其他任何东西。因为它是一个 .h 文件,所以它在源代码中是可见的,而不是您可以修改的东西。为了增加其他答案,侮辱似乎在
.rodata
sudoers.so 部分。您可以使用objcopy
来稍微限制输出,尽管仍然会有很多误报: