Chạy Trình soạn thảo mà không sử dụng sudo (đã thử thay đổi chủ sở hữu và quyền)


12

Mỗi lần tôi chạy trình soạn thảo (ví dụ: sudo composer install, sudo composer self-updatev.v.) tôi cần chạy cái này với sudo vì chủ sở hữu của tệp là root.

Tuy nhiên, mỗi khi tôi sử dụng trình soạn thảo với sudo root sẽ sở hữu thư mục nhà cung cấp và sau đó tôi phải thay đổi chủ sở hữu của thư mục / đặc quyền đó từ root sang dữ liệu www.

Cách tốt nhất để khắc phục điều này là gì để tôi không phải chạy sudo mỗi lần?

Thay đổi chủ sở hữu /usr/local/bin/composertừ root sang dữ liệu www?

Đây có phải là cách lý tưởng để xử lý việc này để tránh phải thay đổi quyền sở hữu và cấp phép mỗi khi tôi sử dụng sudo composer install?

Chỉnh sửa: Các quyền cho nhà soạn nhạc hiện đang -rwxr-xr-x. Và tôi đã thử chuyển đổi chủ sở hữu /usr/local/bin/composersang www-data:www-datavới quyền được đặt thành 775 và tôi vẫn không thể chạy trình soạn thảo mà không chạy sudo.

Câu trả lời:


8

Nếu "mọi người" được phép đọc và thực thi trình soạn nhạc, bạn không cần sử dụng sudo:

sudo chmod 755 /var/local/bin/composer

Vì bạn đã thực thi trình soạn thảo ít nhất một lần dưới dạng root, thư mục bộ đệm (của mỗi người dùng) hiện thuộc quyền sở hữu của root và do đó người dùng bình thường của bạn không thể ghi được.

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

sẽ sửa chủ sở hữu tập tin.


Tôi đã thử điều này và tôi vẫn không thể chạy composer self-updatemà không sử dụng sudo. Tôi có cần sử dụng 775 không?
cưỡi những cơn lốc

Tự cập nhật tốt sẽ không hoạt động với 755 nhưng vấn đề này có quan trọng không? tự cập nhật là không có gì bạn cần thực hiện mỗi ngày, chỉ cần cập nhật nó 2 tuần một lần hoặc lâu hơn (tất nhiên là với sudo).
tkausl 17/03/2015

Đã thử composer updatevà điều này cũng không hoạt động với các quyền đó. Tôi vẫn phải sử dụng sudo trước. Đây là lỗi tôi gặp phảifile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
cưỡi cơn lốc

Ồ, vâng, bạn đã sử dụng "sudo" để cập nhật một số deps của mình, tôi nghĩ "/home/lamp/.composer/" được sở hữu bởi root, chỉ cần xóa thư mục này (chỉ là bộ đệm), sau đó nó sẽ hoạt động mà không cần sudo. (Hoặc thay đổi quyền sở hữu chown -R lamp:lamp /home/lamp/.composer:)
tkausl 18/03/2015

Đó là mẹo, đi với việc thay đổi chủ sở hữu thành đèn. Bạn có thể cập nhật câu trả lời của bạn và tôi sẽ chấp nhận nó? Cảm ơn takusl
cưỡi cơn lốc

5

Tôi đã giải quyết vấn đề này trong nhiều tuần.

Tôi nghĩ giải pháp là chạy tự cập nhật của nhà soạn nhạc với -H

sudo -H composer self-update

Trước khi làm điều này, hãy chắc chắn xóa các thư mục .composer trong root và thư mục chính của người dùng mà bạn muốn thực thi trình soạn thảo.

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

Chạy tự cập nhật sudo composer mà không có cờ -H sẽ tạo ~ / .composer do root sở hữu và sẽ ngăn các lệnh soạn thảo khác có lỗi cấp phép.

composer config
composer install 

Theo ý kiến ​​của tôi, việc tự cập nhật sudo composer không nên tạo các tệp do root sở hữu trong thư mục chính của người dùng hiện tại.

Lưu ý nếu bạn làm theo các hướng dẫn này trên trình soạn thảo Ubuntu 14.04 sẽ đặt bộ đệm vào:

 ~/.cache/composer

Thay vì:

~/.composer/cache

Điều này là do biến môi trường XDG_RUNTIME_DIR được xác định trong Ubuntu 14.04 nhưng dường như không được xác định trong Ubuntu 12.04

Một cuộc thảo luận liên quan ở đây


Điều này không có ích nếu bạn đang chạy phiên bản mới nhất của nhà soạn nhạc. $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey

@Cragmonkey - Tôi đã chạy phiên bản mới nhất của nhà soạn nhạc nhưng chỉ cần xóa ~/.composerthư mục dường như để giải quyết vấn đề.
Cyclonecode
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.