ใช้งานนักแต่งเพลงโดยไม่ใช้ sudo (ลองเปลี่ยนเจ้าของและใช้สิทธิ์)


13

ทุกครั้งที่ฉันเรียกใช้ผู้แต่ง (เช่นsudo composer install, sudo composer self-updateอื่น ๆ ) ฉันต้องเรียกใช้สิ่งนี้ด้วย sudo เนื่องจากเจ้าของไฟล์คือรูท

อย่างไรก็ตามทุกครั้งที่ฉันใช้ผู้แต่งกับ sudo root เป็นเจ้าของโฟลเดอร์ผู้จำหน่ายแล้วฉันต้องเปลี่ยนเจ้าของโฟลเดอร์ / สิทธิ์พิเศษจาก 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 sudoและยังคงฉันไม่สามารถทำงานได้โดยไม่ต้องใช้นักแต่งเพลง

คำตอบ:


9

หาก "ทุกคน" ได้รับอนุญาตให้อ่านและเรียกใช้งานผู้แต่งคุณไม่จำเป็นต้องใช้ sudo:

sudo chmod 755 /var/local/bin/composer

เนื่องจากคุณดำเนินการผู้เรียบเรียงอย่างน้อยหนึ่งครั้งrootไดเรกทอรีแคชผู้เรียบเรียง (ต่อผู้ใช้) จะเป็นเจ้าของโดย root ดังนั้นผู้ใช้ปกติของคุณจึงไม่สามารถเขียนได้

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

จะแก้ไขเจ้าของไฟล์


ฉันได้ลองแล้ว แต่ฉันก็ยังวิ่งcomposer self-updateไม่ได้ถ้าไม่ใช้ sudo ฉันจำเป็นต้องใช้ 775 หรือไม่?
ปั่นป่วน

การอัปเดตด้วยตนเองจะไม่สามารถใช้กับ 755 ได้ อัปเดตตัวเองคืออะไรที่คุณจะต้องใช้งานทุกวันเพียงอัปเดตทุกๆ 2 สัปดาห์หรือมากกว่านั้น (แน่นอนว่า sudo)
tkausl

พยายามcomposer updateแล้วและนี่ก็ไม่สามารถใช้ได้กับการอนุญาตเหล่านั้น ฉันยังต้องใช้ sudo ก่อน นี่เป็นข้อผิดพลาดที่ฉันได้รับfile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
ปั่นป่วน

โอ้ใช่คุณใช้ "sudo" เพื่ออัปเดตคลังโฆษณาของคุณแล้วฉันคิดว่า "/home/lamp/.composer/" เป็นเจ้าของโดย root เพียงแค่ลบโฟลเดอร์นี้ (เพียงแค่แคช) จากนั้นก็ควรทำงานโดยไม่ต้อง 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

การรันการอัปเดตตัวแต่งเพลงของ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.