Права доступа веб-приложения |
Когда вы используете веб-сервер (например Apache или Nginx), то этот сервер работает от пользователя www-data, но команды в консоли вы обычно выполняете от другого пользователя (например vasya), вот тут и возникает проблема. Заключается проблема в том, что пользователь www-data создает файлы, которые пользователь vasya не может изменить/удалить. На этот счет есть ряд ниже изложенных решений. Общая группаПравильное решение:
Неправильные решения:
Все бы хорошо, но иногда этого недостаточно, потому что веб-сервер может создавать файлы/директории без прав на запись для группы www-data и такое положение можно исправить одним из следующих решений. Using ACL on a System that Supports chmod +a (macOS)On macOS systems, the chmod command supports the +a flag to define an ACL. Use the following script to determine your web server user and grant the needed permissions:
Using ACL on a System that Supports setfacl (Linux/BSD)Most Linux and BSD distributions don't support chmod +a, but do support another utility called setfacl. You may need to install setfacl and enable ACL support on your disk partition before using it. Then, use the following script to determine your web server user and grant the needed permissions:
NOTE: The first setfacl command sets permissions for future files and folders, while the second one sets permissions on the existing files and folders. Both of these commands assign permissions for the system user and the Apache user. setfacl isn't available on NFS mount points. However, storing cache and logs over NFS is strongly discouraged for performance reasons. На практике права, выставленные описанным выше способом, постепенно начинают «слетать» сами собой. В частности, пропадают права на запись в папки. С этим я столкнулся при автоматическом деплойменте кода сайтов с гитлаба. Поначалу всё шло хорошо. Затем rsync, который я использовал для синхронизации извне, стал жаловаться на недоступность некоторых файлов на запись. Я долго не мог понять, в чём дело, но в один прекрасный день просто решил пройтись по папкам getfacl-ом и обнаружил, что дефолтные права пользователя отсутсвуют, а ведь я ничего на сервере не менял:
Вероятно, это связано с тем, что rsync копирует директории без сключа -p (а ведь в мануале к acl сказано, что при копировании аргумент -p обязателен). Without Using ACLIf none of the previous methods work for you, change the umask so that the cache and log directories are group-writable or world-writable (depending if the web server user and the command line user are in the same group or not). To achieve this, put the following line at the beginning of the bin/console, web/app.php and web/app_dev.php files:
NOTE: Changing the umask is not thread-safe, so the ACL methods are recommended when they are available. |
|
Похожие статьи: |
« Apache Bench - разбираемся как это работает | GitLab CI » |
Главная | PHP | MySQL | Unix | JavaScript | Desktop | Дизайн | Продвижение | Другое |
X |
Новые заметки:→ Почему задачи выполняют долго → Равномерное распределение данных |
Последние комменты:19.08.2018 18:57, 100 комментов
14.08.2018 10:43, 1 коммент
09.08.2018 06:02, 309 комментов
08.08.2018 02:52, 1 коммент
25.07.2018 10:07, 2 коммента
|
Yapro CMS:→ Плагины
|