Pure-ftpd startet nicht

Mordor

Registered User
So, nach langem hin und her, habe ich nach folgendem HowTo Pure-ftpd intsalliert: HowtoForge Linux Tutorials » Virtual Hosting mit PureFTPd und MySQL (Incl. Quota und Bandweiten Management) auf Ubuntu 7.10 (Gutsy Gibbon)

Das ganze aber nicht auf einem Ubuntu, sondern einem Debian Etch über
Code:
apt-get install pure-ftpd-mysql
Die Installation hat auch hingehauen, und danach habe ich die nötigen Konfigurationen vorgenommen, und wollte den Server starten.
Bei der Eingabe von
Code:
/etc/init.d/pure-ftpd-mysql start
bekomme ich aber keine Ausgabe, und ein Login auf dem FTP-Server hat auch nicht funktioniert.
Also hab ich mal mit
Code:
ps aux | grep ftp
nachgesehen, ob der Pure überhaupt läuft, und siehe da, da läuft garnichts. Ich konnte ihn aber auch nicht starten.

In den Logfiles hätte ich ja gerne nachgesehen, aber dort war nur ein Ordner names pure-ftpd zufinden, welcher leer war. Also habe ich in der syslog.conf angegeben, dass die Logmeldungen für den FTP-Server in die Datei ftp.log im oben genannten Log-Verzeichnis geschrieben werden sollen, den Syslog neu gestartet, und siehe da, da war zumindest mal die Logdatei da. Nach mehrmaligen Startversuchen, habe ich dann mal in das Logfile geshen, aber dieses war leer.

Ich bin mit meinem Latein gerade am Ende, wo ich noch nachsehen könnte, was das Problem ist, und wäre um jede Hilfe dankbar.

Gruß Mordor
 
Falls du einen normalen Server hast schau mal ob die Capabilities als Modul geladen sind, ansonsten

Code:
modprobe capability

Auf einem VServer must du diese ggf. anschalten, falls das nicht möglich sein sollte, mußt du das Paket neu kompilieren.

Code:
aptitude install build-essential devscripts debhelper libpam-dev libcap-dev libldap2-dev  libmysqlclient15-dev libpq-dev postgresql-dev libssl-dev openssl fakeroot

Code:
mkdir tmp
cd tmp
apt-get source pure-ftpd
cd pure-ftpd-1.0.21/debian
nano rules

Am Ende der Reihe 12 das reinschreiben --without-capabilities

Code:
cd ..
dpkg-buildpackage -rfakeroot
cd ..
ls

Code:
dpkg -i pure-ftpd-common_1.0.21-11.1ubuntu2_all.deb pure-ftpd-mysql_1.0.21-11.1ubuntu2_i386.deb

Code:
ln -s /etc/init.d/pure-ftpd-mysql /etc/init.d/pure-ftpd

Eigentlich sollte die Fehlermeldung aber im Syslog auftauchen.
 
Sorry, das mit dem System hatte ich ganz vergessen:
Das ganze ist ein Root-Server bei Hetzner.

Das mit dem modprobe habe ich mal probiert, da bekomme ich allerdings eine Fehlermeldung:
Code:
FATAL: Module capability not found.

Und jetzt stellt sich die Frage, ob das Modul in den Kernel einkompiliert ist, ob ich es selber irgendwie auf den Root drauf bringen, und ob mich mir nicht doch gleich nen neuen Kernel backe, was dann das erste mal wäre, denn davon hab ich bisher die Finger gelassen, oder ob ich pure-ftpd nicht einfach selber kompiliere, und dann die Direktive mit without-capabilities verwende.
 
So, nun bin ich etwas schlauer. Das Module was Max gemeint hat, ist anscheinend im Kernel einkopiliert.

Ich bin also mal dazu übergegangen, das Startskript durchzugehen, um zu sehen, bis wohin der pure überhaupt startet, und da ist mir aufgefallen, dass dieser über den inetd läuft. Über google hab ich dann was gefunden, dass man unter
Code:
/etc/default/pure-ftpd-common
die Variable STANDALONE_OR_INETD auf standalone ändern muss, und siehe da, der Server startet ganz brav.

Jetzt hab ich nur noch ein Problem:
Die User sind in einer Datenbank eingetragen, und die nötige mysql.conf im Verzeichnis /etc/pure-ftpd/db ist auch da. Nur kann ich mich irgendwie nicht einloggen. Er sagt immer wieder, dass der angegebene User nicht existiert.

Gruß Mordor
 
Und das Problem ist immer noch da.

Im Moment sieht es so aus:
Es gibt einen Testuser, welcher in der Mysql_Datenbank liegt. Das Passwort ist in einem MD5-hush gespeichert. Wenn ich mich über ein FTP-Programm auf dem Server einlogge, funktioniert das auch ganz gut, bis an den Punkt, wo das Passwort abgefragt wird. Da bekomme ich dann im FTP-Programm ein Login Failed. In den Logfiles finde ich dann folgendes:
Code:
Jul  7 13:02:02 mein-server pure-ftpd: (?@p549A56AE.dip.t-dialin.net) [INFO] New connection from p549A56AE.dip.t-dialin.net
Jul  7 13:02:02 mein-server pure-ftpd: (?@p549A56AE.dip.t-dialin.net) [INFO] PAM_RHOST enabled. Getting the peer address
Jul  7 13:02:04 mein-server pure-ftpd: (?@p549A56AE.dip.t-dialin.net) [WARNING] Authentication failed for user [testuser]
Was mich jetzt ein bischen iritiert ist das '?' vor dem @ Zeichen. Müsste da nicht eigentlich auch der User stehen?

Den User in der Datenbank habe ich mehrmals überprüft dieser müsste eigentlich so funktionieren. Auch das Datenbank-Konfigurationsfile wird ausgelesen, und PURE bringt auch eine Datenbankverbindung zusammen. Einzig und allein die Passwortabfrage scheint nicht zu funktionieren.

Hier noch die Konfigurationsdaten:
mysql.conf
Code:
MYSQLSocket      /var/run/mysqld/mysqld.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       ftpuser
MYSQLPassword   geheimespasswort
MYSQLDatabase   ftpdb
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "R")

Wenn ich den Pure starte, startet er mit folgenden Optionen:
Code:
root@mein-server:/# /etc/init.d/pure-ftpd-mysql restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -j -A -E -B

Irgendwie weiss ich gerade nicht, wo ich noch suchen sollte.

Ich sag schon mal danke

Gruß Mordor
 
Last edited by a moderator:
So, und es geht weiter. Der Fehler ist jetzt erst mal behoben, und ich kann mich einloggen. Das Problem war, dass vor den Platzhalter für den Usernamen und die IP in den SQL-Querys ein Backslash muss, sonst kann Pure den Query nicht richtig schreiben. Da bin ich aber auch erst drauf gekommen, als ich mal die Querys von mysql mitloggen lassen hab.

Naja, aber es bleibt einem nichts erspart, jetzt lädt er den ordner vom ftp-user nicht. Der Ordner wurde zwar automatisch erstellt, jedoch wird er im FTP-Programm nicht gelasen. In den Logfiles steht dazu nix drin.
 
Ich glaub ich schreib da wirklich eines zu. Wobei, eigentlich müsste man nur den Thread hier etwas abändern ;-)
 
hi

Ich habe eben versucht mir wie oben beschrieben ein Debian Packet zu erstellen aber wenn ich dpkg-buildpackage -rfakeroot eingebe kommt folgender Fehler :

Code:
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/pure-ftpd-1.0.21'
make[2]: Leaving directory `/tmp/pure-ftpd-1.0.21'
make[1]: Leaving directory `/tmp/pure-ftpd-1.0.21'
mkdir src/vanilla
mv src/pure-pw src/pure-statsdecode src/pure-pwconvert src/--without-capabilities src/pure-authd src/pure-ftpwho src/pure-uploadscript src/pure-quotacheck src/pure-ftpd src/pure-mrtginfo src/vanilla
mv: cannot stat `src/--without-capabilities': No such file or directory
make: *** [src/vanilla/pure-ftpd] Error 1
dpkg-buildpackage: failure: debian/rules build gave error exit status 2

Es handelt sich um einen Vserver mit Lenny.

Gruß someone
 
Last edited by a moderator:
Nach upgrade wieder "capability" Problem

Guten Abend,

dank des HowTo und der Hilfe von Mordor beim Anlegen des Testusers lief der FTP.
Dec 21 20:48:12 xxx pure-ftpd: (?@xxx.dip0.t-ipconnect.de) [INFO] Testuser is now logged in

Aber nach einem upt-get upgrade stehe ich wieder am Anfang :-(
# apt-get upgrade
Die folgenden Pakete werden aktualisiert:
pure-ftpd-common pure-ftpd-mysql
2 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0B von 334kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 143kB Plattenplatz freigegeben.
Möchten Sie fortfahren [J/n]? j
Lese Changelogs... Fertig
Vorkonfiguration der Pakete ...
(Lese Datenbank ... 38817 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereiten zum Ersetzen von pure-ftpd-common 1.0.21-11.4 (durch .../pure-ftpd-common_1.0.21-11.4_all.deb) ...
Entpacke Ersatz für pure-ftpd-common ...
Vorbereiten zum Ersetzen von pure-ftpd-mysql 1.0.21-11.4 (durch .../pure-ftpd-mysql_1.0.21-11.4_i386.deb) ...
Stopping ftp server: pure-ftpd.
Entpacke Ersatz für pure-ftpd-mysql ...
Richte pure-ftpd-common ein (1.0.21-11.4) ...
Richte pure-ftpd-mysql ein (1.0.21-11.4) ...
Starting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -u 1000 -O clf:/var/log/pure-ftpd/transfer.log -E -j -A -B
invoke-rc.d: initscript pure-ftpd-mysql, action "start" failed.
dpkg: Fehler beim Bearbeiten von pure-ftpd-mysql (--configure):
Unterprozess post-installation script gab den Fehlerwert 252 zurück
Fehler traten auf beim Bearbeiten von:
pure-ftpd-mysql
E: Sub-process /usr/bin/dpkg returned an error code (1)
~# cat /var/log/syslog | grep pure
Dec 21 19:24:02 xxx pure-ftpd: (?@?) [ERROR] Unable to switch capabilities : Operation not permitted

Ein
~# apt-get remove pure-ftpd-mysql
und
dpkg -i pure-ftpd-common_1.0.21-11.4_all.deb pure-ftpd-mysql_1.0.21-11.4_i386.deb
macht den FTP wieder verfügbar, aber wie kann ich denn verhindern, dass ich mir beim nächsten upgrade die Konfiguration wieder zerschiesse?

Gruß
Balandine
 
Normalerweise zerschießt sich die Konfig nicht bei einem Update. Bei eine update tauscht Debian ja nicht die Konfigfiles aus. Und wenn es das macht, fragt es vorher nach.
 
Hallo Mordor,

[...] Bei eine update tauscht Debian ja nicht die Konfigfiles aus. Und wenn es das macht, fragt es vorher nach.

Du hast ja recht. Bei einem "apt-get update" werden die Paketlisten eingelesen. Das Relevante passiert danach beim "upt-get upgrade" Also der Ist-Zustand ist der, dass ich pure-ftp ohne capabilities neu kompiliert habe und der ftp dann fein seinen Dienst verrichtet. Wenn ich dann aber das System upgrade, dann habe ich wieder den pure-ftp mit capabilities
Code:
~:/home/tester# apt-get upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Lese Status-Informationen ein... Fertig
Die folgenden Pakete werden aktualisiert:
  libbind-dev libbind9-40 libdns45 libisc45 libisccc40 libisccfg40 liblwres40 [B]pure-ftpd-common pure-ftpd-mysql[/B]
9 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 2112kB von 2445kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 143kB Plattenplatz freigegeben.
Möchten Sie fortfahren [J/n]? j
[...]
Vorbereiten zum Ersetzen von libbind-dev 1:9.5.1.dfsg.P3-1 (durch .../libbind-dev_1%3a9.5.1.dfsg.P3-1+lenny1_i386.deb) ...
Entpacke Ersatz für libbind-dev ...
Vorbereiten zum Ersetzen von liblwres40 1:9.5.1.dfsg.P3-1 (durch .../liblwres40_1%3a9.5.1.dfsg.P3-1+lenny1_i386.deb) ...
Entpacke Ersatz für liblwres40 ...
Vorbereiten zum Ersetzen von libbind9-40 1:9.5.1.dfsg.P3-1 (durch .../libbind9-40_1%3a9.5.1.dfsg.P3-1+lenny1_i386.deb) ...
[...]
[B]Vorbereiten zum Ersetzen von pure-ftpd-common 1.0.21-11.4 (durch .../pure-ftpd-common_1.0.21-11.4_all.deb) ...
Entpacke Ersatz für pure-ftpd-common ...
Vorbereiten zum Ersetzen von pure-ftpd-mysql 1.0.21-11.4 (durch .../pure-ftpd-mysql_1.0.21-11.4_i386.deb) ...
Stopping ftp server: pure-ftpd.[/B]
[B]Entpacke Ersatz für pure-ftpd-mysql ...[/B]
Richte libisc45 ein (1:9.5.1.dfsg.P3-1+lenny1) ...
[...]
[B]Richte pure-ftpd-common ein (1.0.21-11.4) ...
Richte pure-ftpd-mysql ein (1.0.21-11.4) ...
Starting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -u 1000 -O clf:/var/log/pure-ftpd/transfer.log -E -j -A -B
invoke-rc.d: initscript pure-ftpd-mysql, action "start" failed.
dpkg: Fehler beim Bearbeiten von pure-ftpd-mysql (--configure):
 Unterprozess post-installation script gab den Fehlerwert 252 zurück
Fehler traten auf beim Bearbeiten von:
 pure-ftpd-mysql
E: Sub-process /usr/bin/dpkg returned an error code (1)[/B]
~:/home/tester

Jetzt habe ich den pure-ftp wieder mit dem capabilities-Problem :-(

Code:
uID  3449
Date 	Today 11:09:22
Host 	~
Messagetype 	Syslog
Facility 	FTP
Severity 	ERR
Syslogtag 	pure-ftpd:
Message 	(?@?) [ERROR] Unable to switch capabilities : Operation not permitted

Also installieren ich aus den Sourcen pure-ftp nach einem upgrade immer wieder neu.

Gruß
Balandine
 
Hi,

Du kannst apt in der Config mitgeben, dass Pakete, die auf bestimmte Patterns matchen, ignoriert werden sollen.
Die Config dazu solltest Du in /etc/apt/apt.conf.d/ finden. Sollte der Aufbau der Dateien dir noch nicht weiterhelfen, wirf mal einen Blick in die man-Pages von apt, wie es bei dir genau auszusehen hat.


-W
 
Hi Balandine,

folgendermaßen kannst Du apt-get upgrade daran hindern, die Pakete zu überschreiben:

Code:
# echo "pure-ftpd-common hold" | dpkg --set-selections
# echo "pure-ftpd-mysql hold" | dpkg --set-selections

(natürlich ohne #, das soll nur heißen, dass Du das als root machen sollst).

Man bekommt dann bei einem apt-get upgrade eine entsprechende Meldung. Kann man auch simulieren:

Code:
#apt-get upgrade -s

Und Vorsicht, falls Du mal ein Upgrade mit aptitude machen solltest, das hat seine eigenen Schalter um Pakete festzusetzen (Taste: "=").

tahomash
 
Back
Top