openssl passwd -1
Hallo,
mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit vipw
weiter verarbeiten kann:
http://www.openssl.org/docs/apps/passwd.html
[root [at] BSDHelmut ~]# openssl passwd -1 passwort
$1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
[root [at] BSDHelmut ~]#
Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann kein
Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich das Passwort
der einzelnen Bneutzer gar nicht wissen möchte, dachte ich mir, man könnte
vielleicht ein Webinterface einrichten, bei dem der Benutzer einen neues
Passwort wählen kann und mir der Hash via EMail zugeschickt wird.
Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da es
für PHP ein openssl Modul gibt...
Danke und Gruß, Helmut
--
No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
Re: openssl passwd -1
Helmut Schneider schrieb:
> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
> vipw weiter verarbeiten kann:
>
> http://www.openssl.org/docs/apps/passwd.html
>
> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>
> [...]
>
> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
> es für PHP ein openssl Modul gibt...
Wenn die exec() und Konsorten zur Verfügung stehen, gibt's doch kein
Problem den Systembefehl auszuführen.
Gruß
David
Re: openssl passwd -1
Helmut Schneider schrieb:
> Hallo,
>
> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
> vipw weiter verarbeiten kann:
>
> http://www.openssl.org/docs/apps/passwd.html
>
> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
> [root [at] BSDHelmut ~]#
>
> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich das
> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte ich mir,
> man könnte vielleicht ein Webinterface einrichten, bei dem der Benutzer
> einen neues Passwort wählen kann und mir der Hash via EMail zugeschickt
> wird.
>
> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
> es für PHP ein openssl Modul gibt...
Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
www users und der hat normalerweise keine Rechte openssl auszuführen bzw
die passwd Datenbank zu ändern.
Du kannst z.B. per sudo das Ausführen von openssl erlauben und auch die
Schreibrechte von shadow anpassen, so dass der www user das darf, aber
dann ist bei einer sicherheitslücke in deinem script oder nem anderen
Part des Webservers Tür und Tor offen:-)
>
> Danke und Gruß, Helmut
>
Re: openssl passwd -1
David Fuhr <david.fuhr [at] web.de> wrote:
> Helmut Schneider schrieb:
>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>> vipw weiter verarbeiten kann:
>> http://www.openssl.org/docs/apps/passwd.html
>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>> [...]
>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
>> es für PHP ein openssl Modul gibt...
> Wenn die exec() und Konsorten zur Verfügung stehen, gibt's doch kein
> Problem den Systembefehl auszuführen.
Ich hatte a etwas PHP-natives gedacht, da der Webserver in einem (BSD-)Jail
läuft und ich mir sparen wollte, openssl in das Jail zu verfrachten. Für
"openssl passwd -l $1" brauch ich kein PHP... :)
--
No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
Re: openssl passwd -1
Stefan Braumeister <sbraumi [at] gmx.net> wrote:
> Helmut Schneider schrieb:
>> Hallo,
>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>> vipw weiter verarbeiten kann:
>> http://www.openssl.org/docs/apps/passwd.html
>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>> [root [at] BSDHelmut ~]#
>> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
>> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich das
>> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte ich mir,
>> man könnte vielleicht ein Webinterface einrichten, bei dem der Benutzer
>> einen neues Passwort wählen kann und mir der Hash via EMail zugeschickt
>> wird.
>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
>> es für PHP ein openssl Modul gibt...
> Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
> www users und der hat normalerweise keine Rechte openssl auszuführen bzw
> die passwd Datenbank zu ändern.
PHP soll nicht das Passwort setzten, sondern nur den Hash ausgeben. Mehr
nicht.
> Du kannst z.B. per sudo das Ausführen von openssl erlauben und auch die
> Schreibrechte von shadow anpassen, so dass der www user das darf, aber
Gott bewahre, Nein!! :)
--
No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
Re: openssl passwd -1
Helmut Schneider schrieb:
> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>> Helmut Schneider schrieb:
>>> Hallo,
>>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>>> vipw weiter verarbeiten kann:
>>> http://www.openssl.org/docs/apps/passwd.html
>>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>>> [root [at] BSDHelmut ~]#
>>> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
>>> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich das
>>> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte ich mir,
>>> man könnte vielleicht ein Webinterface einrichten, bei dem der Benutzer
>>> einen neues Passwort wählen kann und mir der Hash via EMail zugeschickt
>>> wird.
>>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
>>> es für PHP ein openssl Modul gibt...
>> Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
>> www users und der hat normalerweise keine Rechte openssl auszuführen bzw
>> die passwd Datenbank zu ändern.
>
> PHP soll nicht das Passwort setzten, sondern nur den Hash ausgeben. Mehr
> nicht.
Stimmt hab ich nicht richtig gelesen. Dann reicht ein Eintrag in sudoers:
apache ALL=(ALL) NOPASSWD: /usr/bin/openssl
und ein
exec('sudo openssl passwd -1 passwort');
>
>> Du kannst z.B. per sudo das Ausführen von openssl erlauben und auch die
>> Schreibrechte von shadow anpassen, so dass der www user das darf, aber
>
> Gott bewahre, Nein!! :)
>
Re: openssl passwd -1
Stefan Braumeister <sbraumi [at] gmx.net> wrote:
> Helmut Schneider schrieb:
>> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>>> Helmut Schneider schrieb:
>>>> Hallo,
>>>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>>>> vipw weiter verarbeiten kann:
>>>> http://www.openssl.org/docs/apps/passwd.html
>>>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>>>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>>>> [root [at] BSDHelmut ~]#
>>>> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
>>>> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich das
>>>> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte
>>>> ich mir, man könnte vielleicht ein Webinterface einrichten, bei
>>>> dem der Benutzer einen neues Passwort wählen kann und mir der Hash
>>>> via EMail zugeschickt wird.
>>>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
>>>> es für PHP ein openssl Modul gibt...
>>> Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
>>> www users und der hat normalerweise keine Rechte openssl auszuführen bzw
>>> die passwd Datenbank zu ändern.
>> PHP soll nicht das Passwort setzten, sondern nur den Hash ausgeben. Mehr
>> nicht.
> Stimmt hab ich nicht richtig gelesen. Dann reicht ein Eintrag in sudoers:
> apache ALL=(ALL) NOPASSWD: /usr/bin/openssl
> und ein
> exec('sudo openssl passwd -1 passwort');
Das heisst dann aber, dass PHP das nativ (http://de.php.net/openssl) nicht
kann (es gibt keine Funktion a la openssl_generate_bsd_password_hash() ),
sondern "nur" openssl aufruft? :)
--
No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
Re: openssl passwd -1
Helmut Schneider schrieb:
> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>> Helmut Schneider schrieb:
>>> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>>>> Helmut Schneider schrieb:
>>>>> Hallo,
>>>>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>>>>> vipw weiter verarbeiten kann:
>>>>> http://www.openssl.org/docs/apps/passwd.html
>>>>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>>>>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>>>>> [root [at] BSDHelmut ~]#
>>>>> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
>>>>> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich
>>>>> das
>>>>> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte
>>>>> ich mir, man könnte vielleicht ein Webinterface einrichten, bei
>>>>> dem der Benutzer einen neues Passwort wählen kann und mir der Hash
>>>>> via EMail zugeschickt wird.
>>>>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen, aber da
>>>>> es für PHP ein openssl Modul gibt...
>>>> Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
>>>> www users und der hat normalerweise keine Rechte openssl auszuführen
>>>> bzw
>>>> die passwd Datenbank zu ändern.
>>> PHP soll nicht das Passwort setzten, sondern nur den Hash ausgeben. Mehr
>>> nicht.
>> Stimmt hab ich nicht richtig gelesen. Dann reicht ein Eintrag in sudoers:
>> apache ALL=(ALL) NOPASSWD: /usr/bin/openssl
>> und ein
>> exec('sudo openssl passwd -1 passwort');
>
> Das heisst dann aber, dass PHP das nativ (http://de.php.net/openssl)
> nicht kann (es gibt keine Funktion a la
> openssl_generate_bsd_password_hash() ), sondern "nur" openssl aufruft? :)
Ne eine direkte Funktion gibts dafür nicht, aber crypt reicht dafür schon:
function shadow($password)
{
$hash = '';
for($i=0;$i<8;$i++)
{
$j = mt_rand(0,53);
if($j<26)$hash .= chr(rand(65,90));
else if($j<52)$hash .= chr(rand(97,122));
else if($j<53)$hash .= '.';
else $hash .= '/';
}
return crypt($password,'$1$'.$hash.'$');
}
Gruß Stefan
>
Re: openssl passwd -1
Stefan Braumeister <sbraumi [at] gmx.net> wrote:
> Helmut Schneider schrieb:
>> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>>> Helmut Schneider schrieb:
>>>> Stefan Braumeister <sbraumi [at] gmx.net> wrote:
>>>>> Helmut Schneider schrieb:
>>>>>> Hallo,
>>>>>> mit obigem Befehl kann man einen Passwort-Hash erzeugen, den man mit
>>>>>> vipw weiter verarbeiten kann:
>>>>>> http://www.openssl.org/docs/apps/passwd.html
>>>>>> [root [at] BSDHelmut ~]# openssl passwd -1 passwort
>>>>>> $1$UUNaJuFy$DZW.wI4a94wvAEK7NGY2P1
>>>>>> [root [at] BSDHelmut ~]#
>>>>>> Hintergrund: Ein Webserver ist nicht via Shell erreichbar, somit kann
>>>>>> kein Benutzer (es läuft auch ein imap) sein Passwort ändern. Da ich
>>>>>> das
>>>>>> Passwort der einzelnen Bneutzer gar nicht wissen möchte, dachte
>>>>>> ich mir, man könnte vielleicht ein Webinterface einrichten, bei
>>>>>> dem der Benutzer einen neues Passwort wählen kann und mir der Hash
>>>>>> via EMail zugeschickt wird.
>>>>>> Geht das mit PHP? Es liesse ich sicherlich auch via cgi lösen,
>>>>>> aber da es für PHP ein openssl Modul gibt...
>>>>> Es geht, ist aber nicht unproblematisch, denn php läuft im Kontext des
>>>>> www users und der hat normalerweise keine Rechte openssl auszuführen
>>>>> bzw
>>>>> die passwd Datenbank zu ändern.
>>>> PHP soll nicht das Passwort setzten, sondern nur den Hash
>>>> ausgeben. Mehr nicht.
>>> Stimmt hab ich nicht richtig gelesen. Dann reicht ein Eintrag in
>>> sudoers: apache ALL=(ALL) NOPASSWD: /usr/bin/openssl
>>> und ein
>>> exec('sudo openssl passwd -1 passwort');
>> Das heisst dann aber, dass PHP das nativ (http://de.php.net/openssl)
>> nicht kann (es gibt keine Funktion a la
>> openssl_generate_bsd_password_hash() ), sondern "nur" openssl aufruft? :)
> Ne eine direkte Funktion gibts dafür nicht, aber crypt reicht dafür schon:
> function shadow($password)
> {
> $hash = '';
> for($i=0;$i<8;$i++)
> {
> $j = mt_rand(0,53);
> if($j<26)$hash .= chr(rand(65,90));
> else if($j<52)$hash .= chr(rand(97,122));
> else if($j<53)$hash .= '.';
> else $hash .= '/';
> }
> return crypt($password,'$1$'.$hash.'$');
> }
Genau *sowas* hatte ich gesucht!
Merci, Helmut
--
No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
Re: openssl passwd -1
Helmut Schneider schrieb:
> [Quetschquoting]
Deine Postings wären besser lesbar, wenn Du Leerzeilen mitquoten und das
Quoting auf das Notwendige reduzieren würdest.
Gruß. Claus
Re: openssl passwd -1
Hallo!
Stefan Braumeister <sbraumi [at] gmx.net> writes:
>> PHP soll nicht das Passwort setzten, sondern nur den Hash ausgeben. Mehr
>> nicht.
>
> Stimmt hab ich nicht richtig gelesen. Dann reicht ein Eintrag in sudoers:
>
> apache ALL=(ALL) NOPASSWD: /usr/bin/openssl
>
> und ein
>
> exec('sudo openssl passwd -1 passwort');
Warum sollte man denn openssl unbedingt als root ausführen wollen und
nicht unter dem Apache-Benutzer?
Dafür hat man so evtl. ein Problem: openssl kann dann beliebige Dateien
überschreiben (z.B. openssl req -new -out /bla).
Grüße,
Ansgar