как работает присвоение прав только созданным файлам в линукс

объясните пожалуйста, вот я создаю файл 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 шт):

Автор решения: eri

Права берутся из переменной umask сессии пользователя.

В случае php лучше настраивать её в самом коде: https://www.php.net/manual/ru/function.umask.php

umask(octdec('333'));

333 это обратная маска от 444

Но с правами 444 обязательно возникнут проблемы с записью содержимого в сам файл.

Использовать функцию chmod после сохранения файла безопасней и понятней.

→ Ссылка