Как настроить права доступа к файлам для перезаписи php-скриптом?
Здравствуйте, уважаемые it-специалисты.
Пишу для себя простенький php-скрипт, который лезет по расписанию в конкретную папку на моем винте, читает размер изображений и если он большеват, перезаписывает изображения с резайзом.
Я пользуюсь mac os x и скрипт этот будет также работать в этой среде.
Файлы в этой папку (а это папка облака Яндекс.Диск) создаются с правами 644. Выходит, изменять размер может только владелец. Само собой Apache у меня запускается пользователем www-data.
Тут у меня возникло несколько вариантов:
1) Просто поменять пользователя Apache. В одной из веток, которые я здесь создавал писали, что с точки зрения безопасности это не лучший вариант.
2) Второй вариант - выставить umask как 002 (сейчас 022), чтобы все файлы создавались с правами 664. Тогда можно будет определить www-data в группу stuff и дело в шляпе. Опять же - насколько корректно с точки зрения безопасности такое изменение?.. И есть ли возможность выставить umask для конкретной папки?..
3) Копать в сторону ACL (с ним я не сталкивался). Но че-то ругают эту систему, да и есть ли она в mac os x пока тоже не глядел.
В-общем, жду совета от специалистов, как лучше всего разрулить здесь...
В-принципе, свой php-скрипт я и делаю консольным, чтобы можно было запустить из под терминала. Но ведь запускается-то процесс php, а владелец процесса php, вроде, тоже www-data.
Или Вы вообще какой имели ввиду скрипт, на чем написанный?
Хайбулла Мусаев: консольный PHP запускается от юзера консоли.
выполните в терминале php -r 'echo `whoami`;' и сами все поймете.
все что вам надо - указать в кроне:
/usr/bin/php /path/to/your/script
DevMan: Блин, точно. Попробовал - сработало. Так, видимо, и буду делать. А если бы стояла задача запускать из под браузера, то все-таки, как бы следовало раскидать ситуацию с правами доступа?
Хайбулла Мусаев: я уже давно не использую браузер для подобных задач, поэтому не особо в курсе как сейчас с этим справляются.
раньше я просто делал 777 на папку и 666 на файлы.
Хайбулла Мусаев: по идее права 777 должны вам давать возможность удалять файлы в директории любым юзером.
поэтому должен работать следующий алгоритм: взяли оригинал -> изменили -> сохранили как временный файл -> удалили оригинал -> переименовали временный файл в оригинал.
повторюсь: я давно уже с такими задачами не сталкивался. мой ответ может быть неверен, и могут существовать более лучшие способы.
2) Второй вариант - выставить umask как 002 (сейчас 022), чтобы все файлы создавались с правами 664. Тогда можно будет определить www-data в группу stuff и дело в шляпе. Опять же - насколько корректно с точки зрения безопасности такое изменение?.. И есть ли возможность выставить umask для конкретной папки?..
Для такого редактирования файлов нужны права на директорию. Они не изменяются, а из них делаются новые файлы. Поэтому сами файлы достаточно только читать.
Надо сделать группу для редактирования директории, установить директории эту группу и дать группе права rwx, а потом пользователя www-data добавить в неё.