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


13

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

Однак кожен раз, коли я використовую композитор із корінням sudo, є власником папки постачальника, і тоді я повинен змінити власника цієї папки / привілеїв з root на www-data.

Який найкращий спосіб виправити це, щоб мені не довелося кожен раз запускати судо?

Змінити власника /usr/local/bin/composerз root на www-data?

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

Редагувати: на даний момент дозволи для композитора є -rwxr-xr-x. І я спробував переключити власника /usr/local/bin/composerна www-data:www-dataз дозволами, встановленими на 775, і досі не можу запустити композитора без запуску sudo.

Відповіді:


9

Якщо "всім" дозволено читати та виконувати композитор, вам не потрібно використовувати sudo:

sudo chmod 755 /var/local/bin/composer

Оскільки ви вже хоч раз виконували композитор, rootкаталог кеш-композиторів (на кожного користувача) тепер належить root, і тому ваш звичайний користувач не підлягає запису.

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

виправить власника файлу.


Я спробував це, і досі не можу бігати, composer self-updateне використовуючи судо. Чи потрібно використовувати 775?
їхати вихорами

Ну, а самооновлення не буде працювати з 755, але чи це має значення? самостійне оновлення - це нічого, що вам потрібно буде виконувати щодня, просто оновлюйте його раз на 2 тижні або близько того (з судо, звичайно).
tkausl

Спробував, composer updateі це також не працює з цими дозволами. Мені все ж доводиться спочатку користуватися судо. Ось ця помилка, яку я отримуюfile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
їздити на вихорах

о, так, ви вже використовували "sudo" для оновлення деяких своїх деп, я думаю, що "/home/lamp/.composer/" належить корінь, просто видаліть цю папку (її просто кеш), тоді вона повинна працювати без судо. (Або зміна власника: chown -R lamp:lamp /home/lamp/.composer)
tkausl

Це зробив трюк, пішов із зміною власника на лампу. Чи можете ви оновити свою відповідь, і я прийму її? Дякую takusl
їзди на

5

Я займався цим питанням протягом тижнів.

Я думаю, що рішення - запустити композиторське самооновлення з -H

sudo -H composer self-update

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

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

Запуск самооновлення композитора sudo без прапора -H створить ~ / .composer, який належить root, і не дозволить іншим командам композитора помилитися з дозволом.

composer config
composer install 

На мою думку, виклик композитора самодоповнення sudo не повинен створювати файли, що належать root, у домашньому каталозі поточних користувачів.

Зверніть увагу, якщо слідувати цим інструкціям композитор Ubuntu 14.04 розмістить кеш:

 ~/.cache/composer

Замість:

~/.composer/cache

Це пояснюється змінною середовища XDG_RUNTIME_DIR, визначеною в Ubuntu 14.04, але, схоже, не визначено в Ubuntu 12.04

Тут пов'язана дискусія


Це не допоможе, якщо ви вже використовуєте найновішу версію композитора. $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey

@Cragmonkey - я запускав останню версію композитора, але просто видалення ~/.composerпапки, здається, вирішило проблему.
Cyclonecode
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.