17735
Goto Top

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

Content-Key: 44219

Url: https://administrator.de/contentid/44219

Printed on: April 23, 2024 at 06:04 o'clock

Mitglied: 16568
16568 Nov 11, 2006 at 23:05:29 (UTC)
Goto Top
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 face-wink )


Lonesome Walker
Mitglied: 16568
16568 Nov 11, 2006 at 23:05:35 (UTC)
Goto Top
*grr* Doppelpost...
Mitglied: 17735
17735 Nov 12, 2006 at 08:41:17 (UTC)
Goto Top
Hallo Lonesome Walker,

dein Post beschreibt aber leider nur, wie ich die Konfigdatei kopieren, bzw. eine Sicherheitskopie davon erstellen kann. Das wäre weiterhin kein Problem, allerdíngs muss ich wissen, wie man die Zeile mit dem Kennwort bei dem entsprechenden User per PHP bearbeitet.

Gruß,
Ahnenforscher
Mitglied: 16568
16568 Nov 12, 2006 at 09:24:27 (UTC)
Goto Top
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 ...