Vous ne pouvez pas définir umask par répertoire, c'est une valeur au niveau du processus. Si vous devez empêcher d'autres personnes de lire des fichiers dans un répertoire, révoquez les bits d'autorisation correspondants.
Par exemple, si vous avez un répertoire /home/user/directory
avec des fichiers et des répertoires qui peuvent obtenir des autorisations comme 777 à partir d'un processus, définissez les bits d'autorisation de /home/user/directory
quelque chose comme 700. Cela rendra impossible pour les autres utilisateurs (à l'exclusion de la racine du superutilisateur) de descendre dans /home/user/directory
.
Je suis paranoïaque et je définis les autorisations sur /home/user
750, donc seulement je peux lire, écrire et descendre dans mon répertoire personnel. Cela a pour conséquence que les dossiers comme /home/user/Public
ne sont pas accessibles aux autres, mais je peux vivre avec ça.
Par mise à jour de votre question: vous ne pouvez toujours pas contrôler que dans le système de fichiers (autre que l'utilisation d'un type de système de fichiers différent comme FAT qui est fortement déconseillé), vous devez le faire dans votre application Web. Si votre webapp est codée en PHP, vous pouvez changer le umask à la volée en utilisant la umask
fonction:
<?php
umask(0022);
// other code
?>
Vous pouvez le mettre dans un fichier de configuration, comme le fichier contenant le mot de passe de connexion à la base de données (en pensant dans des applications comme Wordpress).
N'oubliez pas qu'il s'agit d'une valeur de processus, certains serveurs Web vous permettent de la définir dans leurs fichiers de configuration, sinon vous pouvez modifier les scripts de démarrage pour définir le umask souhaité. N'oubliez pas que les autorisations aiment 755
et 644
sont assez dangereuses pour les applications Web, si le code est sensible, tout le monde peut le lire.