Composer, ubuntu и права

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Composer, ubuntu и права

Сообщение S c »

Всем привет! Имеем ubuntu, php7, nginx
Создал папку /var/www/somesite
Подтянул туда проект через git
Изменил владельца sudo chmod -R www-data:www-data /var/www/somesite

1) Пишут, что composer нужно использовать не через sudo, а без sudo выдает мне permissions denied. Что нужно сделать? Может как то подправить пользователя, от имени кого composer команды выполняются?
2) после composer install файлы и папки (которые появились) - не принадлежат www-data, что тут делать?
3) вообще, обязательно ли, чтоб проект был от www-data? и как composer\git без sudo использовать?
4) даже php init без sudo не отрабатывает
5) composer локально или глобально нужно ставить?
Последний раз редактировалось S c 2017.09.18, 15:10, всего редактировалось 1 раз.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Composrt, ubuntu и права

Сообщение ElisDN »

myuser:www-data
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Composrt, ubuntu и права

Сообщение S c »

Дмитрий, спасибо. После этого я могу не использовать sudo?
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Re: Composrt, ubuntu и права

Сообщение za4me »

Создал папку /var/www/somesite
Как по мне хранить проекты удобнее в директории пользователя.

Код: Выделить всё

/home/boris/usr/www/somesite.dev
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Composrt, ubuntu и права

Сообщение S c »

тема совсем же о другом...
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Composrt, ubuntu и права

Сообщение urichalex »

Запускать от пользователя Либо в fpm пул настроить на определенного пользователя, а если апач, то mpm itk
и никаких проблем с правами и по безопасности чутка повыше
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Composrt, ubuntu и права

Сообщение S c »

как запускать тот же композер\гит от пользователя www-data к примеру?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Composrt, ubuntu и права

Сообщение urichalex »

S c писал(а): 2017.09.08, 18:39 как запускать тот же композер\гит от пользователя www-data к примеру?
www-data не будет участвовать вообще
Все будет управляться от реального пользователя.
Создаем юзера webuser
Создаем fpm pool для этого юзера:
/etc/php/7.1/fpm/pool.d/webuser.conf

Код: Выделить всё

[webuser]
user = webuser
group = webuser
listen.owner = nginx
listen.group = nginx
listen = /run/php/webuser-fpm.sock
// прочие настройки
и в конфиге сайта в нгинксе направляем на этот пул

Код: Выделить всё

location ~ \.php {
    fastcgi_pass unix:/run/php/webuser-fpm.sock;
}
И после этого уже сайт будет работать от пользователя webuser
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Composrt, ubuntu и права

Сообщение S c »

Интересное решение, спасибо!
Sasha_ch
Сообщения: 80
Зарегистрирован: 2011.04.10, 15:59
Контактная информация:

Re: Composer, ubuntu и права

Сообщение Sasha_ch »

Мой "рецепт" запуска composer'a такой:
С недавних времен для разработки использую Ubuntu + Docker. Файловая система ext4.
Есть 3 контейнера: NGINX, MariaDB, PHP7. В последнем контейнере у меня также установлен Composer и разная мелочь.

Настройки PHP-FPM:

Код: Выделить всё

listen.owner = www-data
listen.group = www-data
...
user = www-data
group = www-data
Настройки NGINX (nginx.conf)

Код: Выделить всё

user  www-data;
Source код проектов лежит в каталоге на моей дев хостовой машине и маунтится в контейнеры NGINX и PHP7. (это наверное не best practices, но вроде довольно распространено при разработке)
Мой текущий пользователь на хостовой машине имеет тот же UID/GID что и пользователь www-data внутри контейнеров. Поэтому нет проблем с разрешениями на файлики созданные PHP и наоборот.

Когда я "захожу" в консоле в контейнер с PHP, там я становлюсь по дефолту root пользователем, и естественно если я запущу composer create-project он выполнится от рута и на хостовой машине будут проблемы с правами на созданные композером файлики .
Поэтому я запускаю компоузер так:
выполняю substitute user и становлюсь пользователем www-data:

Код: Выделить всё

su www-data
выполняю нужные мне команды композера (уже выполнятся от пользователя www-data)

Код: Выделить всё

composer create-project ....
заканчиваю быть пользователем www-data и становлюсь обратно root Если у Вас не получится выполнить "su www-data", посмотрите что у Вас содержится в файлике:

Код: Выделить всё

cat etc/passwd
Обычно там строка пользователя www-data имеет такой вид:

Код: Выделить всё

www-data:x:1000:1000:www-data:/var/www:/usr/sbin/nologin
или
www-data:x:1000:1000:www-data:/var/www:/bin/false
- тут обратите внимание на конец строки, и выполните правку в привычном текстовом редакторе (vi, vim, nano...)

Код: Выделить всё

/usr/sbin/nologin или /bin/false
на
/bin/bash
..и попробуйте вновь выполнить

Код: Выделить всё

su www-data
Последний раз редактировалось Sasha_ch 2018.05.31, 18:20, всего редактировалось 2 раза.
CPU comparison platform: CPU Boss Multi language, Yii2 powered.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Composer, ubuntu и права

Сообщение urichalex »

Запускаешь воркер от nginx а авторизуешься под www-data. Зачем?
Sasha_ch
Сообщения: 80
Зарегистрирован: 2011.04.10, 15:59
Контактная информация:

Re: Composer, ubuntu и права

Сообщение Sasha_ch »

urichalex писал(а): 2018.05.31, 18:14 Запускаешь воркер от nginx а авторизуешься под www-data. Зачем?
в nginx.conf у меня содержимое такое:

Код: Выделить всё

user  www-data;
#user  nginx;
Насколько я понимаю в докер контейнере, при таком значении воркеры запустятся от www-data ?

p.s. только что запустил с хост машины команду: docker container top my_nginx_containers_name_here
вывод такой:

Код: Выделить всё

UID | CMD
root |  nginx: master process nginx -g daemon off;
myuser | nginx: worker process
...то есть мастер-процесс nginx от рута запущен, а воркеры от юзера www-data (в листинге подставилось имя пользователся хостовой машины "myuser" у которого UID равер UID'у пользователя "www-data" в контейнере)
CPU comparison platform: CPU Boss Multi language, Yii2 powered.
Ответить