Могу ли я настроить сообщение sudo «об этом инциденте будет сообщено»?

20

Возможно ли в Linux или в системах BSD настроить сообщение sudo«об этом инциденте будет сообщено»? Я перешел man sudoи man sudoersна 16,04 машины Ubuntu, в FreeBSD 10.2 машине, и Fedora 23 машину, и я ничего полезного не нашел.

Жюль
источник

Ответы:

31

Из Руководства Sudoers ниже приведено единственное сообщение, которое вам разрешено настраивать с помощью sudo conf.

badpass_message="Sorry, try again."

Однако, чтобы ответить на ваш вопрос, вы можете скомпилировать свою собственную копию sudo.

Это будет сообщение, которое вы получаете.

Рахул
источник
12
Ах, красота открытого источника. Не нравится что-то? Измени это сам!
phyrfox
4
"Измени судо!" но я не знаю как! "sudo изменить sudo!" Хорошо.
Мердад
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которой она находится, строкой точно такого же размера и с таким же количеством %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чтобы убедиться, что вы не повредили файл.

meuh
источник
Конечно, мы можем сделать его другой длины, перекомпилировав sudo?
gerrit
@gerrit да, лучшим решением было бы отредактировать исходный код и перекомпилировать программу.
Мей
3
Вы можете сделать сообщение короче, заполнив его нулевыми символами, поскольку C использует строки с нулевым символом в конце.
Нейт Элдридж
@NateEldredge Хороший вопрос.
Меу