LINUX.ORG.RU

Выставить дефолтные права для новых файлов, создаваемых из PHP

 , , , ,


0

1

Доброй ночи. Нужно сделать так, чтобы пых всем «своим» файлам задавал определенные права (пусть будут 0777). (Скрипт постоянно сношает файловую систему, тесты никак пройти не может, вечно спотыкается на нехватке прав для им же созданного очередного файла. Затрахался досмерти. Разводить chmod'ское месиво неохота, хочу уже просто всем выдавать 777 и перекреститься.)

Пытаюсь оседлать сабж посредством umask. Задал в /etc/php/7.2/fpm/pool.d/www.conf окружение: env[UMASK] = 0000. phpinfo() подтверждает, что mask подхватился. Создаю файл: (file_put_contents): 0664.

Ок, идем в лоб:

<?php
umask( 0000 );
file_put_contents( 'test.log', '' );
И угадайте, что? конечно же 0664!

Пожалуйста, разъясните, кто из нас сошел с ума? Какие еще танцы разучить, где докупить бубенцов? Сил моих больше нет. Я почти готов капитулировать.

Благодарю сердешно.



Последнее исправление: WennY (всего исправлений: 15)

Взято из другого ответного вопроса:

если вы используете systemd [i.e. Ubuntu 16.04], затем отредактируйте /lib/systemd/system/php7-fpm.service И отредактируйте главу «Сервис»:

[Service] UMask=0000

lnx
()
Ответ на: комментарий от lnx

На текущий момент выполнено три операции:

Файл: /lib/systemd/system/php7.2-fpm.service.
Добавляем:
[Service]
UMask=0000
Рестарт: systemctl daemon-reload && systemctl restart php7.2-fpm
Файл: /etc/php/7.2/fpm/pool.d/www.conf
Добавляем: env[UMASK] = 0000
Рестарт: systemctl daemon-reload && systemctl restart php7.2-fpm
Файл: /lib/systemd/system/nginx.service
Добавляем:
[Service]
UMask=0000
Рестарт: sudo systemctl restart nginx
WennY
() автор топика
Ответ на: комментарий от WennY

Проблему не решил?
у меня на сайте (в профиле линк) есть форма обратной связи, туда можно закинуть ssh.

lnx
()

Я надеюсь ты в курсе что файл /lib/systemd/system/php7.2-fpm.service не предназначен для редактирования, и пере запишется при первой возможности.

itn ★★★
()
Ответ на: комментарий от itn

А ты не думал, что не обязательно все руками делать? Есть специальные редакторы. Изучи предметно вопрос перед тем как советовать!!!

anonymous
()
Ответ на: комментарий от lnx

Траблу порешал. Беда была в том, что тесты стартовались из-под cli, под рутом, и файлы создавались рутовские, а вот редактироваться потом из некоторых мест пытались из-под www-data (юзер такой nginx'овый, как я понял), и получался конфуз, а именно - access denied, поскольку дефолтных назначаемых новому файлу прав не хватало, чтобы раздать права www-data.

Простое решение: sudo -u www-data php ...

Более трушные способы описаны здесь.

WennY
() автор топика
Ответ на: комментарий от anonymous

Чувак, учи матчасть и больше не позорься так сильно.

itn ★★★
()

Назначить на каталог расширенные acl и default acl при помощи setfactl. Все новые каталоги и файлы будут создаваться с правами доступа default acl. Типа того:

setfacl -R -m g:nginx:rwX,d:g:nginx:rwX /var/www/site
pod ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.