• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Testen ob Passwort OK vor Übergabe an sudo?

Hallo,
eigentlich sollte das ja ultraleicht sein, aber mir fällt nichts gescheites ein.
Ich habe einen String in die variable $input übergeben und pipe diesen an sudo:
Code:
echo $input|sudo -S extrem_wichtiger_befehl
Wenn aber $input nicht dem root passwort übereinstimmt kackt mir mein Folgescript natürlich ab. :-(
sudo selbst gibt den Rückgabewert $?=1 wenn was nicht stimmt.

Also könnte ich ja als test sudo einfach zum test irgendwas belangloses nach >/dev/nul ausführen lassen und danach $? auswerten.
sudo lässt mich aber dummerweise 3 mal falsch eintippen bevor es sich korrekterweise mit "1" beendet.

Frage: denke ich schon wieder zu kompliziert und gibt es was einfacheres? :irre:
Oder kann ich vielleicht in der config (/etc/sudoers) hinterlegen daß sudo sofort nach der ersten
Fehleingabe abbricht?
 
A

Anonymous

Gast
ingo.trautwein schrieb:
Frage: denke ich schon wieder zu kompliziert und gibt es was einfacheres? :irre:
Wahrscheinlich, aber das ist Nonsens was du dort versuchts.

  • * wenn du im Script sudo benötigst wird das script als User ausgeführt.
    * wird das Script als User ausgeführt wird, muss User dieses Script lesen können.
    * wenn du also das Script das Rootpasswort im Klartext in eine Variable einlesen kann, kann User dieses nachlesen.

selbst wenn der Prozess des Auslesens woher das Rootpasswort genau kommt oder wie es genau aussieht für den User so kompliziert ist das er es nicht schafft, braucht er auch gar nicht. ;) Es ist die Wahrscheinlichkeit sehr hoch das du vergessen hast dieses Script für den User nicht beschreibbar zu machen. Wenn doch, nicht so schlimm, da das Script für den User lesbar sein muss, kann er es auch kopieren, und die kopie kann er dann beschreiben. Hinzukommt, auf heutigen Kisten wird sudo das Passwort cachen und also weitere sudo-Aufrufe dann problemlos auch mit falschem oder ohne Passwort ohne weiteres ausführen. Der User schreibt einfach ein bisschen Schadcode hinter den ersten sudo-Auffruf, oder er schreibt einfach "echo "Passwort ist : $input"; exit" vor deinen sudo-Aufruf. oder oder oder ........

Also, So oder So, Sicherheit == NULL.

Entweder den hyperwichtigen Befehl mit sudoers für nopasswort freischalten, oder wenn mit diesem Befehl zu viel auch nicht erwünschtes gemacht werden könnte, dann ein Script schreiben, dass die Optionen für den hyperBefehl vorher genau überprüft bevor er ausgeführt wird, und dieses Script dann nur für root beschreibbar machen und mit sudoers für nopasswort freischalten und vom Userscript dann dieses mit sudo ohne irgendwelches Rootpasswortgefummel aufrufen.

robi
 
@robi,
danke für die wie immer klare Ansage.

Nach nochmaligem Nachdenken ist mein Ansatz tatsächlich Nonsens, es ist natürlich Blödsinn ein so wichtiges
Passwort an eine lesbare Variable zu übergeben. Vor lauter Rumfrickeln habe ich das gar nicht bedacht.

Ich lasse jetzt (zumindes für den Update) den interaktiven Boxen Blödsinn sein und rufe zypper brav mit sudo zypper ....
aus dem in der Konsole laufenden Script auf, da meckert er sofort, und alles wird viel einfacher.
 
Oben