Verzeichnisrechte unter Windows ändern

Verzeichnisrechte unter Windows ändern

am 01.07.2005 23:01:18 von Michaela Kraus

Ich habe ein Uploadscript, welches die Funktion move_uploaded_file
verwendet. Diese ruft aber die Fehlermeldung 'permission denied' hervor.
Beim Suchen in Foren bin ich auch ziemlich häufig auf das Problem
gestossen, (CHMOD auf 777 stellen), das bezieht sich aber immer auf
Server, die unter Linux laufen.

Der Server ist auf meinem Rechner installiert. Gibt es unter Windows
eine ähnliche Möglichkeit, Verzeichnisrechte zu ändern ?

Re: Verzeichnisrechte unter Windows ändern

am 01.07.2005 23:16:28 von Nobody

Am Fri, 01 Jul 2005 23:01:18 +0200 schrieb Michaela Kraus:

> Ich habe ein Uploadscript, welches die Funktion move_uploaded_file
> verwendet. Diese ruft aber die Fehlermeldung 'permission denied' hervor.
> Beim Suchen in Foren bin ich auch ziemlich häufig auf das Problem
> gestossen, (CHMOD auf 777 stellen), das bezieht sich aber immer auf
> Server, die unter Linux laufen.
>
> Der Server ist auf meinem Rechner installiert. Gibt es unter Windows
> eine ähnliche Möglichkeit, Verzeichnisrechte zu ändern ?


Im PHP Manual zu chmod ist folgendes zu finden:
http://sshqudsi.com/computerguru/Products/CHMOD-Win.htm


--
-------------------------------------------------------
Try this: SCA the Smart Class Archive for PHP
http://www.project-sca.org
-------------------------------------------------------

Re: Verzeichnisrechte unter Windows ändern

am 01.07.2005 23:17:10 von Dirk Sohler

> Beim Suchen in Foren bin ich auch ziemlich häufig auf das Problem
> gestossen, (CHMOD auf 777 stellen), das bezieht sich aber immer auf
> Server, die unter Linux laufen.
>
> Der Server ist auf meinem Rechner installiert. Gibt es unter Windows
> eine ähnliche Möglichkeit, Verzeichnisrechte zu ändern ?

Soweit ich weis, gibt es unter Windows keine Möglichkeit, zugriffsrechte
zu setzen, die mit CHMOD vergleichbar wären. Allenfalls noch über
bestimmte Rechte bei NTFS-Partitionen.

Grüße,
Dirk


--
"Die Diskussion um die Durchsetzung des Rechts auf Anonymität im
Internet zeigt, daß inzwischen auch Selbstverständliches der
Begründung und Verteidigung bedarf." - Dr. Helmut Bäumler

Re: Verzeichnisrechte unter Windows ändern

am 02.07.2005 11:18:54 von Michaela Kraus

Thomas Hamacher schrieb:

>
>
> Und dieses Rechte kannst du mit dem Programm "cacls" über die Konsole
> setzen, genau wie mit chmod und chown unter Linux.
>
> cacls /t /g Benutzer:Berechtigung


Ich habe die Rechte des Administrators über die Registerkarte
"Sicherheit" eingestellt, dadurch sollte ich alle notwendigen
Zugriffsrechte, zumindest von Windows aus besitzen (Laut einer
calcs-Anleitung bewirkt das dasselbe wie calcs).

Auch den Schreibschutz der betreffenden Dateien habe ich entfernt.
Dennoch kann ich die temporär erstellte Datei nicht verschieben. Gibts
es evtl noch eine Einstellung in der php.ini, die geändert werden muss ?

Danke schonmal,
Michaela

Re: Verzeichnisrechte unter Windows ändern

am 02.07.2005 11:20:05 von Thomas Hamacher

Dirk Sohler schrieb:
>> Beim Suchen in Foren bin ich auch ziemlich häufig auf das Problem
>> gestossen, (CHMOD auf 777 stellen), das bezieht sich aber immer auf
>> Server, die unter Linux laufen.

>> Der Server ist auf meinem Rechner installiert. Gibt es unter Windows
>> eine ähnliche Möglichkeit, Verzeichnisrechte zu ändern ?

> Soweit ich weis, gibt es unter Windows keine Möglichkeit, zugriffsrechte
> zu setzen, die mit CHMOD vergleichbar wären. Allenfalls noch über
> bestimmte Rechte bei NTFS-Partitionen.

Und dieses Rechte kannst du mit dem Programm "cacls" über die Konsole
setzen, genau wie mit chmod und chown unter Linux.

cacls /t /g Benutzer:Berechtigung

Re: Verzeichnisrechte unter Windows ändern

am 02.07.2005 11:52:46 von Michaela Kraus

Ich habe nun sicherheitshalber auch noch mal mit calcs geprüft, und auch
dort wird Vollzugriff angezeigt.

Re: Verzeichnisrechte unter Windows ändern

am 02.07.2005 18:39:01 von Thomas Hamacher

Michaela Kraus schrieb:
> Thomas Hamacher schrieb:

>> Und dieses Rechte kannst du mit dem Programm "cacls" über die Konsole
>> setzen, genau wie mit chmod und chown unter Linux.

>> cacls /t /g Benutzer:Berechtigung

> Ich habe die Rechte des Administrators über die Registerkarte
> "Sicherheit" eingestellt, dadurch sollte ich alle notwendigen
> Zugriffsrechte, zumindest von Windows aus besitzen (Laut einer
> calcs-Anleitung bewirkt das dasselbe wie calcs).

Ja, es bewirkt das selbe. Aber warum die Rechte des Administrators?

Mit tasklist /V | find "" kannst du überprüfen, welcher
Benutzer den Server ausführt. Administrator ist eine schlechte Wahl.

> Auch den Schreibschutz der betreffenden Dateien habe ich entfernt.
> Dennoch kann ich die temporär erstellte Datei nicht verschieben. Gibts
> es evtl noch eine Einstellung in der php.ini, die geändert werden muss ?

Wenn du einen "permission denied" Fehler bekommst, dann liegt es an den
Rechten und nicht an der PHP-Konfiguration.

Re: Verzeichnisrechte unter Windows ändern

am 02.07.2005 19:31:43 von Michaela Kraus

Thomas Hamacher schrieb:

> Michaela Kraus schrieb:
>
>> Thomas Hamacher schrieb:
>
>
>>> Und dieses Rechte kannst du mit dem Programm "cacls" über die Konsole
>>> setzen, genau wie mit chmod und chown unter Linux.
>
>
>>> cacls /t /g Benutzer:Berechtigung
>
>
>> Ich habe die Rechte des Administrators über die Registerkarte
>> "Sicherheit" eingestellt, dadurch sollte ich alle notwendigen
>> Zugriffsrechte, zumindest von Windows aus besitzen (Laut einer
>> calcs-Anleitung bewirkt das dasselbe wie calcs).
>
>
> Ja, es bewirkt das selbe. Aber warum die Rechte des Administrators?

Ich habe mich ehrlich gesagt noch nie gross mit den Benutzerrechten
auseinandergesetzt. Das Konto wurde automatisch bei der Installation
erstellt, und das habe ich beibehalten. Den Server habe ich auch nur zu
Lernzwecken, und der PC befindet sich auch in keinem Netzwerk, ich sah
da einfach nie eine Veranlassung zu
>
> Mit tasklist /V | find "" kannst du überprüfen, welcher
> Benutzer den Server ausführt. Administrator ist eine schlechte Wahl.

Der Prozess wird von dem Benutzernamen ausgeführt, mit dem ich
standardmässig angemeldet bin.
Mit welchen Rechten sollte ich mich standardmässig einloggen ? Oder hast
du vielleicht einen Tip, wo ich mich zu dem Thema schlaumachen könnte ?

Mir ist auch noch etwas anderen aufgefallen:
Ich habe den Schreibschutz des Ordners mit Attrib -r entfernt, dennoch
wird in den Eigenschaften des Ordners weiterhin Schreibschutz angezeigt.
Könnte es vielleicht daran liegen ?

Re: Verzeichnisrechte unter Windows ändern

am 03.07.2005 00:00:47 von Thomas Hamacher

Michaela Kraus schrieb:
> Thomas Hamacher schrieb:
>> Michaela Kraus schrieb:

>>> Ich habe die Rechte des Administrators über die Registerkarte
>>> "Sicherheit" eingestellt, dadurch sollte ich alle notwendigen
>>> Zugriffsrechte, zumindest von Windows aus besitzen (Laut einer
>>> calcs-Anleitung bewirkt das dasselbe wie calcs).

>> Ja, es bewirkt das selbe. Aber warum die Rechte des Administrators?

> Ich habe mich ehrlich gesagt noch nie gross mit den Benutzerrechten
> auseinandergesetzt. Das Konto wurde automatisch bei der Installation
> erstellt, und das habe ich beibehalten. Den Server habe ich auch nur zu
> Lernzwecken, und der PC befindet sich auch in keinem Netzwerk, ich sah
> da einfach nie eine Veranlassung zu

Welchen Server verwendest du überhaupt? Läuft der Server als Dienst oder
startest du ihn jedes mal manuell?

>> Mit tasklist /V | find "" kannst du überprüfen, welcher
>> Benutzer den Server ausführt. Administrator ist eine schlechte Wahl.

> Der Prozess wird von dem Benutzernamen ausgeführt, mit dem ich
> standardmässig angemeldet bin.

Dann solltest du diesem Benutzer auch die Schreibrechte in dem
entsprechenden Verzeichnis geben und nicht "Administrator". Es gibt
einen eklatanten Unterschied zwischen dem Benutzer "Administrator" und
der Benutzergruppe "Administratoren".

> Mit welchen Rechten sollte ich mich standardmässig einloggen ?

Mit Benutzerrechten, was sonst?

> Oder hast
> du vielleicht einen Tip, wo ich mich zu dem Thema schlaumachen könnte ?

In der Newsgroup bzw. in deren FAQ. Das ist
zumindest ein guter Einstieg. Wenn es nur um das Rechtekonzept unter
NTFS geht, dann findest du im MS-TechNet jede Menge Informationen dazu.

> Mir ist auch noch etwas anderen aufgefallen:
> Ich habe den Schreibschutz des Ordners mit Attrib -r entfernt, dennoch
> wird in den Eigenschaften des Ordners weiterhin Schreibschutz angezeigt.
> Könnte es vielleicht daran liegen ?

Das passiert genau dann, wenn das übergeordnete Verzeichnis
schreibgeschützt ist. Dann wird der Schreibschutz immer wieder auf die
untergeordneten Verzeichnisse übernommen. Der Schreibschutz ist aber
beim Schreiben in das Verzeichnis irrelevant, auch wenn sich das komisch
änhort.

Re: Verzeichnisrechte unter Windows ändern

am 03.07.2005 00:46:13 von Carsten Wiedmann

Thomas Hamacher schrieb:

> Michaela Kraus schrieb:
>
> > Mir ist auch noch etwas anderen aufgefallen:
> > Ich habe den Schreibschutz des Ordners mit Attrib -r entfernt,
> > dennoch wird in den Eigenschaften des Ordners weiterhin
> > Schreibschutz angezeigt. Könnte es vielleicht daran liegen ?
>
> Das passiert genau dann, wenn das übergeordnete Verzeichnis
> schreibgeschützt ist. Dann wird der Schreibschutz immer wieder auf
> die untergeordneten Verzeichnisse übernommen. Der Schreibschutz ist
> aber beim Schreiben in das Verzeichnis irrelevant, auch wenn sich
> das komisch änhort.

Das stimmt so nicht ganz. Was Michaela da gesehen hat, in den
Eigenschaften eines Ordners, ist ein Haken in einem grauen Feld. Was
soviel bedeutet wie: "ich habe keine Ahnung". Weshalb diese Anzeige
tatsächlich irrelevant ist.

Mit dem Explorer ist es auch nicht möglich /für/ ein Verzeichnis einen
Schreibschutz festzulegen, sondern nur für Dateien innerhalb eines
Verzeichnisses. Weshalb auch nur ACL's und kein R-Attribut nach unten
vererbbar ist. Mit attrib würde das zwar gehen, hat aber keinen Einfluss
auf Dateien die man nachträglich in so einen Order tut.


Ansonsten stimm ich dir zu. Schreibrechte benötigt das Konto unter dem
der Server läuft. Das Temp-Verzeichnis nicht vergessen (upload_tmp_dir),
ist dieses korrekt gesetzt?

Gruß
Carsten

Re: Verzeichnisrechte unter Windows ändern

am 03.07.2005 03:40:36 von Michaela Kraus

Carsten Wiedmann schrieb:




> Mit dem Explorer ist es auch nicht möglich /für/ ein Verzeichnis einen
> Schreibschutz festzulegen, sondern nur für Dateien innerhalb eines
> Verzeichnisses. Weshalb auch nur ACL's und kein R-Attribut nach unten
> vererbbar ist. Mit attrib würde das zwar gehen, hat aber keinen Einfluss
> auf Dateien die man nachträglich in so einen Order tut.

Wenn das für Dateien die man nachträglich dorthin verschiebt, nicht
möglich ist, wie dann überhaupt? Zumindest zeigt cacls für das Konto
Vollzugriff an, der ja auch das Schreibrecht umfasst. Ich habe auch
nochmal nachgesehen, wie die Benutzerkonten angelegt werden: Da wird nur
zwischen Administratorkonto und eingeschränkt unterschieden, und mit
einem solchen Konto habe ich das Vollzugriffsrecht, so wird es zumindest
für die betreffenden Verzeichnisse angezeigt (mit cacls)

> Ansonsten stimm ich dir zu. Schreibrechte benötigt das Konto unter dem
> der Server läuft. Das Temp-Verzeichnis nicht vergessen (upload_tmp_dir),
> ist dieses korrekt gesetzt?

Vielleicht liegt da ja der Haken. Ich habe Xampp als Server, der schon
ziemlich umfangreich vorkonfiguriert ist (starte ich manuell). Die
upload_tmp_dir habe ich aus der php.ini kopiert. Kann es sein dass dort
kein absoluter Pfad angegeben werden darf?
Wenn man einen relativen Pfad angibt, muss es dann vom Verzeichnis der
Uploadscripts aus sein, oder vom Verzeichnis in dem sich der Server
befindet ?
Was ich auch nicht so recht verstehe: wenn ich statt move_uploaded_file
die Funktion copy benutze, hab ich das Problem nicht, nur brauche ich
das $_FILES-Array, das aber dann leer bleibt.

Nochmal danke,
Michaela

Re: Verzeichnisrechte unter Windows ändern

am 03.07.2005 10:43:12 von Carsten Wiedmann

Michaela Kraus schrieb:

> Carsten Wiedmann schrieb:
>
> > Ansonsten stimm ich dir zu. Schreibrechte benötigt das Konto unter
> > dem der Server läuft. Das Temp-Verzeichnis nicht vergessen
> > (upload_tmp_dir), ist dieses korrekt gesetzt?
>
> Vielleicht liegt da ja der Haken. Ich habe Xampp als Server, der
> schon ziemlich umfangreich vorkonfiguriert ist (starte ich manuell).
> Die upload_tmp_dir habe ich aus der php.ini kopiert. Kann es sein
> dass dort kein absoluter Pfad angegeben werden darf?

Wieso hast du das "upload_tmp_dir" aus der ini kopiert? Das braucht man
doch im Script gar nicht. Da du aber einen XAMPP hast:
In der "php.ini" ("\xampp\apache\bin") steht die Zeile (Pfad bei dir
anpassen):
| upload_tmp_dir = ".;C:\xampp\tmp"

ändere das mal in:
| upload_tmp_dir = "C:\xampp\tmp"

In diesem Verzeichnis braucht der Apache also auch Schreibrechte. Apache
neu starten.

Da du den Apachen manuell startest (Control Center oder Batch), läuft er
mit deinen Rechten. Wenn du als in diesem Verzeichnis Dateien anlegen
kannst, dann kann PHP das auch). Du hast also wohl jetzt Vollzugriff
(ändern "Änden") auf "C:\xampp" und Unterorder für deinen Benutzer (oder
"Jeder"). Damit sollte alles tun.


> Wenn man einen relativen Pfad angibt, muss es dann vom Verzeichnis
> der Uploadscripts aus sein, oder vom Verzeichnis in dem sich der
> Server befindet ?
> Was ich auch nicht so recht verstehe: wenn ich statt
> move_uploaded_file die Funktion copy benutze, hab ich das Problem
> nicht, nur brauche ich das $_FILES-Array, das aber dann leer bleibt.

move_uploaded_files() erwartet 2 Parameter. Als ersten nimmt man
"$_FILES['userfile']['tmp_name']", und als zweiten das Ziel wo die Datei
hinsoll (voller Pfad + Dateiname).

siehe dazu auch nochmal:
http://de.php.net/manual/de/features.file-upload.php

Gruß
Carsten

Re: Verzeichnisrechte unter Windows ändern

am 03.07.2005 14:07:15 von Michaela Kraus

Carsten Wiedmann schrieb:

>
>
> Wieso hast du das "upload_tmp_dir" aus der ini kopiert? Das braucht man
> doch im Script gar nicht. Da du aber einen XAMPP hast:
> In der "php.ini" ("\xampp\apache\bin") steht die Zeile (Pfad bei dir
> anpassen):
> | upload_tmp_dir = ".;C:\xampp\tmp"
>
> ändere das mal in:
> | upload_tmp_dir = "C:\xampp\tmp"

Ich habe den Fehler gefunden, der ist so dumm das es schon peinlich ist.
Das der Dateipfad nicht stimmte, war mir aufgefallen, weil die tempfiles
im Windowstempordner landetenden hatte ich auch zwischendurch dann geändert.

Während der ganzen Rumprobiererei habe ich auch versucht, das file
einfach in dem tempverzeichnis zu belassen, habe aber beim Kopieren des
Pfades den Dateinamen, unter dem zu speichern ist dabei überschrieben...
nachdem ich deinen Beitrag gelesen hatte, viel mir auf, dass
$_FILES['uploadfile']['name'] fehlte.

Sorry und nochmal vielen Dank,
Michaela