Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Zugriffsrechte einer Datei ändern mit chmod

Sie befinden sich: Home > Php Tutorial > Zugriffsrechte einer Datei...

Zugriffsrechte einer Datei ändern mit chmod


Eintrag am:  01.09.2010
Hits / Besucher:  10212
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die Funktion chmod() ändert die Zugriffsrechte einer Datei oder eines Verzeichnisses auf einem Linux- oder Unix-Server. Das ist zum Beispiel nötig, wenn ein Upload-Verzeichnis beschreibbar gemacht oder ein Script ausführbar gesetzt werden soll.

Syntax und Oktalschreibweise

chmod() erwartet zwei Parameter: den Dateipfad und die gewünschten Rechte als Oktalzahl. Die Oktalzahl muss mit einer führenden 0 beginnen, damit PHP sie als Oktalwert erkennt:

<?php

/* Korrekt: Oktalzahl mit führender 0 */
chmod('upload/bilder', 0755);

/* FALSCH: String statt Oktalzahl!
'0755' wird als Dezimal 755 interpretiert,
was völlig andere Rechte ergibt */
chmod('upload/bilder', '0755');
?>

Die Oktalzahl besteht aus vier Stellen. Die erste ist meist 0 (keine Sonderbits). Die drei weiteren Stellen stehen für Eigentümer, Gruppe und alle anderen. Jede Stelle ist die Summe aus: Lesen (4) + Schreiben (2) + Ausführen (1).

Gängige Rechtewerte

In der Praxis kommen fast immer dieselben Kombinationen zum Einsatz:

<?php

/* 0644: Standard für Dateien
Eigentümer: Lesen + Schreiben
Gruppe/Andere: nur Lesen */
chmod('config.ini', 0644);

/* 0755: Standard für Verzeichnisse
Eigentümer: Lesen + Schreiben + Ausführen
Gruppe/Andere: Lesen + Ausführen */
chmod('upload/', 0755);

/* 0600: Sensible Dateien
Nur der Eigentümer kann lesen und schreiben */
chmod('zugangsdaten.php', 0600);
?>

Verzeichnisse brauchen immer das Ausführen-Recht (1), damit ihr Inhalt aufgelistet werden kann. Deshalb ist 0755 für Ordner der Standard, während Dateien mit 0644 auskommen.

Praxisbeispiel mit Fehlerbehandlung

chmod() gibt true bei Erfolg und false bei einem Fehler zurück. Fehler treten zum Beispiel auf, wenn die Datei nicht existiert oder der Webserver nicht der Eigentümer ist:

<?php

$datei = 'upload/tmp';

if (chmod($datei, 0755)) {
echo 'Rechte für ' . $datei . ' auf 0755 gesetzt.';
} else {
echo 'Rechte konnten nicht geändert werden.';
}
?>

Auf Shared-Hosting-Servern kann chmod() eingeschränkt sein. Manche Hoster erlauben Rechteänderungen nur über FTP oder das Hosting-Panel.

Aktuelle Rechte auslesen mit fileperms()

Um die aktuellen Zugriffsrechte einer Datei zu prüfen, gibt es fileperms(). Der Rückgabewert ist eine Ganzzahl, die mit decoct() in die lesbare Oktalform umgewandelt wird:

<?php

$rechte = fileperms('upload/');

/* Die letzten 4 Stellen der Oktaldarstellung */
echo substr(decoct($rechte), -4); // z.B. 0755
?>

So lässt sich prüfen, ob eine Datei bereits die richtigen Rechte hat, bevor chmod() aufgerufen wird.

Sicherheitshinweis

Die Rechte 0777 (alle dürfen alles) sollten vermieden werden. Wenn jeder Benutzer auf dem Server eine Datei ändern oder ausführen kann, öffnet das Tür und Tor für Angriffe. Für Upload-Verzeichnisse reicht 0755, für hochgeladene Dateien 0644.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.