Может ли кто-нибудь помочь мне с некоторыми разрешениями unix? Я борюсь с этим уже несколько месяцев и не могу понять это правильно.
Мой веб-сервер работает как www-data в группе www-data, и я делаю свои композиторские вещи как пользователь с именем finn с привилегиями sudo (но я определенно не sudo composer: joy :).
Судя по тому, что я читал, пользователю часто легче владеть всеми файлами / каталогами, но он должен быть в группе www-data, поэтому для этого я написал сценарий bash:
#!/bin/bash
sudo chown -R finn:www-data /srv/pyrocms
sudo usermod -a -G www-data finn
sudo find /srv/pyrocms -type f -exec chmod 664 {} \;
sudo find /srv/pyrocms -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Где цель
1. Сделайте все для меня
2. Добавьте меня в группу www-data
3. Установите разрешения на чтение / выполнение.
4. Измените группу на www-data для всех важных storage и bootstrap/cache.
5. Дайте мне и группе www-data права на чтение / запись / выполнение на storage и bootstrap/cache.
Эта проблема!
После выполнения composer update в качестве пользователя finn я часто сталкиваюсь с проблемами, когда веб-сервер не может записывать файлы кеша в storage/streams/{site-slug}/cache/, и он выбрасывает 500 ошибок.
Что я могу сделать, чтобы это исправить?






Поскольку у вас уже есть привилегии sudo и вы используете sudo, может быть проще войти в систему как пользователь www-data и выполнять все задачи как www-data. Если все будет принадлежать www-data, проблем с привилегиями не будет:
sudo su -s /bin/bash www-data
composer install
В качестве альтернативы (и, возможно, лучше) вариант было бы создать выделенного пользователя (например, www-finn) и всегда запускать PHP как www-finn. Этого должно быть довольно легко добиться, если вы используете php-fpm для запуска процессов PHP для обработки веб-запросов:
[www-finn]
user = www-finn
group = www-finn
...
listen.owner = www-finn
listen.group = www-finn
Добавьте www-data в группу www-finn, чтобы веб-сервер имел доступ к файлам www-finn. А затем сделайте www-finn владельцем вашего веб-приложения:
usermod -a -G www-finn www-data
sudo chown -R www-finn:www-finn /srv/pyrocms
Спасибо, rob006! Я вижу, что вы, Питерден, имеете идею запустить PHP-Fpm как мой пользователь, так что я займусь этим!
Вы должны запускать composer create-project pyrocms/pyrocms pyrocms из папки /home/finn/srv и под finn и определенно НЕ пользователем sudo (finn может быть sudoer или нет, это не имеет значения).
Конфигурация пула PHP-FPM:
[finn]
user = finn
group = finn
listen = /run/php/finn-fpm.sock
listen.allowed_clients = 127.0.0.1
listen.owner = www-data
listen.group = www-data
Конфигурация хоста Nginx:
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/finn-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
Тогда вы не можете изменять какие-либо разрешения под своим пользователем unix finn, но если возникнут проблемы, просто запустите следующий под пользователем finn:
find /home/finn/srv/pyrocms -type f -exec chmod 644 {} \;
find /home/finn/srv/pyrocms -type d -exec chmod 755 {} \;
chmod -R /home/finn/srv/pyrocms/storage 777
chmod -R /home/finn/srv/pyrocms/bootstrap/cache 777
chmod -R /home/finn/srv/pyrocms/public/app 777
Также обратите внимание, что sudo вам понадобится только для редактирования ваших конфигураций в папке /etc.
Спасибо, Питерден! Есть ли какие-либо опасения по поводу запуска PHP от имени привилегированного пользователя? И почему в этих папках должно быть 777? Зачем миру нужны чтение / запись / выполнение, когда наверняка достаточно чтения / записи пользователя / группы?
Не совсем понимаю, что вы имеете в виду, говоря о запуске php от имени привилегированного пользователя. В любом случае ваша служба php-fpm работает под root.
Ха, а не могли бы вы объяснить мне, зачем вашей группе finn эти разрешения? Мы говорим только о пользователе finn, а не о группе. Кроме того, почему у вас 664 и 775? Правильные разрешения должны быть 640 и 750.
Я перешел на 644 и 755, как в вашем примере ? Группе finn, вероятно, не нужны эти разрешения, вы правы
Не совсем - в данный момент я не использую FPM. Конфигурация Apache по умолчанию была с модом PHP7, так что я просто прикидываю ?
Это не должно работать. По крайней мере, на моем сервере я не мог запустить его с аналогичной конфигурацией.