[BUG] SSH Authorized Keys CGI?

Versuche mal die Vorschläge aus #13 oder #14, sollten beide das "gewünschte" Resultat bringen.

Jörg
 

Anhänge

  • auth_keys.png
    auth_keys.png
    14.4 KB · Aufrufe: 7
ok, das heißt: Physikalisch sind die Umbrüche in der Variable als solcher vorhanden. Wenn man sie "auslesen" will, muss man die doppelten Hochkommas nehmen.
Jetzt haben wir die Ursache/Folge-Problematik ausgiebig durchkaut und endlich verstanden. Man lernt nie aus. Danke.

MfG
 
Das hat nichts mit dem "auslesen" zu tun, sondern damit, wie ob die Shell die Variable in Wörter trennen soll oder nicht.

Eine Lösung wäre Beitrag #7, eine andere Lösung wäre, IFS nicht leer zu machen, sondern einen Zeilenumbruch zuzuweisen.
Code:
IFS="
"
 
Naja, das ist aber für mich das Auslesen, denn physikalisch liegt die Variable ja mit Zeilenumbrüchen vor. Von daher handelt es sich dabei für mich um einen gewissen Filter, der zwischen dem Speicher und der Benutzer/Skriptebene sitzt und je nach Vorgaben die Variable ungefiltert oder gefiltert (mit Leerzeichen) ausliest. Ich bin aber kein Informatiker, und das ist für mich nur eine Eselsbrücke, um die Sache besser zu verstehen.
Mit dem IFS habe ich es sowieso nicht verstanden, warum es denn so dringend notwendig war damit rumzuspielen. Nachdem ihr mich aufgeklärt habt, hab ich verstanden, dass es sich hierbei um eine betriebssystemweite globale Variable handelt. Sie ist doch per Default 0x0a? Man muss schon triftige Gründe haben, um sie zu verstellen.

MfG
 
Ich vermute mal, der Gedanke war wohl überflüssige Zeilenvorschübe der Konsole zu killen bei copy & paste des Schlüssels. Deshalb ist glaube ich mein erster Vorschlag da am sinnvollsten, den String nach

" ssh-rsa"
zu durchsuchen und durch "\nssh-rsa" sowie

" ssh-dsa"
durch "\nssh-dsa" zu ersetzen
 
das ist für mich nur eine Eselsbrücke, um die Sache besser zu verstehen.
Wenn es Dir hilft. Ich finde diese Sichtweise eher verwirrend.

Mit dem IFS habe ich es sowieso nicht verstanden, warum es denn so dringend notwendig war damit rumzuspielen. Nachdem ihr mich aufgeklärt habt, hab ich verstanden, dass es sich hierbei um eine betriebssystemweite globale Variable handelt. Sie ist doch per Default 0x0a? Man muss schon triftige Gründe haben, um sie zu verstellen.
IFS (Internal Field Separator) ist nicht eine betriebssystemweite globale Variable , sondern eine lokale Variable der Shell, die eine spezielle Auswirkung auf die Worttrennung in der Shell hat.
Der Default für IFS ist <space><tab><newline>.
Und es sind ja auch triftige Gründe warum sie geändert wurde, es war nur nicht ganz korrekt gemacht.

Ich vermute mal, der Gedanke war wohl überflüssige Zeilenvorschübe der Konsole zu killen bei copy & paste des Schlüssels
Nein, der Gedanke war, die gelesene Datei in Zeilen aufzuteilen.
 
Code:
--- make/authorized-keys/files/root/usr/bin/authorized_keys_gentmp (revision 3971)
+++ make/authorized-keys/files/root/usr/bin/authorized_keys_gentmp (working copy)
@@ -27,5 +27,5 @@
  done
  IFS=$OIFS
 done
-echo -e $out > /tmp/authorized_keys.tmp
+echo -e "$out" > /tmp/authorized_keys.tmp
So soll das geändert werden?

MfG Oliver
 
Wenn wir die ursprüngliche Idee beibehalten wollen, dass dort auch bei "gleichem User" eine Zeile steht
Code:
---user
key1
---user
key2
---user
key3
statt
Code:
---user
key1
key2
key3
, dann müssen wir den IFS so wie von Ralf gesagt "korrigieren" auf
Code:
        OIFS=$IFS
        IFS='
'
        for key in $keys; do
                out="$out---$user\n$key\n"
        done
        IFS=$OIFS

Jörg
 
Die Lösung ist aber eigentlich übersichtlicher:

Code:
---user
key1
key2
key3
---user2
key4
 
@Jörg
War denn die ursprüngliche Idee so? Ich weiß es nicht. :)

MfG Oliver
 
Ich weiss nicht wie die ursprüngliche Idee war, aber im Wiki ist es sinngemäß so beschrieben, dass man zu einem User mehrere Keys hinterlegen kann...
 
War nur meine Vermutung, sonst wäre die Schleife aus meiner Sicht komplett sinnlos: Erst werden alle keys eingelesen, die zum entsprechenden "user" gehören und (meine Vermutung) dann sollte was mit jedem key darin gemacht werden.
Da in den Keys aber auch zumindest Leerzeichen sind (evtl auch tabs) geht das schief, wenn ein "for" mit Standard IFS genutzt wird...

Wie gesagt, sicher bin ich nicht, da es nicht von mir ist.

Jörg
 
Ich weiss auch nicht, was besser ist, mit der Mimik, dass man mehrere Schlüssel nacheinander zu einem User (1 Schlüssel pro Zeile eingeben) funktioniert es ja bislang recht gut, nur die Anzeige ist halt beim Auslesen irreführend, weil die dann in einer Zeile dargestellt werden.

Wenn man den "BUG" der Anzeige beseitigt, sollte es ja weiterhin normal funktionieren. Ich würde den Rest jetzt nicht neu erfinden...

Und es ist auch praktisch, wenn alle Schlüssel zu einem User "einsortiert" werden - ist übersichtlicher.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.