come essere avvisato se il terminale ha i privilegi di sudo e mostra anche quanto tempo è rimasto?


10

Come vedere nel terminale che hai i privilegi di sudo? (quindi sapendo che ho questi privilegi, posso solo digitare sudo -k) Sarebbe meglio non aggiungere troppe informazioni anche al terminale, solo una sorta di avviso semplice e piccolo!

IL TEMPO RIMANENTE È IMPOSSIBILE, giusto?

Inoltre, come vedere quanto tempo ho ancora con quei privilegi su quel terminale specifico? (quindi posso solo lasciarlo finire invece di digitare sudo -k). Penso che il tempo rimanente possa apparire ogni volta che premo il tasto Invio.

EDIT: ho studiato di più e ho scoperto che /var/lib/sudo/$USER/$nPts(dove $ nPts è attuale pts terminale a partire da ps -p $$) ha il suo timestamp aggiornato ogni volta che viene emesso un comando sudo, ed è accessibile solo se si utilizza un comando sudo, quindi il tempo rimanente sarà sempre il configurato uno ...

PS .: In alternativa, ho provato, alias sudo='sudo -k'ma non mi piace dover digitare la password per ogni comando ... E anche questo alias sudos='sudo -k'(o alias ssudo='sudo -k', bene se hai digitato una linea lunga, premi Home e digita 's') funziona se desidera emettere un solo comando digitando sudos. Ma mi manca ancora sapere quando ho i normali privilegi di sudo per sapere che devo agire ...


2
Perché è stato votato in negativo? Anche se questo non è il post più chiaro, la domanda sul titolo mi sembra ancora una domanda valida (e una domanda piuttosto utile, a questo)
DaimyoKirby

potresti dire cosa potrebbe essere chiarito? il mio post iniziale inedito era 3 volte più grande e l'ho cancellato molto per renderlo più conciso :)
Aquarius Power

Penso che fosse solo tardi - l'ho riletto e ha più senso.
DaimyoKirby,

Risposte:


5

[Vorrei ancora sapere se esiste una risposta migliore.]

Ho trovato un modo che funziona e il prompt verrà mantenuto su una sola riga:

alla fine ~/.bashrcaggiungi questo:

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

EDIT: ho scoperto che sudo -n uptimeaggiornerà il timeout di sudo, quindi ogni volta che premi il tasto Invio, quel tempo di sudo verrà aggiornato ... Ciò rende inutile conoscere il tempo rimanente, in quanto sarà sempre quello configurato, per impostazione predefinita a 15min .. .

e per trovare la migliore formattazione dei colori secondo i tuoi gusti puoi usare ScriptEchoColor con --escapedcharsopzioni come:

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

per fermare il lampeggio rimuovi \E[5mcome in\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

Il tuo terminale non "ha i privilegi di sudo", a meno che tu non faccia qualcosa di stupido come sudo bash NON FARE QUESTO!

Tutto quello che devi fare per "avere i normali privilegi di sudo" è astenermi dal digitare sudodavanti al comando.

/usr/bin/idè un buon modo per vedere cosa sudofa. Per esempio:

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

La sudopagina man dice "La politica dei sudoers memorizza nella cache le credenziali per 15 minuti, a meno che non venga sovrascritta nei sudoers (5)". Ciò significa che, per impostazione predefinita, se si sudoimmette un comando (e si immette la password), quindi si attende 14,9 minuti prima di eseguire un secondo sudocomando, non sarà necessario immettere nuovamente la password. Se aspetti 15,1 minuti, dovrai inserire nuovamente la password. sudo -kscade semplicemente il timer da 15 minuti immediatamente. L'unico uso che posso vedere sudo -kè se stai per cedere il tuo terminale sbloccato a qualcuno di cui non ti fidi UID 0.


Hai detto "astenersi dal digitare sudodavanti al comando". Ma se voglio controllare le mie regole del firewall con iptables -Lesso non funzionerà se non scrivo sudo iptables -L. Il mio punto è, come possiamo effettivamente evitare di usare sudo?
Aquarius Power

Inoltre, circa il tempo rimanente, voglio sapere quanto tempo rimane ogni volta che premo il tasto Invio sul terminale. A proposito sudo -k, sono preoccupato per i cracker che provano ad accedere in remoto alla mia macchina (non so davvero se possono farlo comunque ...), o nel caso in cui lascio la mia macchina aperta senza bloccarla per qualche istante ... beh, il vero punto è che: voglio farlo in questo modo! Non mi interessa dover digitare sudo -knuovamente e la password più tardi quante volte ho bisogno, mi sento bene quando lo faccio in questo modo! :)
Aquarius Power,

"Evita di usare sudo"? Sudo era la soluzione per distribuire la password di root, rendere binari setuid o usare /bin/su. Sei sicuro di voler scartarlo? "Accedi in remoto alla mia macchina ..." e, suppongo, prendi il controllo /proc/YourPID/fd/{0,1,2}. No. Se si accede in remoto alla propria macchina, il Cattivo ha modi più facili di UID 0. Dovresti aumentare il tuo Linux-foo prima di questo livello di preoccupazione.
Waltinator,

Ci scusiamo per il rant, sembra che dovresti alias k=/usr/bin/sudo -k, sostituire il sudocomando con una funzione alias o bash che avvolge la chiamata /usr/bin/sudocon /usr/bin/touch $HOME/tmp/$$/sudotimee, infine, aggiungere qualcosa per stampare $ {{time (now) - time ($ HOME / tmp / $ $ / sudotime))) nel prompt di Bash. Non banale, ma se ti farà stare bene, provaci.
Waltinator,

questo è interessante, registrerei anche quando si è verificato il tentativo, o ancora meglio, arrestare qualsiasi comunicazione di rete, bello! ma anche se mi nascondo sudocon un alias a qualsiasi parola casuale, potrebbero comunque digitare /usr/bin/sudoinvece sudoche funzionerebbe come sudo :(. Comunque mi piace l'idea .. Mi chiedo se cambio il reale /usr/bin/sudosi romperà qualcosa di diverso da tutti i miei script che lo usano .. anche se lo facessi, potrebbero, leggendo gli script, indovinare cosa è diventato sudo ..
Aquarius Power
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.