Вы не можете установить umask для каждого каталога, это значение уровня процесса. Если вам нужно запретить другим пользователям читать файлы в каталоге, отзовите соответствующие биты прав доступа.
Например, если у вас есть каталог /home/user/directory
с некоторыми файлами и каталогами, которые могут получать разрешения, например, 777, от процесса, установите для битов разрешений /home/user/directory
что-то вроде 700. Это сделает невозможным для других пользователей (за исключением корня суперпользователя) снижение в /home/user/directory
.
Я параноик и установил разрешения на /home/user
750, так что только я могу читать, писать и спускаться в свой домашний каталог. Это приводит к тому, что подобные папки /home/user/Public
не могут быть доступны другим, но я могу жить с этим.
За обновление вашего вопроса: тем не менее, вы не можете контролировать, что в файловой системе (кроме использования другого типа файловой системы, такого как FAT, который категорически не рекомендуется), вы должны сделать это в своем веб-приложении. Если ваше веб-приложение написано на PHP, вы можете изменить umask на лету, используя umask
функцию:
<?php
umask(0022);
// other code
?>
Вы можете поместить это в файл конфигурации, например, в файл, содержащий пароль для подключения к базе данных (например, в приложениях, таких как Wordpress).
Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в своих файлах конфигурации, в противном случае вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, такие как 755
и 644
довольно опасные для веб-приложений, если код чувствителен, его может прочитать каждый.