
17735
11.11.2006, aktualisiert am 12.11.2006
FTP-Kennwort per PHP ändern
Hallo,
ich betreibe hier einen Windows Server, auf dem der Apache Server mit PHP Unterstützung, und FileZilla FTP als FTP-Server läuft. Die Benutzer können sich mittels PHP auf dem Server an einem kleinen Webportal anmelden und da auch ihr Kennwort ändern, dass MD5-Verschlüsselt in einer MySQL-Datenbank landet.
So weit, so gut.
Nun hat aber jeder für das Webportal registrierte Benutzer auch einen Account beim FileZilla FTP-Server. Ich habe herausgefunden, dass FileZilla die Informationen über die Benutzer (also Benutzername, Kennwort und Berechtigungsoptionen) in der Datei FileZilla Server.xml speichert. (Das Kennwort wird dort ebenfalls mit Hilfe von MD5 verschlüsselt).
Zum besseren Verständnis des Aufbaus dieser XML-Datei befindet sich hier die komplette Beispielkonfigurationsdatei:
<FileZillaServer>
<Settings>
<Item name="Serverport" type="numeric">21</Item>
<Item name="Number of Threads" type="numeric">2</Item>
<Item name="Maximum user count" type="numeric">0</Item>
<Item name="Timeout" type="numeric">120</Item>
<Item name="No Transfer Timeout" type="numeric">120</Item>
<Item name="Allow Incoming FXP" type="numeric">0</Item>
<Item name="Allow outgoing FXP" type="numeric">0</Item>
<Item name="No Strict In FXP" type="numeric">0</Item>
<Item name="No Strict Out FXP" type="numeric">0</Item>
<Item name="Login Timeout" type="numeric">60</Item>
<Item name="Show Pass in Log" type="numeric">0</Item>
<Item name="Custom PASV Enable" type="numeric">0</Item>
<Item name="Custom PASV IP" type="string"></Item>
<Item name="Custom PASV min port" type="numeric">0</Item>
<Item name="Custom PASV max port" type="numeric">0</Item>
<Item name="Initial Welcome Message" type="string">%v
written by Tim Kosse (Tim.Kosse@gmx.de)
Please visit http://sourceforge.net/projects/filezilla/</Item>
<Item name="Admin IP Bindings" type="string"></Item>
<Item name="Admin IP Addresses" type="string"></Item>
<Item name="Enable logging" type="numeric">0</Item>
<Item name="Logsize limit" type="numeric">0</Item>
<Item name="Logfile type" type="numeric">0</Item>
<Item name="Logfile delete time" type="numeric">0</Item>
<Item name="Use GSS Support" type="numeric">0</Item>
<Item name="GSS Prompt for Password" type="numeric">0</Item>
<Item name="Download Speedlimit Type" type="numeric">0</Item>
<Item name="Upload Speedlimit Type" type="numeric">0</Item>
<Item name="Download Speedlimit" type="numeric">10</Item>
<Item name="Upload Speedlimit" type="numeric">10</Item>
<Item name="Buffer Size" type="numeric">4096</Item>
<Item name="Admin port" type="numeric">14147</Item>
<Item name="Serverports" type="string">21</Item>
<Item name="Custom PASV IP type" type="numeric">0</Item>
<Item name="Custom PASV IP server" type="string">http://filezilla.sourceforge.net/misc/ip.php</Item>
<Item name="Use custom PASV ports" type="numeric">0</Item>
<Item name="Mode Z Use" type="numeric">0</Item>
<Item name="Mode Z min level" type="numeric">1</Item>
<Item name="Mode Z max level" type="numeric">9</Item>
<Item name="Mode Z allow local" type="numeric">0</Item>
<Item name="Mode Z disallowed IPs" type="string"/>
<Item name="IP Bindings" type="string">*</Item>
<Item name="IP Filter Allowed" type="string"/>
<Item name="IP Filter Disallowed" type="string"/>
<Item name="Hide Welcome Message" type="numeric">0</Item>
<Item name="Enable SSL" type="numeric">0</Item>
<Item name="Allow explicit SSL" type="numeric">1</Item>
<Item name="SSL Key file" type="string"/>
<Item name="SSL Certificate file" type="string"/>
<Item name="Implicit SSL ports" type="string">990</Item>
<Item name="Force explicit SSL" type="numeric">0</Item>
<Item name="Network Buffer Size" type="numeric">65536</Item>
<SpeedLimits>
<Download/>
<Upload/>
</SpeedLimits>
</Settings>
<Groups/>
<Users>
<User Name="newuser"> Hier zum Beispiel der Benutzername
<Option Name="Pass">92eb8879a82524686acdd0058e1cd4f5</Option> Hier sein zugehöriges Kennwort
<Option Name="Group"/>
<Option Name="Bypass server userlimit">0</Option>
<Option Name="User Limit">0</Option>
<Option Name="IP Limit">0</Option>
<Option Name="Enabled">1</Option>
<Option Name="Comments"/>
<IpFilter>
<Disallowed/>
<Allowed/>
</IpFilter>
<Permissions>
<Permission Dir="\xampp\htdocs">
<Option Name="FileRead">1</Option>
<Option Name="FileWrite">1</Option>
<Option Name="FileDelete">1</Option>
<Option Name="FileAppend">1</Option>
<Option Name="DirCreate">1</Option>
<Option Name="DirDelete">1</Option>
<Option Name="DirList">1</Option>
<Option Name="DirSubdirs">1</Option>
<Option Name="IsHome">1</Option>
<Option Name="AutoCreate">0</Option>
</Permission>
</Permissions>
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
<Download/>
<Upload/>
</SpeedLimits>
</User>
</Users>
</FileZillaServer>
Frage: Ich möchte nun erreichen, dass wenn der Benutzer sein Kennwort für das Webportal ändert, das ebenfalls in MD5 verschlüsselte Kennwort in der XML-Konfigurationsdatei des FTP-Servers landet. Das heißt: Der Benutzer ändert sein Kennwort gleichzeitig für das PHP-basierte Webportal und für sein FTP-Konto.
Wie kann ich es nun also erreichen, dass PHP die .xml-Datei einliest, den Benutzer nach seinem Namen in der Datei sucht, und das Kennwort durch das neue ersetzt?
Bitte um dringende Hilfe.
Gruß,
Ahnenforscher
ich betreibe hier einen Windows Server, auf dem der Apache Server mit PHP Unterstützung, und FileZilla FTP als FTP-Server läuft. Die Benutzer können sich mittels PHP auf dem Server an einem kleinen Webportal anmelden und da auch ihr Kennwort ändern, dass MD5-Verschlüsselt in einer MySQL-Datenbank landet.
So weit, so gut.
Nun hat aber jeder für das Webportal registrierte Benutzer auch einen Account beim FileZilla FTP-Server. Ich habe herausgefunden, dass FileZilla die Informationen über die Benutzer (also Benutzername, Kennwort und Berechtigungsoptionen) in der Datei FileZilla Server.xml speichert. (Das Kennwort wird dort ebenfalls mit Hilfe von MD5 verschlüsselt).
Zum besseren Verständnis des Aufbaus dieser XML-Datei befindet sich hier die komplette Beispielkonfigurationsdatei:
<FileZillaServer>
<Settings>
<Item name="Serverport" type="numeric">21</Item>
<Item name="Number of Threads" type="numeric">2</Item>
<Item name="Maximum user count" type="numeric">0</Item>
<Item name="Timeout" type="numeric">120</Item>
<Item name="No Transfer Timeout" type="numeric">120</Item>
<Item name="Allow Incoming FXP" type="numeric">0</Item>
<Item name="Allow outgoing FXP" type="numeric">0</Item>
<Item name="No Strict In FXP" type="numeric">0</Item>
<Item name="No Strict Out FXP" type="numeric">0</Item>
<Item name="Login Timeout" type="numeric">60</Item>
<Item name="Show Pass in Log" type="numeric">0</Item>
<Item name="Custom PASV Enable" type="numeric">0</Item>
<Item name="Custom PASV IP" type="string"></Item>
<Item name="Custom PASV min port" type="numeric">0</Item>
<Item name="Custom PASV max port" type="numeric">0</Item>
<Item name="Initial Welcome Message" type="string">%v
written by Tim Kosse (Tim.Kosse@gmx.de)
Please visit http://sourceforge.net/projects/filezilla/</Item>
<Item name="Admin IP Bindings" type="string"></Item>
<Item name="Admin IP Addresses" type="string"></Item>
<Item name="Enable logging" type="numeric">0</Item>
<Item name="Logsize limit" type="numeric">0</Item>
<Item name="Logfile type" type="numeric">0</Item>
<Item name="Logfile delete time" type="numeric">0</Item>
<Item name="Use GSS Support" type="numeric">0</Item>
<Item name="GSS Prompt for Password" type="numeric">0</Item>
<Item name="Download Speedlimit Type" type="numeric">0</Item>
<Item name="Upload Speedlimit Type" type="numeric">0</Item>
<Item name="Download Speedlimit" type="numeric">10</Item>
<Item name="Upload Speedlimit" type="numeric">10</Item>
<Item name="Buffer Size" type="numeric">4096</Item>
<Item name="Admin port" type="numeric">14147</Item>
<Item name="Serverports" type="string">21</Item>
<Item name="Custom PASV IP type" type="numeric">0</Item>
<Item name="Custom PASV IP server" type="string">http://filezilla.sourceforge.net/misc/ip.php</Item>
<Item name="Use custom PASV ports" type="numeric">0</Item>
<Item name="Mode Z Use" type="numeric">0</Item>
<Item name="Mode Z min level" type="numeric">1</Item>
<Item name="Mode Z max level" type="numeric">9</Item>
<Item name="Mode Z allow local" type="numeric">0</Item>
<Item name="Mode Z disallowed IPs" type="string"/>
<Item name="IP Bindings" type="string">*</Item>
<Item name="IP Filter Allowed" type="string"/>
<Item name="IP Filter Disallowed" type="string"/>
<Item name="Hide Welcome Message" type="numeric">0</Item>
<Item name="Enable SSL" type="numeric">0</Item>
<Item name="Allow explicit SSL" type="numeric">1</Item>
<Item name="SSL Key file" type="string"/>
<Item name="SSL Certificate file" type="string"/>
<Item name="Implicit SSL ports" type="string">990</Item>
<Item name="Force explicit SSL" type="numeric">0</Item>
<Item name="Network Buffer Size" type="numeric">65536</Item>
<SpeedLimits>
<Download/>
<Upload/>
</SpeedLimits>
</Settings>
<Groups/>
<Users>
<User Name="newuser"> Hier zum Beispiel der Benutzername
<Option Name="Pass">92eb8879a82524686acdd0058e1cd4f5</Option> Hier sein zugehöriges Kennwort
<Option Name="Group"/>
<Option Name="Bypass server userlimit">0</Option>
<Option Name="User Limit">0</Option>
<Option Name="IP Limit">0</Option>
<Option Name="Enabled">1</Option>
<Option Name="Comments"/>
<IpFilter>
<Disallowed/>
<Allowed/>
</IpFilter>
<Permissions>
<Permission Dir="\xampp\htdocs">
<Option Name="FileRead">1</Option>
<Option Name="FileWrite">1</Option>
<Option Name="FileDelete">1</Option>
<Option Name="FileAppend">1</Option>
<Option Name="DirCreate">1</Option>
<Option Name="DirDelete">1</Option>
<Option Name="DirList">1</Option>
<Option Name="DirSubdirs">1</Option>
<Option Name="IsHome">1</Option>
<Option Name="AutoCreate">0</Option>
</Permission>
</Permissions>
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
<Download/>
<Upload/>
</SpeedLimits>
</User>
</Users>
</FileZillaServer>
Frage: Ich möchte nun erreichen, dass wenn der Benutzer sein Kennwort für das Webportal ändert, das ebenfalls in MD5 verschlüsselte Kennwort in der XML-Konfigurationsdatei des FTP-Servers landet. Das heißt: Der Benutzer ändert sein Kennwort gleichzeitig für das PHP-basierte Webportal und für sein FTP-Konto.
Wie kann ich es nun also erreichen, dass PHP die .xml-Datei einliest, den Benutzer nach seinem Namen in der Datei sucht, und das Kennwort durch das neue ersetzt?
Bitte um dringende Hilfe.
Gruß,
Ahnenforscher
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44219
Url: https://administrator.de/forum/ftp-kennwort-per-php-aendern-44219.html
Ausgedruckt am: 28.04.2025 um 12:04 Uhr
4 Kommentare
Neuester Kommentar

Einfach, oder aber auch kompliziert, je nach Konfiguration.
Normalerweise solltest Du die Konfig-Datei in ein schreibbares Verzeichnis kopieren, von dort in das Programmverzeichnis (wo die XML-Datei liegt) kopieren, und die alte Datei mit Zeitstempel umbenannt wegsichern.
(gut wegen Backup und Wiederherstellung...
Alles schon mal erledigt ^^
Is abba gar ned sooo einfach...
(weil Du dem Webserver beibringen mußt, daß er das Wegsichern über das Webverzeichnis hinweg machen soll; da hat's dann bei mir damals unter Windows ein paar Problemchen gegeben... aber jemand mit mehr PHP-Verständnis, für den wäre das sicher ein Klacks
)
Lonesome Walker
Normalerweise solltest Du die Konfig-Datei in ein schreibbares Verzeichnis kopieren, von dort in das Programmverzeichnis (wo die XML-Datei liegt) kopieren, und die alte Datei mit Zeitstempel umbenannt wegsichern.
(gut wegen Backup und Wiederherstellung...
Alles schon mal erledigt ^^
Is abba gar ned sooo einfach...
(weil Du dem Webserver beibringen mußt, daß er das Wegsichern über das Webverzeichnis hinweg machen soll; da hat's dann bei mir damals unter Windows ein paar Problemchen gegeben... aber jemand mit mehr PHP-Verständnis, für den wäre das sicher ein Klacks
Lonesome Walker

*grr* Doppelpost...

Ups, pardon ^^
http://www.drweb.de/php/php-xml.shtml
http://de2.php.net/simplexml
Je nach PHP-Version.
Datei kplt. einlesen und wieder neu schreiben lassen.
Lonesome Walker
edit:
Ich hab' grade nochma im Projektordner nachgesehen, der Bookmark hier hat mir sehr weitergeholfen:
http://www.pc-magazin.de/praxis/windows/cm/page/page.php?table=pg&i ...
http://www.drweb.de/php/php-xml.shtml
http://de2.php.net/simplexml
Je nach PHP-Version.
Datei kplt. einlesen und wieder neu schreiben lassen.
Lonesome Walker
edit:
Ich hab' grade nochma im Projektordner nachgesehen, der Bookmark hier hat mir sehr weitergeholfen:
http://www.pc-magazin.de/praxis/windows/cm/page/page.php?table=pg&i ...