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

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

是否可以在 Linux 或 BSD 系统上自定义sudo“将报告此事件”消息?我已经检查过man sudoUbuntu man sudoers16.04 机器、FreeBSD 10.2 机器和 Fedora 23 机器,但没有发现任何有用的东西。

答案1

苏多尔手册以下是您可以使用 sudo conf 配置的唯一消息。

badpass_message="Sorry, try again."

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

将是您收到的消息。

答案2

从某种意义上说,这条消息已经是可定制的,因为对于 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为字符串确切地相同的大小和相同数量的%s参数。由于这将不再与gettext翻译匹配,因此它将适用于所有语言环境。例如

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确保您没有损坏文件。

相关内容