Andreas H.: .htuser mit Hilfe von Perl auslesen

Hallo,

ich versuche über Perl die Datei .htusers auszulesen. Geht das theoretisch? Ich komme bislang nicht in den absoluten Pfad rein. Ziel ist es, dass die Benutzer ihre Passwörter ändern können.

Im Perl-Script steht folgendes:
   open(DATEI,"/.htusers") || die;
an der Stelle bricht er per Fehlermeldung ab (died at line 6).

Die .htusers liegt gleich an der Stelle im absoluten Pfad. In der .htaccess steht folgendes:
  AuthUserFile .htusers
Passwortabfrage usw. funktioniert ohne Probleme.

Vielen Dank für die Hilfe,
Andreas H.

  1. use Mosche;

    ich versuche über Perl die Datei .htusers auszulesen. Geht das theoretisch?

    Ja.

    Ich komme bislang nicht in den absoluten Pfad rein. Ziel ist es, dass die Benutzer ihre Passwörter ändern können.

    Im Perl-Script steht folgendes:
       open(DATEI,"/.htusers") || die;
    an der Stelle bricht er per Fehlermeldung ab (died at line 6).

    Du musst den lokalen Pfad angeben:
    open(DATEI, "/pfad/zu/deinem/webspace/.htuser") || die;

    Die .htusers liegt gleich an der Stelle im absoluten Pfad. In der .htaccess steht folgendes:
      AuthUserFile .htusers

    Auch hier sollte eigentlich der absolute Pfad gegeben sein.

    Ich habe zum gesamten Zugriff auf die .htusers/.htgroup - Dateien (ich weiss, die können auch anders heissen) mal ein Modul geschrieben, welches den gesamten Zugriff darauf regelt. Es gibt keine Dokumentation, ist aber größtenteils selbsterklärend. Wäre nett, wenn du es mal ausprobieren willst - es ist reiner Perl-Code, es sollte also reichen, es einfach in dein Verzeichnis reinzulegen.

    URL zum Download: http://www.fanalin.de/projects/perl/passwd/Passwd-0.8.pm

    Zum Gebrauch der einzelnen Methoden solltest du immer mal auf die erste Zeile der entsprechenden Funktion sehen.

    use Tschoe qw(Matti);

    1. use Mosche;
      use Mosche;

      Ich habe zum gesamten Zugriff auf die .htusers/.htgroup - Dateien (ich weiss, die können auch anders heissen) mal ein Modul geschrieben, welches den gesamten Zugriff darauf regelt. Es gibt keine Dokumentation, ist aber größtenteils selbsterklärend.

      Weil ich es sowieso machen musste, habe ich mal eine passende Dokumentation dazu geschrieben. Diese ist per Perldoc zu erreichen. Wenn du keine Perldoc hast, dann schau mal unter
      http://www.fanalin.de/projects/perl/passwd/Passwd-0.1_doc.html.

      Außerdem habe ich das ganz mal zurückgestuft auf 0.1 (man weiß ja nie, was noch kommt).

      Die neue URL lautet:

      http://www.fanalin.de/projects/perl/passwd/Passwd-0.1.pm.

      Wäre nett, wenn du (und andere) es mal ausprobieren könnten.

      use Tschoe qw(Matti);

      1. Hi Matti,

        http://www.fanalin.de/projects/perl/passwd/Passwd-0.1_doc.html.

        TODO
        Vor simultanen Zugriffen schützen (locking)

        In der Tat.

        Auf Windows testen (wg. crypt())

        Kein crypt() unter Windows. Dafür wahlweise Klartext, MD5 oder SHA.
        Probiere mal ein bißchen mit apache/bin/htpasswd.exe herum; die drei möglichen Formate sehen deutlich unterschiedlich aus, Du kannst also leicht erkennen, was es jeweils sein soll.

        Viele Grüße
              Michael

    2. » Du musst den lokalen Pfad angeben:
      » open(DATEI, "/pfad/zu/deinem/webspace/.htuser") || die;
      Das habe ich getan. Die htusers liegt gleich in dem Verzeichnis von Apache. Habe das alles momentan nur lokal eingerichtet und arbeite unter WinDussel. Momentan habe ich leider keinen Provider, wo ich es unter Linux probieren könnte.

      » Auch hier sollte eigentlich der absolute Pfad gegeben sein.
      Merkwürdig ist, dass, wenn ich die htusers z. B. in den Pfad 'C:/Programme/Apache Groupe/Apache/Test' lege, in die htaccess 'Test/.htusers' und nicht '/Test/.htusers' reinschreiben muss.

      Dein Modul habe ich bisher nicht auprobiert bzw. nicht ausprobieren können. Ich komme nach wie vor nicht an die htusers ran.

      Viele Grüße,
      Andreas

  2. Hallo,

    ich versuche über Perl die Datei .htusers auszulesen. Geht das theoretisch? Ich komme bislang nicht in den absoluten Pfad rein. Ziel ist es, dass die Benutzer ihre Passwörter ändern können.

    da hab ich einen guten Tipp:
    use Shell qw(htpasswd);

    Eingaben ok, nun kann die Passwortdatei geschrieben werden

    htpasswd ("-b $passwordfile $uid $password_1");

    also das shellkomando htpasswd in einem PERL CGI nutzen.
    Die $uid = $ENV{'REMOTE_USER'} somit kann nur der auth. User sein passwort selbst ändern. Der Rest ist Tipparbeit ;-)

    Gruß, Rolf

    Im Perl-Script steht folgendes:
       open(DATEI,"/.htusers") || die;
    an der Stelle bricht er per Fehlermeldung ab (died at line 6).

    Die .htusers liegt gleich an der Stelle im absoluten Pfad. In der .htaccess steht folgendes:
      AuthUserFile .htusers
    Passwortabfrage usw. funktioniert ohne Probleme.

    Vielen Dank für die Hilfe,
    Andreas H.