Apache als Dienst (W2k): Welche Rechte?

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Apache als Dienst (W2k): Welche Rechte?

Postby thor » 13. January 2005 16:05

Hallo,

ich habe eine Frage zu den Rechten, mit denen ein Apache-Dienst unter Windows 2000 Pro laufen muß.

Zur Installation: XAMPP Windows 1.4.11 auf W2kSP4 Pro frisch installiert; Installationsort ist nicht die Systempartition; aufgrund von FAT32-Partitionen gibt es keine Rechtevergaben auf den einzelnen Verzeichnissen. Apache wurde mit mitgeliefertem Skript als Dienst installiert und läuft damit defaultmäßig als "Lokales Systemkonto" (LocalSystem).

Mit dieser Rechtevergabe von Apache gibt es jedoch bei mir zwei Fehler (jeweils angemeldet als Administrator):

1. phpmyadmin: SQL-Importe funktieren überhaupt nicht ("Datei nicht gefunden" o.ä. Fehler)

2. Xampp-Beispiel "Telefonbuch" (Demo von sqlite): funktioniert nicht
    Warning: sqlite_open() [function.sqlite-open]: malformed database schema - unable to open a temporary database file for storing temporary tables in D:\Xampp\htdocs\xampp\phonebook.php on line 34


Beide Probleme verschwinden, wenn die Rechte des Apache-Dienstes geändert werden: statt LocalSystem reicht ein normales Administrator-Konto. Danach läuft das System einwandfrei.

Woran könnte es liegen, daß das Recht "lokales Systemkonto" nicht ausreichend ist? Außer den o.g. Problemen funktioniert mit diesem Recht alles andere übrigens reibungslos. Bin nur durch die Importprobleme in myphpadmin auf diese Lösung/Problematik gestoßen.

Danke für Infos,

Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Postby Wiedmann » 13. January 2005 16:16

Wie siehts mit Schreibrechten im Tempverzeichnis aus?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thor » 13. January 2005 16:39

Da ich lediglich FAT32 Partitionen nutze, gibt es keine Rechtebeschränkungen bzg. Datei-/Verzeichniszugriffen.

Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Postby Wiedmann » 13. January 2005 17:03

Da ich lediglich FAT32 Partitionen nutze,

Auch auf der Systempartition?

Beide Probleme verschwinden, wenn die Rechte des Apache-Dienstes geändert werden: statt LocalSystem reicht ein normales Administrator-Konto. Danach läuft das System einwandfrei.


Der Apache/MySQL läuft jedenfalls ansonsten mit dem Konto "LocalSystem" korrekt.

Der hier zum Tragen kommende Unterschied ist eigentlich nur, dass die zwei von dir benutzen Konten verschiedene Rechte in den Verzeichnissen haben. Was aber tatsächlich nur bei NTFS wirksam ist. Zusätzlich darf der Administrator noch auf Netzwerklaufwerke zugreifen (im Gegensatz zum "LocalSystem" ).

BTW:
Mit einem FileMonitor / ProcessMonitor kannst ja mal schauen auf was der XAMPP bei diesen Punkten bei dir zugreifen will.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thor » 13. January 2005 18:09

Auch auf der Systempartition?

Auch die Systempartition läuft (ausgezeichnet) auf Fat32.

Mit einem FileMonitor / ProcessMonitor kannst ja mal schauen auf was der XAMPP bei diesen Punkten bei dir zugreifen will.

Danke, gute Idee.

Ergebnis:
Apache greift schreibend und lesend auf das Laufwerk C: zu. (Telefonbuch: nur Windows-TMP-Verzeichnis; phpmyadmin-Importfunktion: neben TMP auch diverse DLLs aus C:\winnt\system32)

Der Zugriff auf C klappt allerdings nur mit Admin-Rechten. "LocalSystem" hat offensichtlich nur das Recht, auf die Platte zuzugreifen, auf der auch Apache installiert ist (D:\). Der Zugriff auf die Partition C: erfolgt von Apache aus also im Rahmen eines "Netzlaufwerks".

Da Xampp vmtl. meistens auf Laufwerk C: installiert wird, taucht dieses Problem bei den meisten Benutzern wohl nicht auf.

Insofern stellen sich die Fragen:
- wieso nutzt Apache nicht sein eigenes tmp-Verzeichnis?
- Gibt es einen Workaround für den Zugriff auf C: (ohne Änderung des Systemkontos)?

Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Postby Wiedmann » 13. January 2005 18:41

Apache greift schreibend und lesend auf das Laufwerk C: zu. (Telefonbuch: nur Windows-TMP-Verzeichnis; phpmyadmin-Importfunktion: neben TMP auch diverse DLLs aus C:\winnt\system32)

Das wäre merkwürdig, da dort keine Datei von XAMPP liegt... Die Programme benutzen aber beide das Temp-Verzeichnis (phpMyAdmin bedingt durch den Upload). Was greift bei dir genau auf welche DLL zu?

Kann ich bei mir zudem auch nicht nachvollziehen.

Der Zugriff auf die Partition C: erfolgt von Apache aus also im Rahmen eines "Netzlaufwerks".

Nein. Du hast entweder eine Partition oder du benutzt eine Netzwerkshare (Dienste benutzen dann den UNC-Namen). Ein Zugriff auf die Systempartition wird immer lokal erfolgen....

Da Xampp vmtl. meistens auf Laufwerk C: installiert wird, taucht dieses Problem bei den meisten Benutzern wohl nicht auf.

k.a. bei mir ist er auf "e:"... (Beiträge hier im Forum lassen das zudem auch nicht unbedingt vermuten...)

- wieso nutzt Apache nicht sein eigenes tmp-Verzeichnis?

Zum Teil liegt das an den Scripten. Und zum Anderen an dem ungünstigen Eintrag in der "php.ini".

Im allgemeinen benutzt der Apache das Verzeichnis das als TEMP-Pfad im System (vom Administrator --> dir) hinterlegt ist. Systemeinstellungen ändert der XAMPP keine bei der Installation oder Start.

- Gibt es einen Workaround für den Zugriff auf C: (ohne Änderung des Systemkontos)?

Ehrlichgesagt bin ich da jetzt überfragt, was bei deinem SystemKonto jetzt verstellt ist. Mit den normalen Einstellungen für dieses Konto treten jedenfalls diese Probleme nicht auf --> ist ja dafür da. ("Sicherheitsprogramme" mögen da auch dazwischenfunken oder für solche Einstellungen verantwortlich sein)

An Schreibrechten kann es jedenfalls eigentlich nicht liegen (da FAT32). Überprüfe doch mal die sonstigen Rechte von deinem SystemKonto (und/oder vergleiche sie mit einem weiterem PC)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thor » 13. January 2005 19:13

Was greift bei dir genau auf welche DLL zu?

Das Protokoll ist ein wenig länger.... Hier ein paar gekürzte Protokollauszüge, wenn ein SQL-Import initiiert wird:
Code: Select all
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ICMP.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ICMP.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\MPRAPI.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\MPRAPI.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ACTIVEDS.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ACTIVEDS.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ADSLDPC.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\ADSLDPC.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RTUTILS.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RTUTILS.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\SETUPAPI.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\SETUPAPI.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\USERENV.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\USERENV.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RASAPI32.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RASAPI32.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RASMAN.DLL   SUCCESS   Attributes: A   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\RASMAN.DLL   SUCCESS   FileNameInformation   
17:36:46   Apache.exe:2604   QUERY INFORMATION   C:\WINNT\system32\TAPI32.DLL   SUCCESS   Attributes: A   

Überprüfe doch mal die sonstigen Rechte von deinem SystemKonto (und/oder vergleiche sie mit einem weiterem PC)

Wie kann man die Rechte des Systemkontos überprüfen? Habe hier auch noch nie etwas geändert.

Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Postby Wiedmann » 13. January 2005 19:40

Hmm. Zugriffe auf diese DLL's kenn ich eigentlich nur, wenn der Apache/oder ein Child davon neu startet. (Ermittlung der IP und Netzwerkkarten) *grübel*

Tatsächlich war der Zugrif ja auch erfolgreich (SUCCESS).

Steht denn was im error.log ("\xampp\apache\logs")?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thor » 13. January 2005 20:19

Hmm. Zugriffe auf diese DLL's kenn ich eigentlich nur, wenn der Apache/oder ein Child davon neu startet.

Stimmt, das war ein Fehler in meinem Protokoll. Wenn das Child neu gestartet ist, beschränkt sich der Zugriff von phpmyadmin tatsächlich nur auf das TEMP-Verzeichnis auf C:.

Tatsächlich war der Zugrif ja auch erfolgreich (SUCCESS).

War ja auch nicht das Systemkonto...

Steht denn was im error.log ("\xampp\apache\logs")?

Nein.

Zitat:
- wieso nutzt Apache nicht sein eigenes tmp-Verzeichnis?

Zum Teil liegt das an den Scripten. Und zum Anderen an dem ungünstigen Eintrag in der "php.ini".

In der php.ini scheint für das Temp-Verzeichnis das unter Xampp liegende angegeben zu sein; wird aber scheinbar ignoriert...
Code: Select all
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = ".;D:\Xampp\tmp"


Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Postby thor » 14. January 2005 17:23

Zwar immer noch keine Lösung, aber dafür Problemeingrenzung. Falls Apache mit den Rechten des Systemkontos (LocalSystem) läuft, scheitert tmpfile(). Direktzugriff auf die andere Partition klappt dagegen. Wenn Apache mit Admin-Rechten läuft, klappt tmpfile(). Hier Code zum evtl. Nachvollziehen...:
Code: Select all
<?php
   // Test Dateizugriff auf Systempartition (W2ksp4, Fat32)

   $file = 'c:/tmp-sys/w2k/test.txt';
   echo "1. Test mit user-tempfile: ($file) <br>\n";
   
   $fd = fopen($file, 'w+') or die('error open user tmpfile');
   fputs($fd, "Zeile1 user-tmpfile\n");
   fputs($fd, "Zeile2 usertmpfile\n");
   rewind ($fd);
   while( false !== ($line=fgets($fd)) )
      echo "$line<br>\n";
   echo "<br><br>";


   echo "2. Test mit OS-tmpfile:<br>\n";

   $temp = tmpfile();
   fputs($temp, "Zeile1 os-tempfile\n");
   fputs($temp, "Zeile2 os-tempfile\n");
   rewind ($temp);
   while( false !== ($line=fgets($temp)) )
      echo $line."<br>\n";
   fclose($temp); // dies entfernt die Datei
?>

Noch jemand eine Idee?
Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07

Lösung: Apache als Dienst (W2k): Welche Rechte?

Postby thor » 21. January 2005 14:53

Hier ist die Lösung für das Archiv.

Problem war:
Apache lief auf FAT32-Partition unter W2k als Dienst nicht korrekt mit dem normalerweise eingestellten Systemkonto (LocalSystem). Es mußte ein Benutzerkonto mit Admin-Rechten für den Dienst benutzt werden. Auf das temporäre Verzeichnis des Betriebssystems konnte nicht zugegriffen werden, was sich bei einigen Funktionen durch Fehler bemerkbar machte: z.B. sql-lite-Beispiel in Xampp und sql-Importe in phpmyadmin funktionierten nicht mehr.

Lösung:
Die Umgebungsvariablen TEMP/TMP für das temporäre Systemverzeichnis waren bei mir versehentlich doppelt definiert. Einmal für den Benutzer, einmal für das System. Der Pfad für die Benutzervariable existierte; der Pfad für die Systemvariable existierte jedoch nicht (mehr). Falls Apache unter einem Systemkonto lief, konnte somit nicht auf ein temporäres Verzeichnis zugegriffen werden, was für die o.g. Funktionen notwendig ist.

Thorsten
thor
 
Posts: 13
Joined: 07. September 2004 13:07


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 46 guests