Posso personalizzare il messaggio sudo "Questo incidente verrà segnalato"?


20

È possibile, su Linux o su sistemi BSD, personalizzare il messaggio sudo"Questo incidente verrà segnalato"? Sono andato su man sudoe man sudoerssu una macchina Ubuntu 16.04, un 10,2 macchina FreeBSD, e una macchina Fedora 23, e non ho trovato niente di utile.

Risposte:


31

Dal manuale dei sudatori di seguito è l'unico messaggio che è possibile configurare con la configurazione sudo.

badpass_message="Sorry, try again."

Tuttavia, per rispondere alla tua domanda, sei più che benvenuto a compilare la tua copia di sudo.

Questo sarebbe il messaggio che stai ricevendo.


12
Ah, la bellezza dell'open source. Non ti piace qualcosa? Cambialo tu stesso!
phyrfox,

4
"Cambia sudo!" ma non so come! "sudo cambia sudo!" va bene.
Mehrdad,

14

In un certo senso questo messaggio è già personalizzabile perché, come per molte parti di GNU / Linux, sudoè internazionalizzato e utilizza il gettext supporto del linguaggio nativo per cercare la maggior parte delle stringhe per sostituirle con una versione locale in una lingua diversa.

Ad esempio, puoi vedere qui il file in lingua francese che contiene voci:

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"

Quindi, per cambiare il messaggio devi specificare per quale lingua / locale? e modificare il file NLS appropriato. Tuttavia, l'utente potrebbe non utilizzare un'impostazione internazionale, quindi ciò non avrà alcun effetto.


In alternativa, è possibile utilizzare un editor binario per sostituire la stringa in /usr/libexec/sudo/sudoers.so, in cui si verifica, da una serie di esattamente le stesse dimensioni e con lo stesso numero di %sparametri. Poiché questo non corrisponderà più alla gettexttraduzione, verrà applicato a tutte le versioni locali. Per esempio

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

Utilizzare cmpper assicurarsi di non aver corrotto il file.


Sicuramente possiamo farne una lunghezza diversa ricompilando sudo?
Gerrit,

@gerrit sì, la soluzione migliore sarebbe quella di modificare il sorgente e ricompilare il programma.
Meuh

3
È possibile accorciare il messaggio riempiendo con caratteri nul, poiché C utilizza stringhe nul-terminate.
Nate Eldredge,

@NateEldredge Un buon punto.
Meuh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.