Aktueller Standort: Startseite> Neueste Artikel> An welchen wichtigen Punkten sollte bei der Verwendung der PHP -UMask -Funktion die Aufmerksamkeit geschenkt werden, um Verzeichnisberechtigungen festzulegen?

An welchen wichtigen Punkten sollte bei der Verwendung der PHP -UMask -Funktion die Aufmerksamkeit geschenkt werden, um Verzeichnisberechtigungen festzulegen?

gitbox 2025-08-27

1. Verstehe, wie ask () funktioniert

UMask () setzt die Berechtigungen nicht direkt auf Dateien oder Verzeichnisse direkt fest. Es schränkt den Wert der Datei- oder Verzeichnisberechtigungen durch Masken ein. Jedes Datei und jedes Verzeichnis verfügen über eine Standardberechtigung, wenn er in der Regel (Datei) und 777 (Verzeichnis) erstellt wird. UMask () legt die tatsächlichen Berechtigungen jedoch durch Bitgewise und "Operation (und) auf diese Standardwerte fest.

Beispielsweise wird die Standardgenehmigung 777 mit dem Ummask -Wert berechnet, um den endgültigen Berechtigungswert zu berechnen. Zum Beispiel:

  • Standardverzeichnisberechtigungen: 777

  • Ummask -Wert: 022

Das Berechnungsergebnis beträgt 755 , dh die Berechtigungen des Verzeichnisses sind rwxr-xr-x .


2. So setzen Sie Verzeichnisberechtigungen mit der Funktion asenk ()

In PHP können Sie die Ummask des Prozesses durch die aunmask () -Funktion festlegen. Nach der Einstellung wird PHP vom Ummask -Wert beim Erstellen von Dateien oder Verzeichnissen in der nachfolgenden Erstellung beeinflusst. Normalerweise muss der Ummask -Wert festgelegt werden, bevor das Verzeichnis erstellt wird.

Beispielsweise setzt der folgende Code UMask auf 0022, damit das von PHP erstellte Verzeichnis Berechtigungen von 755 hat:

 <span><span><span class="hljs-comment">// aufstellen umask</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);

</span><span><span class="hljs-comment">// Erstellen Sie ein Verzeichnis</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mkdir</span></span><span>(</span><span><span class="hljs-string">'new_directory'</span></span><span>);
</span></span>

Im obigen Beispiel wird die Funktion mkdir () ein Verzeichnis mit Berechtigungen von 755 erstellt. Die Standardgenehmigung 777 Nach minus UMask 022 beträgt die endgültige Verzeichnisgenehmigung 755.


3.. Häufige Fehler und Vorsichtsmaßnahmen beim Festlegen von Berechtigungen

3.1 Achten Sie darauf, dass die Berechtigungen zu locker sind

Bei der Festlegung von Verzeichnisberechtigungen, insbesondere in öffentlichen oder freigegebenen Serverumgebungen, können übermäßige Berechtigungen zu Sicherheitsrisiken führen. Wenn Sie beispielsweise Verzeichnisberechtigungen auf 777 (vollständig geöffnet) festlegen, können Sie jedem Lesen, Schreiben und Ausführen von Verzeichnisinhalten, was in vielen Fällen unsicher ist. Um dieses Problem zu vermeiden, wird empfohlen, mindestens konservative Berechtigungen wie 755 oder 750 zu verwenden.

3.2 UMask gilt nur für neu erstellte Dateien und Verzeichnisse

Es ist zu beachten, dass die von umen festgelegte Berechtigungsmaske () nur die vom aktuellen Vorgang erstellten Dateien oder Verzeichnisse beeinflusst. UMask () hat keinen Einfluss auf vorhandene Dateien oder Verzeichnisse. Wenn Sie Berechtigungen an erstellte Dateien oder Verzeichnisse ändern müssen, können Sie die Funktion chmod () verwenden.

 <span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'existing_directory'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>);
</span></span>

3.3 Kompatibilität mit dem abgesicherten Modus von PHP und Open_Basedir

In einigen PHP -Konfigurationsumgebungen (z. B. der abgesicherte Modus von PHP oder Open_Basedir ist festgelegt) können die Datei- und Verzeichnisbetriebsberechtigungen von PHP eingeschränkt werden. Selbst wenn Sie Berechtigungen über assen () festlegen, können Sie durch diese Konfigurationen eingeschränkt werden. Daher ist eine besondere Sorgfalt bei der Verwendung von asen () in diesen Umgebungen erforderlich.


V.

4.1 Datei hochladen

In einer Webanwendung, die das Datei -Upload unterstützt, erfordern hochgeladene Dateien häufig spezifische Berechtigungen. Verwenden Sie UMask (), um die Berechtigungen zu steuern, wenn die Datei erstellt wird. Wenn Sie beispielsweise von den Benutzern verarbeitet werden, können Sie einen geeigneten Ummask -Wert festlegen, um sicherzustellen, dass die hochgeladenen Dateien nicht zu lockeren Berechtigungen haben:

 <span><span><span class="hljs-comment">// aufstellen umask,Stellen Sie sicher, dass Dateiberechtigungen nicht der Fall sind 777</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);

</span><span><span class="hljs-comment">// Prozess hochgeladene Dateien</span></span><span>
</span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span>(</span><span><span class="hljs-variable">$tmp_name</span></span><span>, </span><span><span class="hljs-variable">$destination</span></span><span>);
</span></span>

4.2 Erstellen Sie ein Cache -Verzeichnis

In Webanwendungen werden Cache -Verzeichnisse normalerweise zum Speichern temporärer Daten verwendet. Um zu verhindern, dass das zwischengespeicherte Verzeichnis von böswilligen Nutzern geändert wird, können Sie sicherstellen, dass das Verzeichnis die richtigen Berechtigungen hat, indem Sie die entsprechende Ummask festlegen.

 <span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0027</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">mkdir</span></span><span>(</span><span><span class="hljs-string">'/path/to/cache'</span></span><span>, </span><span><span class="hljs-number">0775</span></span><span>);
</span></span>

In diesem Beispiel wird das Cache -Verzeichnis als Erlaubnis 775 erstellt, nur der Dateibesitzer und dieselbe Benutzergruppe haben Berechtigungen gelesen und schreiben, während andere Benutzer den Inhalt des Verzeichnisses nicht ändern können.