Страница 1 из 1

Composer, ubuntu и права

Добавлено: 2017.09.08, 16:20
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 локально или глобально нужно ставить?

Re: Composrt, ubuntu и права

Добавлено: 2017.09.08, 16:49
ElisDN
myuser:www-data

Re: Composrt, ubuntu и права

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

Re: Composrt, ubuntu и права

Добавлено: 2017.09.08, 17:21
za4me
Создал папку /var/www/somesite
Как по мне хранить проекты удобнее в директории пользователя.

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

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

Re: Composrt, ubuntu и права

Добавлено: 2017.09.08, 17:30
S c
тема совсем же о другом...

Re: Composrt, ubuntu и права

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

Re: Composrt, ubuntu и права

Добавлено: 2017.09.08, 18:39
S c
как запускать тот же композер\гит от пользователя www-data к примеру?

Re: Composrt, ubuntu и права

Добавлено: 2017.09.08, 21:33
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

Re: Composrt, ubuntu и права

Добавлено: 2017.09.11, 15:45
S c
Интересное решение, спасибо!

Re: Composer, ubuntu и права

Добавлено: 2018.05.31, 18:12
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

Re: Composer, ubuntu и права

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

Re: Composer, ubuntu и права

Добавлено: 2018.05.31, 18:37
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" в контейнере)