Wie kann man gewarnt werden, wenn das Terminal über Sudo-Berechtigungen verfügt und wie viel Zeit noch verbleibt?

10

Wie kann man im Terminal sehen, dass Sie über Sudo-Berechtigungen verfügen? (Da ich weiß, dass ich über diese Berechtigungen verfüge, kann ich einfach tippen. sudo -k) Es ist besser, nicht zu viele Informationen in das Terminal einzufügen, sondern nur eine einfache und kleine Warnung!

Verbleibende Zeit ist unmöglich, oder?

Wie kann ich sehen, wie viel Zeit ich noch mit diesen Berechtigungen auf diesem bestimmten Terminal habe? (so kann ich es einfach enden lassen, anstatt zu tippen sudo -k). Ich denke, dass die verbleibende Zeit jedes Mal angezeigt werden kann, wenn ich die Eingabetaste drücke.

BEARBEITEN: Ich habe mehr recherchiert und festgestellt, dass /var/lib/sudo/$USER/$nPts(wobei $ nPts ab dem aktuellen Terminal pts ist ps -p $$) der Zeitstempel jedes Mal aktualisiert wird, wenn ein sudo-Befehl ausgegeben wird. Er ist nur verfügbar, wenn Sie einen sudo-Befehl verwenden. Die verbleibende Zeit ist also immer die konfiguriert ein ...

PS.: Alternativ dazu habe ich es versucht, alias sudo='sudo -k'aber ich mag es nicht, das Passwort für jeden Befehl eingeben zu müssen ... Und auch das alias sudos='sudo -k'(oder alias ssudo='sudo -k', gut, wenn Sie eine lange Zeile eingegeben haben, drücken Sie einfach Home und geben Sie 's' ein), wenn Sie Ich möchte nur einen Befehl durch Eingabe ausgeben sudos. Aber ich vermisse es immer noch zu wissen, wann ich normale Sudo-Privilegien habe, um zu wissen, dass ich handeln muss ...

Wassermann-Kraft
quelle
2
Warum wurde dies abgelehnt? Obwohl dies nicht der klarste Beitrag ist, scheint mir die
Titelfrage
Könnten Sie sagen, was geklärt werden könnte? Mein unbearbeiteter erster Beitrag war dreimal größer und ich habe ihn viel gelöscht, um ihn prägnanter zu gestalten :)
Aquarius Power
Ich denke, es war erst spät - ich habe es noch einmal gelesen und es macht mehr Sinn.
DaimyoKirby

Antworten:

5

[Ich würde immer noch gerne wissen, ob es eine bessere Antwort gibt.]

Ich habe einen Weg gefunden, der funktioniert, und die Eingabeaufforderung wird in einer einzigen Zeile gehalten:

Fügen Sie am Ende Folgendes ~/.bashrchinzu:

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

BEARBEITEN: Ich habe festgestellt, dass sudo -n uptimedas Sudo-Zeitlimit aktualisiert wird. Jedes Mal, wenn Sie die Eingabetaste drücken, wird die Sudo-Zeit aktualisiert. Dadurch ist es nutzlos, die verbleibende Zeit zu kennen, da sie immer die konfigurierte Zeit ist und standardmäßig 15 Minuten beträgt. .

und um die beste Farbformatierung für Ihren Geschmack zu finden, können Sie ScriptEchoColor mit folgenden --escapedcharsOptionen verwenden:

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

um das blinken einfach zu stoppen entfernen \E[5mwie in\E[0m\E[93m\E[41m\E[1m SUDO \E[0m

Wassermann-Kraft
quelle
4

Ihr Terminal hat keine "Sudo-Privilegien", es sei denn, Sie tun etwas Dummes wie sudo bash TUN SIE DAS NICHT!

Alles, was Sie tun müssen, um "normale Sudo-Berechtigungen zu haben", ist, nicht sudovor dem Befehl zu tippen.

/usr/bin/idist ein guter Weg, um zu sehen, was sudotut. Beispielsweise:

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

Auf der sudoManpage heißt es: "Die sudoers-Richtlinie speichert Anmeldeinformationen für 15 Minuten zwischen, sofern sie nicht in sudoers (5) überschrieben werden." Dies bedeutet, dass Sie sudoIhr Kennwort standardmäßig nicht erneut eingeben müssen , wenn Sie einen Befehl eingeben (und Ihr Kennwort eingeben) und dann 14,9 Minuten warten, bevor Sie einen zweiten sudoBefehl eingeben. Wenn Sie 15,1 Minuten warten, müssen Sie das Passwort erneut eingeben. sudo -kDer 15-Minuten-Timer läuft einfach sofort ab. Die einzige Verwendung, die ich sehen kann, sudo -kist, wenn Sie Ihr entsperrtes Terminal jemandem übergeben möchten, dem Sie nicht vertrauen UID 0.

Walzer
quelle
Sie sagten "Geben Sie nicht sudovor dem Befehl ein". Aber wenn ich meine Firewall-Regeln damit überprüfen möchte, iptables -Lfunktioniert es nur, wenn ich tippe sudo iptables -L. Mein Punkt ist, wie können wir eigentlich vermeiden, Sudo zu verwenden?
Wassermann Macht
Außerdem möchte ich über die verbleibende Zeit wissen, wie viel Zeit jedes Mal verbleibt, wenn ich die Eingabetaste am Terminal drücke. Über sudo -k, bin ich über Cracker besorgt versuchen , aus der Ferne meine Maschine zugreifen (ich weiß nicht wirklich , wenn sie es doch tun können ...), oder falls ich meine Maschine ohne es offen lassen Sie sich für ein paar Momente zu Sperren ... na ja, Der eigentliche Punkt ist: Ich möchte es so machen! Es ist mir egal, dass ich sudo -kmein Passwort später noch einmal eingeben muss, so oft ich muss. Ich fühle mich gut, wenn ich es so mache! :)
Wassermann Power
"Vermeiden Sie die Verwendung von Sudo"? Sudo war die Lösung, um das Root-Passwort zu verteilen, Binärdateien festzulegen oder zu verwenden /bin/su. Sind Sie sicher, dass Sie es verwerfen möchten? "Fernzugriff auf meine Maschine ..." und, nehme ich an, übernehmen /proc/YourPID/fd/{0,1,2}. Nein. Wenn auf Ihren Computer per Fernzugriff zugegriffen wird, hat der Bad Guy einfachere Möglichkeiten zur UID 0. Sie sollten Ihr Linux-foo erhöhen, bevor Sie Bedenken haben.
Walzer
Sorry für die schimpfen, es klingt wie Sie sollten alias k=/usr/bin/sudo -k, die ersetzen sudoBefehl mit einem Alias oder bash - Funktion , die den Anruf hüllt zu /usr/bin/sudomit /usr/bin/touch $HOME/tmp/$$/sudotime, und schließlich, fügen Sie etwas $ drucken {{Zeit (jetzt) - Zeit ($ HOME / tmp / $ $ / sudotime))) in Ihrer Bash-Eingabeaufforderung. Nicht trivial, aber wenn Sie sich dadurch gut fühlen, machen Sie es.
Walzer
das ist interessant, ich würde auch protokollieren, wenn der Versuch passiert ist, oder noch besser, jede Netzwerkkommunikation herunterfahren, cool! aber selbst wenn ich verstecken sudomit einem Aliasnamen einem Zufallswort, könnten sie geben nach wie vor /usr/bin/sudostatt , sudound es wäre immer noch Arbeit als sudo :( der Fall ist. Wie auch immer , wie ich die Idee .. Ich frage mich , ob ich die wirkliche Veränderung /usr/bin/sudowird es etwas anderes brechen als Alle meine Skripte, die es verwenden. Selbst wenn ich es tue, könnten sie durch Lesen der Skripte erraten, was Sudo geworden ist.
Aquarius Power