Как решить проблему с правами при работе с tmp дерикторией?
Здравствуйте.
PHP Скрипт выполняет следующее:
1. Получает ссылку на исходный файл (картинка), который лежит в публичной папке сайта. Файл является оригиналом.
2. Сохраняет копию файла в tmp директорию, после чего обрабатывает tmp-файл . (Направленность обработки не играет роли)
3. После того, как обработка закончена, скрипт, из папки tmp перемещает файл в публичную папку. Файл должен быть доступен на сайте, но права у него следующие: -rw------- 1 www-data www-data
Соответственно файл недоступен.
Подскажите пожалуйста, каким образом можно решить эту проблему, чтобы у перемещенного файла права были -rw-r--r--
Команда umask отдает 0022.
*не силен в Unix
----- Хотел бы уточнить, что интересует, нет ли возможности решить проблемы с правами и доступом на уровне операционной системы ?
Александр Евгеньевич:
В Линукс права доступа к файлу хранятся в его inode, а не в его "directory entry".
Если сделать 10 жестких линков на один файл, права доступа у всех будут одинаковые.
Поэтому перемещение файла в пределах одного раздела не меняет его права доступа.
Так что ваш вариант тогда или или chmod или копируйте (а затем удаляйте в tmp), а не перемещайте файл.
права на новосозданные файлы зависят от umask. Можно или установить нужный umask для пользователя (ну или даже прямо в скрипте его поменять), или менять права у уже созданного файла.