как работает присвоение прав только созданным файлам в линукс
объясните пожалуйста, вот я создаю файл touch 1, у него права -rw-r--r--, откуда берутся именно такие права и можно ли сделать чтобы создавался файл с другими правами? От прав родительской папки не зависит.
В конкретно моем случае, я хочу сохранять файл, загруженный пользователем с конкретными правами, например 444, у меня автоматически задаются права 644, как можно это исправить без запуска скрипта типа chmod 444 ./*
if(isset($_FILES['foto']) && !empty($_FILES['foto']['tmp_name'][0])) {
$i = 0;
foreach ($_FILES['foto']['tmp_name'] as $key) {
if(($_FILES['screen']['error'][$i] == 0) && !empty($key)) {
$fotoNames[$i] = 'foto_' . $rnd . '_' . $i;
move_uploaded_file($key, 'files/photos/' . $fotoNames[$i] . '.png');
} else { echo 'Ошибка загрузки ' . ($i+1) . 'файла.'; }
++$i;
}
}
пс. добавление расширения пнг как заглушка
псс. на папку фотос блок доступа в апаче
Ответы (1 шт):
Права берутся из переменной umask сессии пользователя.
В случае php лучше настраивать её в самом коде: https://www.php.net/manual/ru/function.umask.php
umask(octdec('333'));
333 это обратная маска от 444
Но с правами 444 обязательно возникнут проблемы с записью содержимого в сам файл.
Использовать функцию chmod после сохранения файла безопасней и понятней.