Neue Installation pdadmin4.62/SE 6.0.341 auf CentOS7 - danach NextCloud 16/17 Installation - erstes Login ist ok (mit Web Installer), weitere Logins nicht mehr möglich

  • Neue Installation einer NextCloud 16.0.3 mit dem web installer läuft ohne Fehler durch.

    Mein Setup ist CentOS 7, mit pd-admin 4.61 und der SE 6.0.341, also mit MySQL 5.7, PHP 7.2 und Apache 2.4.

    Der erste Login mit dem neu erzeugten Konto durch den Webinstaller des Nextcloud-Paketes, nehmen wir “ncadmin” als Beispiel, ich komme normal rein, kann die Einstellungen ändern, zum Beispiel für das Mailkonto, das wird auch gespeicher in der DB, alles sieht gut aus. wenn ich mich dann auslogge, kann ich mich mit dem Konto "ncadmin" nie wieder einloggen.

    Ich habe das dreimal geprüft, Ich habe testweise NextCloud 16.0.3 und NextCloud 17.0.0 in derselben pdamin/SE Umgebung installiert, selbes Verhalten. Ich habe auch die aganze Vm nochmal aufgesetzt, pd-admin neu und SE 341 neu installiert, der Fehler bleibt.

    Ich kann den Datensatz für "ncadmin" in der Tabelle “oc_user” in der MySQL DB-Struktur sehen, es ist ein Hashwert im Feld "password", aber es funktioniert nur ein einziges Mal.

    Wenn ich auf "Passwort vergessen" gehe, erhalte ich eine Mail mit einem Token zum Zurücksetzen des Passwortes, danach kann ich mich aber immer noch nicht einloggen.

    In der Nextcloud Community kann mir niemand helfen / hat noch niemand etwas von diesem Problem gehört.

    Ich vermute, dass es mit meiner Apache / PHP Umgebung zu tun hat, also der Fehelr in der SE zu suchen ist, oder die Werte werden in der MySQL-DB felsch abgelegt.

    Ich weiss aber nicht, wo ich suchen soll.

    Jeder Hinweis ist willkommen,

    Viele Grüsse, Philipp

  • Also das ist nur eine Vermutung... dies muss nicht die Ursache sein. Eigentlich sollte ja etwas im Apache/MySQL/Nextcloud Log zu finden sein.


    Zum strict mode:

    Zunächst sollte dies einmal geprüft werden:

    Shell-Script
    1. /usr/local/pd-admin2/bin/mysql -u root -p$(cat /opt/pdadmin/etc/mysql_rootpw.conf ) select @@sql_mode | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

    Wenn dies keine Ausgabe gibt, ist der strict mode bereits deaktiviert.


    Dann muss man unter /home/mysql/my.cnf dies entsprechend setzen. Ich habe noch MySQL 5.5, aber dies sollte passen:

    Code
    1. [mysqld]
    2. sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    Nach Änderung einmal

    Code
    1. svc -du /service/mysqld

    ausführen.


    Referenz: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

  • Hallo,

    vielen Dank für diese Antwort. Ich verstehe das jetzt so, dass der strict mode eingeschaltet sein sollte.

    Ich habe unter /home/mysql/ keine Datei mit dem Namen my.cnf.


    Gruss, Philipp

  • Es kann nur eine Datei geladen werden. Wenn mehrere my.cnf Dateien gefunden werden, würde die erste genommen. Daher gibt es auch Probleme, wenn unter /etc/ eine my.cnf liegt.


    Die Datei unter /home/mysql/ sollte eigentlich ein Symlink zum genannten Pfad sein:

    Code
    1. # ls -al /home/mysql/my.cnf
    2. lrwxrwxrwx. 1 root root 31 24. Okt 09:27 /home/mysql/my.cnf -> /usr/local/pd-admin2/etc/my.cnf


    Der strict mode verhindert das Einfügen oder Ändern von Inhalten durch falsche oder leere Werte. Die kann bei manchen Anwendungen zu Fehlern führen. Daher sollte der strict mode testweise deaktiviert werden. Dadurch ist MySQL toleranter.

  • Welche PHP Version hast du denn für die NextCloud Installation verwendet?


    Es gibt einen dokumentierten Bug: PHP Bug 78516


    Der bewirkt, das der Password Hash nicht korrekt ausgelesen und geschrieben wird.


    Abhilfe war wohl in der Nextcloud Installation in der Datei hasher.php die Größe der Memory Cost auf =>8 einzustellen;

    dann funktioniert wohl alles.


    Ist übrigens ein Bug, der nur CentOS 7.6 in Verbindung mit PHP 7.3 betrifft.

  • Ahhh, ich weiss nicht.... Ich habe sowohl PHP 7.2.23 als auch 7.3.10 ausprobiert, das Ergebnis war dasselbe.

    Ich sehe im Feld "password" der Tabelle "oc-users" einen lesbaren Teil, indem .. argon2i ... steht.

    Und dann passiert beim Passwort-Reset mit dem per Mail zugesendeten Token das Komische, dass anstelle eines relativ langen Hashwertes nur noch "2|" im Feld steht, also totaler Unsinn. Damit kann ich mich erst recht nicht mehr einloggen.

    Allerdings finde ich auf der Maschine keine Datei, die "hasher.php" heißt.


    Nach wie vor ratlos,

    - Philipp

  • Jetzt geht es!

    Ich habe neu installiert mit PHP 7.3.10, MySQL 5.7 und den von Sumeragi empfohlenen Einstellungen für MySQL.

    Die Netxcloud Version ist jetzt die 17.0.0.

    Wenn ich jetzt noch in PHP den OpCache und den memcached zum Fliegen bringe, ist alles gut.


    Cheers,

    Philipp

  • Zu früh gefreut: sobald ich die PHP Extension APCu lade, kann ich mich nicht mehr anmelden bei meiner Nextcloud-Installation.

    Ich habe es jetzt mit PHP 7.2 und PHP 7.3 nachgestellt:

    extension=/usr/local/pd-admin2/php-7.3.10/lib/php/extensions/no-debug-non-zts-20180731/apcu.so

    oder:

    extension=/usr/local/pd-admin2/php-7.2.23/lib/php/extensions/no-debug-non-zts-20170718/apcu.so


    Beides führt dann grandios zum Fehlverhalten, wie beschrieben.

    Ist diese extension defekt?


    Gruß,

    Philipp

  • dürfte eigentlich nicht sein. Ich habe Nestcloud 16 unter der SE 6 schon zum Laufen bekommen. Ich habe allerdings

    Code
    1. extension_dir=""
    2. extension=apcu.so

    in der php.ini stehen und nicht den vollständigen Pfad. Der kann sich ja mit einem Update der SE immer wieder ändern.

  • OK, ich glaube Browsingman hat doch recht.

    Es ist ein PHP-Bug, denn das PHP-Skript vom Web-Installer für NextCloud bricht ab mit der folgenden Meldung:

    "Memory Allocation error" in hasher.php


    Nur wo stelle ich die "Memory cost >=8 ein?


    Ich habe jetzt in der kundenspezifischen php.ini folgendes eingefügt, es "zieht" aber nicht:


    memory_cost = 9600

    time_cost = 2

    threads = 2


    - Philipp

  • Der genannte Bug bezieht sich ausschließlich auf PHP 7.4. In dem genannten Bug Report wurde sogar mit PHP 7.2 und 7.3 getestet und der Bug trat nur bei PHP 7.4 auf.


    Der "memory allocation" Fehler deutet darauf hin, dass das Limit für den Arbeitsspeicher im Angebot des Endkunden zu niedrig eingestellt ist. Ich empfehle hier mindestens 768MB. Nextcloud selber empfiehlt bereits ein Minimum von 512MB.


    Die Angaben memory_cost, time_cost, threads sind zudem Parameter der password_hash()-Funktion. Daher wird ein Eintrag in der php.ini auch keinerlei Wirkung haben, da diese nirgends übergeben werden.