Frage

Ich möchte in der Lage sein, schnell zu prüfen, ob ich beide sudo Zugang und Passwort hat, ist bereits authentifiziert. Ich bin nicht besorgt über sudo Zugang speziell für den Betrieb mit ich bin zu führen, aber das wäre ein schöner Bonus.

Insbesondere was ich versuche, diese zu verwenden, um ein Skript, das ich durch eine Reihe von Benutzern runnable sein will. Einige haben sudo Zugang. Alle wissen das root-Passwort.

Wenn sie mein Skript ausführen, ich will es sudo-Berechtigungen verwenden, ohne ein Kennwort eingeben müssen, wenn das möglich ist, und sonst zu fragen, fallen zurück für die root Passwort (weil sie vielleicht nicht haben sudo-Zugriff).

Mein erster Nicht-Arbeits Versuch war sudo -S true abzweigen mit STDIN geschlossen oder das Lesen von / dev / null. Aber das fordert nach wie vor für das Kennwort und wartet ein paar Sekunden.

Ich habe einige andere Dinge ausprobiert, darunter warten 0.3sec, um zu sehen, ob es sofort gelungen, aber alles, was ich versuche, endet in irgendeiner Situation versagt werden. (Und nicht, weil mein Timeout zu kurz.) Es ist schwierig, herauszufinden, was vor sich geht, denn ich kann nicht einfach strace wie ich normalerweise tun würde.

Eine Sache I wissen nicht funktioniert, ist STDIN zu schließen oder es an einem Rohr zu befestigen, bevor sudo -S true läuft. Ich hatte gehofft, das würde das Passwort machen prompt sofort fehlschlagen, aber es fordert nach wie vor und verhält sich seltsam. Ich denke, es könnte ein Terminal wollen.

War es hilfreich?

Lösung

Bei neueren Versionen von sudo gibt es eine Option für diesen Zweck:

sudo -n true

Ich benutze true hier für einen no-op, aber man kann jeden Befehl verwenden.

Andere Tipps

Ich weiß nicht, was der letzte Grund für die Notwendigkeit, dies zu tun, aber ich denke, vielleicht müssen Sie möglicherweise überdenken, was der Hauptgrund ist. komplizierte, ungewöhnliche Dinge mit Berechtigungen führt häufig zu Sicherheitslücken zu tun versuchen.

Genauer gesagt, was auch immer es ist das Skript versucht, besser mit setuid getan zu tun könnte statt sudo. (Ich würde auch fragen, warum so viele Menschen das root-Passwort haben. Sudo ist es speziell die Menschen das root-Passwort zu vermeiden.)

getent group admin | grep $particular_user

Sie könnten verwenden whoami um den aktuellen Benutzer zu erhalten.

Edit: Aber das hilft Ihnen nicht, wenn Sie noch Aufgaben zu tun sudo sind authed ... Hmm ..

Ausführen

sudo -S true < /dev/null &>/dev/null

scheint zu funktionieren, obwohl es für eine Sekunde verzögert, bevor ein Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top