Sie können umask nicht pro Verzeichnis festlegen, da dies ein Wert auf Prozessebene ist. Wenn Sie verhindern möchten, dass andere Benutzer Dateien in einem Verzeichnis lesen, widerrufen Sie die entsprechenden Berechtigungsbits.
Wenn Sie beispielsweise ein Verzeichnis /home/user/directory
mit einigen Dateien und Verzeichnissen haben, die Berechtigungen wie 777 von einem Prozess erhalten können, setzen Sie die Berechtigungsbits /home/user/directory
auf 700. Dadurch ist es für andere Benutzer (mit Ausnahme des Superuser-Stamms) nicht möglich, einen Abstieg durchzuführen in /home/user/directory
.
Ich bin paranoid und setze die Berechtigungen auf /home/user
750, sodass nur ich in meinem Home-Verzeichnis lesen, schreiben und absteigen kann. Dies hat zur Folge, dass Ordner wie /home/user/Public
für andere nicht zugänglich sind, aber ich kann damit leben.
Per Update Ihrer Frage: Trotzdem können Sie nicht steuern, dass im Dateisystem (anders als bei Verwendung eines anderen Dateisystemtyps wie FAT, der stark entkoppelt ist), Sie dies in Ihrer Webanwendung tun müssen. Wenn Ihre Webapplikation in PHP programmiert ist, können Sie die umask mit der folgenden umask
Funktion im Handumdrehen ändern :
<?php
umask(0022);
// other code
?>
Sie können dies in eine Konfigurationsdatei einfügen, z. B. in die Datei, die das Kennwort für die Datenbankverbindung enthält (in Apps wie Wordpress).
Denken Sie daran, dass es sich um einen Prozesswert handelt. Bei einigen Webservern können Sie diesen in den Konfigurationsdateien festlegen. Andernfalls können Sie die Startskripte ändern, um die gewünschte Umask festzulegen. Denken Sie daran , dass die Berechtigungen wie 755
und 644
sind ziemlich gefährlich für Webapps, wenn der Code empfindlich ist, jeder kann es lesen.