Làm thế nào để xây dựng ứng dụng mà không có đặc quyền sudo?


15

Tôi cần gì để thiết lập trên máy chủ Ubuntu 9.10 để người dùng có thể xây dựng các ứng dụng có sự lựa chọn (ví dụ: / cấu hình, thực hiện && thực hiện cài đặt) mà không cần đặc quyền sudo / admin.

Tôi chỉ cảm thấy một chút rủi ro bảo mật khi phải cấp cho người dùng quyền truy cập vào các phần của hệ thống mà họ có thể không cần để xây dựng một ứng dụng.

Câu trả lời:


40

Nếu người dùng của bạn sử dụng

./configure --prefix=/home/user/opt/

Hoặc cho các dự án cmake

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

Điều này sẽ cài đặt chương trình trong tiền tố đó (thay vì mặc định / usr / local /) và sau đó người dùng của bạn sẽ có thể chạy chương trình như thế này:

/home/user/opt/bin/program

Nếu bạn muốn chúng có thể chạy các chương trình chỉ bằng cách sử dụng tên (không có đường dẫn đầy đủ), bạn cần thêm /home/user/opt/binvào biến môi trường đường dẫn, chỉnh sửa người dùng .profile và thêm dòng sau:

export PATH=/home/user/opt/bin:$PATH

Lưu ý rằng các chương trình được cài đặt theo cách này sẽ ở chế độ riêng tư đối với người dùng cụ thể, nhưng đó là một cách để làm điều đó


Những người dùng khác sẽ có thể sử dụng các chương trình được cài đặt như thế này nếu họ cung cấp đường dẫn đầy đủ và các quyền được đặt phù hợp; và có vẻ như umask mặc định cho phép điều này trên cài đặt máy tính để bàn của tôi.
Alistair Buxton

Cơ sở mã mà tôi đang biên dịch có Makefilenhưng không có cấu hình, tôi chỉ vào đó và thay đổi prefix = /some/pathdòng thành thư mục nhà của riêng tôi (không có dấu gạch chéo) và sau đó chạy make installmà không cần sudo - tất cả đều hoạt động, vì vậy cảm ơn.
Big Rich

8

Người dùng có thể xây dựng các ứng dụng mà không có quyền sudo. Lần duy nhất bạn cần quyền sudo là khi bạn muốn cài đặt một cái gì đó vào các thư mục hệ thống.

./configuremakelàm việc luôn không có quyền sudo. make installthường cần quyền sudo vì nó sẽ cài đặt ứng dụng /usr/localhoặc /usr(đôi khi /opt).

Tuy nhiên, nếu bạn thay đổi tiền tố cho đường dẫn cài đặt (nghĩa là ./configure --prefix=~/usr/local) theo cách cài đặt sẽ được thực hiện bên trong cây thư mục chính của người dùng, thì không cần quyền sudo cho make install.


Tôi vẫn nghĩ rằng câu trả lời của bạn không hoàn toàn được sao lưu. Tại sao làm ./configuremakelàm việc luôn mà không có sudo? Làm thế nào tôi nên biện minh cho một người tiếp tục thực hiện sudo make installchẳng hạn?
Nikos Alexandris

0

Thêm vào những gì txwikinger đã nói, bạn cũng có thể muốn kiểm tra fakeroot, điều này mang đến cơ hội xây dựng các gói .deb dpkgmà không cần các đặc quyền nâng cao. Tất nhiên, cài đặt những người nói chung sẽ cần truy cập sudo.

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.