sudoの「このインシデントが報告されます」メッセージをカスタマイズできますか?


20

LinuxまたはBSDシステムで、sudo「このインシデントが報告されます」メッセージをカスタマイズすることは可能ですか?私が上で行ってきたman sudoman sudoersのUbuntu 16.04マシン、FreeBSDの10.2機械、とFedora 23のマシン上で、私は有益な何かを発見していません。

回答:


31

以下のSudoers Manualから、sudo confを使用して設定できるメッセージが唯一です。

badpass_message="Sorry, try again."

ただし、質問に答えるために、sudoの独自のコピーをコンパイルすることを歓迎します。

これはあなたが得ているメッセージでしょう。


12
ああ、オープンソースの美しさ。何か好きじゃない?自分で変更してください!
phyrfox

4
「変更sudo!」しかし、私は方法がわかりません!「sudo change sudo!」はい。
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、が発生する場所の文字列を、まったく同じサイズで同じ数の%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ファイルが破損していないことを確認するために使用します。


確かに、sudoを再コンパイルすることで、長さを変えることができますか?
gerrit

@gerritはい、ソースを編集してプログラムを再コンパイルするのが最善の解決策です。
-meuh

3
CはNULで終わる文字列を使用するため、NUL文字でパディングすることでメッセージを短くすることができます。
ネイト・エルドリッジ

@NateEldredge良い点。
-meuh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.