我可以自定义sudo“将报告此事件”消息吗?


20

在Linux或BSD系统上,是否可以自定义sudo“将报告此事件”消息?我已经在man sudoman sudoers一个Ubuntu 16.04的机器,一台FreeBSD 10.2机器,并在Fedora 23的机器上,我还没有发现任何有用的东西。

Answers:


31

sudoers的手册下面是你被允许与须藤的conf配置的唯一消息。

badpass_message="Sorry, try again."

但是,要回答您的问题,我们非常欢迎您编译自己的sudo副本。

就是您得到的信息。


12
啊,开源之美。不喜欢什么?自己改变!
phyrfox

4
“换须藤!” 但是我不知道怎么做!“须藤换须藤!” 好的。
Mehrdad

14

从某种意义上说,该消息已经可以自定义了,因为在GNU / Linux的许多部分中,该消息已经sudo国际化,并且使用本gettext 机语言支持来查找大多数字符串,以使用其他语言的语言环境版本替换它们。

例如,您可以在此处看到包含条目的法语文件:

msgid "%s is not in the sudoers file.  This incident will be reported.\n"
msgstr "%s n'apparaît pas dans le fichier sudoers. Cet événement sera signalé.\n"

msgid "%s is not allowed to run sudo on %s.  This incident will be reported.\n"
msgstr "%s n'est pas autorisé à exécuter sudo sur %s. Cet événement sera signalé.\n"

因此,要更改消息,您需要指定哪种语言/地区?并编辑适当的NLS文件。但是,用户可能没有使用语言环境,因此这将无效。


另外,您也可以使用二进制编辑器,以大小完全相同且参数数量相同的字符串替换/usr/libexec/sudo/sudoers.so出现的字符串。由于这将不再与翻译匹配,因此将适用于所有语言环境。例如%sgettext

sed < /usr/libexec/sudo/sudoers.so 's/This incident will be reported/This incident WILL BE REPORTED/' >/tmp/sudoers.so
cmp -l /usr/libexec/sudo/sudoers.so /tmp/sudoers.so

使用cmp,以确保你有没有损坏的文件。


当然可以通过重新编译sudo使其长度不同吗?
Gerrit '16

@gerrit是的,最好的解决方案是编辑源代码并重新编译程序。

3
您可以通过使用nul字符填充来使消息更短,因为C使用nul终止的字符串。
Nate Eldredge

@NateEldredge好点。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.