(Ursprünglich auf Stack Overflow gepostet. Sie haben vorgeschlagen, es hier zu versuchen. Hier ist der ursprüngliche Beitrag: https://stackoverflow.com/questions/3858208/sudo-is-there-a-command-to-check-if-i-have -sudo-und-wie-viel-zeit-bleibt )
Siehe Titel. Ich möchte einen Befehl, mit dem ich sudo abfragen kann. Idealerweise würde es Erfolg bringen, wenn ich noch sudo habe und false, wenn sudo abgelaufen ist. Es könnte auch nützlich sein, die verbleibende Zeit zu ermitteln (obwohl ich, wenn ich besorgt wäre, einfach sudo -v ausführen könnte, um die Gültigkeit zu überprüfen.) Oh, und es sollte nicht erforderlich sein, nach einem Passwort zu fragen.
Das Nächste, was ich gefunden habe, ist "sudo -n true", aber die Option -n ist nur auf meinem Centos 5-Computer bei der Arbeit verfügbar. -n schlägt fehl, wenn nach einem Passwort gefragt werden muss. Gibt es eine andere Möglichkeit, diese Funktionalität zu erhalten? Angenommen, ich habe nicht auf allen Computern, mit denen ich arbeite, root, so dass ich keine neuen Versionen von sudo nach meinen Wünschen installieren kann.
Wenn es sich lohnt, mache ich das, damit ich meine Eingabeaufforderung bekomme, um den Sudo-Status anzuzeigen. Ich mag es zu wissen, welche Terminals aktiv sudo-fähig sind. Ich habe auch eine Eingabeaufforderung, die die Farben ändert, wenn ich root bin, aber ich verwende root nicht sehr oft, so dass dies von begrenztem Nutzen ist.
Ich weiß, das ist eine sehr alte Frage, aber hier habe ich sie heute in einem Skript gestellt:
quelle
Der folgende Befehl zeigt farbig an, dass Sie sudo erteilt haben, sodass Sie daran denken, einen Vorgang auszuführen,
sudo -k
bevor Sie sich von der Maschine entfernen. Dies ist auch bei nicht farbigen Terminals nützlich.Da sudo in verschiedenen Terminalsitzungen aktiv und inaktiv sein kann, habe ich dies erstellt, das Sie am Ende Ihres ~ / .bashrc einfügen können
Am Terminal-Typ
bash
, um es zu testen. Außerdem wird bei jeder Ausführung eines Befehls eine ganze Zeile hinzugefügt, die die Informationen zum Zeitpunkt des letzten Befehlsendes enthält, sodass Sie zum Mittagessen gehen und wissen können, wann der letzte Befehl beendet wurde :).Sie können mit diesem Code spielen, um Ihre Bedürfnisse zu erfüllen. Es gibt auch die PS1-Variable (das ist die eigentliche kleine, einzeilige Eingabeaufforderung), aber ich denke, es ist besser, nicht damit herumzuspielen.
PS .: Für OS-X siehe den Kommentar unten von @nwinkler.
quelle
sudo -n
nicht zur Arbeit scheint auf O X. hier meine Frage Siehe: superuser.com/questions/902826/...sudo -n
, glauben Sie, dass es irgendeinen anderen Test geben könnte, der verwendet werden könnte, um festzustellen, ob der Benutzer Sudo-Zugriff aktiv hat? oder OS-X erfordert vielleicht ein Update? Ich habe übrigens nie OS-X verwendet.sudo -n
BSD (auf dem OS X basiert) ein anderes Verhalten aufweist als die GNU-Version. Ich habe gerade meinen Kommentar hinzugefügt, um die Leute wissen zu lassen, dass diese Version der Prüfung unter OS X nicht zu funktionieren scheint. Ich habe eine Prüfung aus einer anderen Antwort (sudo -n uptime 2>&1|grep "load"|wc -l
) verwendet, und dies scheint unter OS X in Ordnung zu sein. Aber es funktioniert.sudo -n
in sudo -V 1.7.9Um die Antwort von @ wags007 zu vereinfachen
Wenn Sie jedoch in Ihrer https://www.sudo.ws/man/1.8.15/sudoers.man.html Konfiguration
defaults mail_badpass
eine E-Mail haben, wird für jeden Test eine E-Mail gesendet, die zu einem falschen Ergebnis führt (dies hätte dazu geführt). Um solche Unannehmlichkeiten zu vermeiden, ändern Sie den Teil Ihrer sudoers-Datei inInfolgedessen werden für alle Befehle außer / bin / true Sicherheitsalarm-Mails gesendet. Nun ja, jemand könnte jetzt versuchen, ein Passwort zu erzwingen, indem er
sudo true
unbegrenzt oft anruft, ohne dass eine Sicherheitswarnung gesendet wird.Hinweis: Verwenden
visudo
Sie zum Bearbeiten der sudoers-Datei immer anstelle Ihres bevorzugten Editors. Andernfalls besteht die Gefahr, dass Sie ausgesperrt werden.quelle
Gemäß dem sudo-Handbuch wird die sudo-Sitzung anhand der Zeitstempeldatei (
/usr/lib/sudo/<username>
) bestimmt, sodass Sie möglicherweise herausfinden können, wie viel Zeit noch verbleibt, indem Sie das Datum und die Uhrzeit der Zeitstempeldatei überprüfen. In meinem System ist die Zeitstempeldatei jedoch in Wirklichkeit ein Verzeichnis, in dem sich drei Dateien mit kryptischem Inhalt befinden (und auch einige seltsame Zeitstempel, die jedoch/usr/lib/sudo/<username>
einen Zeitstempel zu haben schienen, der mit der Zeit zusammenfiel, als ich sudo mein Passwort gab Ich denke,/usr/lib/sudo/<username>/0
hat den Zeitstempel der letztensudo
Ausführung.quelle
Warnung
Laut Bugzilla sudo Bug ID = 590 wird der Anruf
sudo -n true 2&>/dev/null ; echo $?
zum Buggy werdensudo -V 1.7.10
Lesen Sie Bugzilla [hier] ( http://bugzilla.sudo.ws/show_bug.cgi?id=590 "Bug ID = 590")
quelle
Zumindest in sudo 1.8.21p2 funktioniert dieser Ansatz einwandfrei:
quelle
Dies ist wahrscheinlich ein extremer Overkill für die meisten Leute, aber hier ist die (genau richtige) Funktion, mit der ich überprüfe, ob
sudo
die Funktion entsperrt ist (die Funktion verschwendet keine Zeit, wenn der Benutzer sie ausführtroot
, da keine Entsperrung erforderlich istsudo
):quelle
einfache antwort ...
quelle
Wie wäre es mit der Manpage
Listen Sie Ihre verfügbaren Befehle auf:
Sudo selbst hat keine Zeit- oder Datumsbeschränkungen ... siehe:
quelle