Jump to content
Froxlor Forum
  • 0

Segfault in libnss-mysql-bg bei Debian Jessie


hoschi

Question

Die  libnss-mysql-bg liefert für den Fall, das der mysqld nicht antwortet, einen segfault statt eines "keine Antwort". Im Ergbnis killt das die ssh bzw. loginshell, sobald die lib angesprochen wird. Auch ein root login ist nicht mehr stabil möglich :-(

 

So ausprobiert mit jessie, mysql-5.6 aus jessie-backports und libnss-mysql-bg_1.5-3+frx1 auf amd64 mit sysv-init. Der mysqld blieb nach Neustart hängen wegen zu vielen geöffneten Dateien durch viele Datenbanken (fix in /etc/security/limits.conf), daraufhin war kein login für shadow-accounts über die Konsole oder ssh mehr möglich, oder wenn der login erfolgreich ist wird die shell nach kurzer Zeit gekillt.

 

Läuft bzw. startet der mysqld scheint alles in Ordnung zu sein, bei Abschaltung geht es wegen nscd noch etwas weiter.

 

Siehe https://packages.qa.debian.org/libn/libnss-mysql-bg.html, der Bug ist wohl bei ubuntu gefixt worden:

https://bugs.launchpad.net/ubuntu/+source/libnss-mysql-bg/+bug/727192

 

Einen Maintainer gibts bei Debian seid 3 Jahren nicht mehr, deswegen ist das wohl aus jessie rausgeflogen (keiner hat die bugs gefixt). In der aktuellen Testing ist die lib als 1.5-4 drin, es wurde aber nur der Maintainer auf die QA gesetzt, das Paket entspricht der 1.5-3.

 

Will und könnte jemand aus dem Froxlor Team nicht Maintainer für das Paket in Debian machen? Oder die lib rauswerfen und die Kunden in Froxlor per shadow-account anlegen (email/htaccess/ftp usw. gehen ja direkt auf die DB, ohne die lib)? Mir mangelt es leider an dem nötigen Wissen in C.

Im Moment kann ich nicht empfehlen Froxlor mit der lib unter Debian 8 Jessie einzusetzen, das kann böse ausgehen :-(

 

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

Ich persönlich hatte jetzt noch nie solch extreme Probleme unter Jessie aber okay, kann passieren und ist echt schlecht. Debian Paket Maintainer werd ich sicher nicht, die Zeit und die Lust fehlt mir. Kunden als "echte" system-user anzulegen ist nicht Sinn und Zweck von Froxlor denn genau solche "Eingriffe" in die Systeme wollen wir eben verhindern.

Link to comment
Share on other sites

Ich kann voll verstehen warum Maintainer nicht dolle ist :-)

 

Ich frag mich nur wie ich langfristig weiterbasteln soll, da die Kiste mich ausgesperrt hatte. Ich kompilier mir die lib jetzt mal selbst mit den patch-vorschlägen und meld mich dann, obs besser wird.

 

Link to comment
Share on other sites

OK, gefixt. Die Originalquellen hab ich von Ubuntu besorgt, apt-get source schlägt bei jessie ja fehl.

Mit folgenden Änderungen gehts:

 

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=708125:
https://bugs.launchpad.net/ubuntu/+source/libnss-mysql-bg/+bug/727192:

--- src/mysql.c.orig 2011-03-01 17:04:42.000000000 +0100
+++ src/mysql.c 2011-03-01 17:06:01.000000000 +0100
@@ -296,7 +296,7 @@
         {
           _nss_mysql_log (LOG_ALERT, "mysql_query failed: %s",
                           mysql_error (&ci.link));
- DSRETURN (retval);
+ DSRETURN (NSS_UNAVAIL);
         }
     }

 

Das ist der eigentliche Bug. Dazu noch den Rekursionsfehler gefixt:

 

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729986:

--- lookup.c.orig    2013-11-19 20:16:12.778779823 +0000
+++ lookup.c    2013-11-19 20:17:05.622959118 +0000
@@ -143,8 +143,7 @@
   /* Get shadow gid, if needed */
   if(cur_euid != 0) {
     cur_egid = getegid ();
-    struct group *grp = getgrnam("shadow");
-    shadow_gid = (grp ? grp->gr_gid : -1);
+    shadow_gid = 42;
   }

 

Die GID für shadow wird hier auf 42 hart festgelegt. Das ist unsauber, aber die ursprüngliche Schleife bringt ne Rekursion rein. Wurde mit dem Patch 04 eingeführt.

 

Ausserdem hab ich noch das korrekte lib-dir für mysql bei 64bit ins configure gedengelt. Kompiliert bei mir mit nem jessie auf amd64 sauber durch und liefert keine segfaults, wenn mysqld und nscd aus sind.

 

Wers nachbasteln will, modifizierte quellen komplett angehängt. Erst in /etc/group prüfen das shadow auch wirklich die 42 hat :-), und für 32bit das x86_64 im configure rauswerfen.

libnss-mysql-bg-1.5-5_amd64.tar.gz

Link to comment
Share on other sites

Vllt solltest du das aber lieber an die libnss-mysql-bg jungs melden, hier geht das wohl eher unter...

 

Öhm. Der Entwickler hat vor 11 Jahren aufgehört, da war das mit 64bit noch nicht so. Bei Debian ist das Paket rausgeflogen wg. ReleaseCritical bugs, und ohne Maintainer.... Und bei Ubuntu wird fröhlich die letzte Release von 2005 gegen die neuen libs kompiliert.

 

Es gibt keine libnss-mysql* jungs mehr.

 

Ihr verteilt aus eurem Repository die kaputte Debian-Version, zumindest der fehler in der mysql.c müsste gefixt werden, der andere würde zur Not vom nscd ausgebügelt und bremst das system nur aus.

 

Ob das System betroffen ist so ausprobieren: mysql + nscd aus, dann zB. cron ein script unter ID eines users aus der mysql-db ausführen lassen. Wenn kaputt: segfault in libmysqlclient.so, ggf. core dump vom kernel.

 

Das ist keine Kritik an euch - ich fürchte ein bissl um die Zukunft von Froxlor wenn die lib mal nimmer läuft. Vielen Dank für eure Arbeit!

Link to comment
Share on other sites

Das ist Kritik an euch - ich fürchte ein bissl um die Zukunft von Froxlor wenn die lib mal nimmer läuft. Vielen Dank für eure Arbeit!

Die nss Schnittstelle ist und bleibt bestehen, die kommt schließlich von der glibc, es wird also bestimmt immer irgendwas geben

Link to comment
Share on other sites

Ihr verteilt aus eurem Repository die kaputte Debian-Version, zumindest der fehler in der mysql.c müsste gefixt werden, der andere würde zur Not vom nscd ausgebügelt und bremst das system nur aus.

 

die version ist aus sid - warum die noch nicht entfernt wurde wenn sie doch kaputt ist, ist mir schleierhaft

die patches waren mir so nicht bekannt (woher auch, weder ubuntu(!) noch debian hat den kram in den paketen)

ich schau mal ob ich am Wochenende zeit finde nen neues packet zu bauen.

 

Das ist Kritik an euch - ich fürchte ein bissl um die Zukunft von Froxlor wenn die lib mal nimmer läuft. Vielen Dank für eure Arbeit!

 

das wird sie eh irgendwann. dann wird man sowieso was ganz anderes finden muessen. erinner mich bloss nicht dadran.

Link to comment
Share on other sites

Das ist Kritik an euch - ich fürchte ein bissl um die Zukunft von Froxlor wenn die lib mal nimmer läuft. Vielen Dank für eure Arbeit!

 

Das hab ich ja mal exakt falschrum geschrieben,

es sollte keine Kritik heissen :-)

 

Die NSS ist glibc, richtig - die switches sind allerding frickelkram. Alternative:  nss-ldap nehmen und mysql als ldap-backend-db benutzen. Das geht, ist aber richtig aua.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...