Sudo का उपयोग किए बिना कंपोज़र चलाना (परिवर्तित स्वामी और अनुमतियां आज़माया गया)


13

जब भी मैं संगीतकार (जैसे, sudo composer install, sudo composer self-updateआदि) चलाता हूं , मुझे इसे sudo के साथ चलाने की आवश्यकता होती है क्योंकि फ़ाइल का स्वामी रूट है।

हालाँकि जब भी मैं sudo रूट के साथ कंपोज़र का उपयोग करता हूं, तो वह विक्रेता फ़ोल्डर का मालिक होता है और फिर मुझे उस फ़ोल्डर / विशेषाधिकारों के स्वामी को रूट से www-data में बदलना पड़ता है।

इसे ठीक करने का सबसे अच्छा तरीका क्या है ताकि मुझे हर बार सूडो न चलाना पड़े?

/usr/local/bin/composerरूट के मालिक को www-डेटा से बदलें ?

हर बार जब मैं sudo का उपयोग करता हूं, तो स्वामित्व बदलने और अनुमति प्रदान करने से बचने के लिए इसे संभालने का आदर्श तरीका है composer install?

संपादित करें: वर्तमान में संगीतकार के लिए अनुमतियाँ हैं -rwxr-xr-x। और मैंने 775 पर सेट की गई अनुमतियों के साथ /usr/local/bin/composerओवर के मालिक को बदलने की कोशिश की है www-data:www-data, और फिर भी मैं बिना चलाए संगीतकार नहीं चला सकता sudo

जवाबों:


9

यदि "सभी" को संगीतकार को पढ़ने और निष्पादित करने की अनुमति है, तो आपको sudo का उपयोग करने की आवश्यकता नहीं है:

sudo chmod 755 /var/local/bin/composer

चूंकि आपने पहले ही संगीतकार को कम से कम एक बार निष्पादित किया है root, इसलिए संगीतकार (प्रति-उपयोगकर्ता-) कैश निर्देशिका अब रूट के स्वामित्व में है और इसलिए आपके सामान्य उपयोगकर्ता द्वारा लिखित नहीं है।

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

फ़ाइल-स्वामी को ठीक करेगा।


मैंने यह कोशिश की है और मैं composer self-updateसूडो का उपयोग किए बिना अभी भी चलने में असमर्थ हूं । क्या मुझे 775 का उपयोग करने की आवश्यकता है?
सवारी करें

अच्छी तरह से स्व-अद्यतन 755 के साथ काम नहीं करेगा लेकिन क्या यह मामला है? आत्म-अद्यतन कुछ भी नहीं है जिसे आपको हर दिन निष्पादित करने की आवश्यकता होगी, बस इसे हर 2 सप्ताह या एक बार अपडेट करें (पाठ्यक्रम के sudo के साथ)।
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/" रूट के स्वामित्व में है, बस इस फ़ोल्डर को हटा दें (इसका सिर्फ एक कैश), तो यह बिना काम करना चाहिए sudo। (या स्वामित्व बदलें 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

-H फ्लैग के बिना सूडो कंपोज़र सेल्फ-अपडेट चलाने से ~ / .composer बन जाएगा जो रूट के स्वामित्व में है और अनुमति के लिए अन्य कंपोजर कमांड को रोक देगा।

composer config
composer install 

मेरी राय में sudo कंपोज़र सेल्फ-अपडेट को कॉल करने से वर्तमान उपयोगकर्ता होम निर्देशिका में रूट के स्वामित्व वाली फ़ाइलें नहीं बननी चाहिए।

ध्यान दें कि यदि आप Ubuntu 14.04 संगीतकार के इन निर्देशों का पालन करते हैं, तो कैश को इसमें रखा जाएगा:

 ~/.cache/composer

बजाय:

~/.composer/cache

यह उबंटू 14.04 में परिभाषित XDG_RUNTIME_DIR पर्यावरण चर के कारण है, लेकिन उबंटू 9.04 में परिभाषित नहीं किया गया लगता है

इससे संबंधित एक चर्चा


यह मदद नहीं करता है यदि आप पहले से ही संगीतकार का सबसे वर्तमान संस्करण चला रहे हैं। $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
क्रैगमोंकी

@ क्रेगमॉन्की - मैं संगीतकार का नवीनतम संस्करण चला रहा था लेकिन सिर्फ ~/.composerफ़ोल्डर को हटाने से समस्या का समाधान होता है।
चक्रवात
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.