sudo“이 사건이보고 될 것입니다”메시지를 사용자 정의 할 수 있습니까?


20

Linux 또는 BSD 시스템에서 sudo"이 사건이보고됩니다"메시지 를 사용자 정의 할 수 있습니까? 나는 이상 갔어요 man sudoman sudoers우분투 16.04 기계, FreeBSD의 10.2 기계 및 페도라 23 시스템에서, 나는 유용한 아무것도 발견하지 않았습니다.

답변:


31

에서 의 sudoers 수동 아래는 sudo를의 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는 문자열에 의해 발생, 정확히 동일한 크기와 동일한 수의 %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는 널로 끝나는 문자열을 사용하기 때문에 널 문자로 채워서 메시지를 더 짧게 만들 수 있습니다.
Nate Eldredge

@NateEldredge 좋은 지적입니다.
meuh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.