Запуск Composer без использования sudo (пробовал сменить владельца и права)

Каждый раз, когда я запускаю composer (например, sudo composer install, sudo composer self-update и т. Д.), Мне нужно запускать это с помощью sudo, поскольку владельцем файла является root.

Тем не менее, каждый раз, когда я использую композитор с sudo root, он владеет папкой vendor, а затем мне приходится менять владельца этой папки / привилегий с root на www-data.

Как лучше всего это исправить, чтобы мне не приходилось каждый раз запускать sudo?

Сменить владельца /usr/local/bin/composer с root на www-data?

Является ли это идеальным способом справиться с этим, чтобы избежать необходимости менять владельца и назначать разрешение каждый раз, когда я использую sudo composer install?

Редактировать: Разрешения для композитора в настоящее время -rwxr-xr-x. И я попытался переключить владельца /usr/local/bin/composer на www-data:www-data с разрешениями, установленными на 775, и все же я не могу запустить composer без запуска sudo.

12
задан 18 March 2015 в 01:53

3 ответа

Если "всем" разрешают прочитать и выполнить компоновщик, Вы не должны использовать sudo:

sudo chmod 755 /var/local/bin/composer

, Так как Вы уже выполнили компоновщик, по крайней мере, однажды как root, компоновщики (на пользователя-) каталог кэша теперь принадлежит корню и поэтому не перезаписываем Вашим обычным пользователем.

sudo chown -R lamp:lamp /home/lamp/.composer

зафиксирует владельца файла.

13
ответ дан 18 March 2015 в 01:53

Я занимался этой проблемой в течение многих недель.

я думаю, что решение состоит в том, чтобы выполнить самообновление компоновщика с-H

sudo -H composer self-update

Прежде, чем сделать это убедиться удалить .composer каталоги в корне и корневой каталог пользователя, Вы хотите выполнить компоновщик.

sudo rm -rf /root/.composer
sudo rm -rf /home/ubuntu/.composer

Выполнение sudo самообновление компоновщика без флага-H создаст ~/.composer, который принадлежит корню и предотвратит другие команды компоновщика, чтобы иметь ошибки разрешения.

composer config
composer install 

, По-моему, вызов sudo самообновление компоновщика не должен создавать файлы, принадлежавшие корню в текущем пользовательском корневом каталоге.

Примечание, если Вы следуете этим инструкциям на компоновщике Ubuntu 14.04, поместит кэш в:

 ~/.cache/composer

, А не:

~/.composer/cache

Это из-за переменной среды XDG_RUNTIME_DIR, определенной в Ubuntu 14.04, но, кажется, не определяется в Ubuntu 12.04

связанное обсуждение здесь

5
ответ дан 18 March 2015 в 11:53

Я нашел эту команду полезной для запуска композитора как www-data:

sudo su -l www-data -s /bin/bash -c "cd $PWD; composer install"

ссылка: https://commandroll.com/command/run-command-as-www-data-using-su

1
ответ дан 5 May 2020 в 19:14

Другие вопросы по тегам:

Похожие вопросы: