Composer, ubuntu и права

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

Composer, ubuntu и права

Сообщение S c » 2017.09.08, 16:20

Всем привет! Имеем 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
Сообщения: 5408
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Composrt, ubuntu и права

Сообщение ElisDN » 2017.09.08, 16:49

myuser:www-data

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

Re: Composrt, ubuntu и права

Сообщение S c » 2017.09.08, 16:53

Дмитрий, спасибо. После этого я могу не использовать sudo?

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

Re: Composrt, ubuntu и права

Сообщение za4me » 2017.09.08, 17:21

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

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

/home/boris/usr/www/somesite.dev

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

Re: Composrt, ubuntu и права

Сообщение S c » 2017.09.08, 17:30

тема совсем же о другом...

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Composrt, ubuntu и права

Сообщение urichalex » 2017.09.08, 18:00

Запускать от пользователя Либо в fpm пул настроить на определенного пользователя, а если апач, то mpm itk
и никаких проблем с правами и по безопасности чутка повыше

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

Re: Composrt, ubuntu и права

Сообщение S c » 2017.09.08, 18:39

как запускать тот же композер\гит от пользователя www-data к примеру?

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Composrt, ubuntu и права

Сообщение urichalex » 2017.09.08, 21:33

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
Сообщения: 875
Зарегистрирован: 2012.04.11, 14:46

Re: Composrt, ubuntu и права

Сообщение S c » 2017.09.11, 15:45

Интересное решение, спасибо!

Sasha_ch
Сообщения: 77
Зарегистрирован: 2011.04.10, 15:59
Откуда: Киев

Re: Composer, ubuntu и права

Сообщение Sasha_ch » 2018.05.31, 18:12

Мой "рецепт" запуска 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 раза.

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Composer, ubuntu и права

Сообщение urichalex » 2018.05.31, 18:14

Запускаешь воркер от nginx а авторизуешься под www-data. Зачем?

Sasha_ch
Сообщения: 77
Зарегистрирован: 2011.04.10, 15:59
Откуда: Киев

Re: Composer, ubuntu и права

Сообщение Sasha_ch » 2018.05.31, 18:37

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" в контейнере)

Ответить