it-swarm-vi.com

Làm cách nào tôi có thể đặt Trung tâm phần mềm để cài đặt phần mềm cho người dùng không root?

Làm cách nào tôi có thể đặt Trung tâm phần mềm để cho phép người dùng không phải root cài đặt nội dung từ repos Ubuntu mà không phải nhập mật khẩu của họ?

Tôi hoàn toàn nhận thức được ý nghĩa bảo mật và tôi sẵn sàng chấp nhận rủi ro. Fedora 12 xuất xưởng với thứ như thế này. (Bằng cách sửa đổi cấu hình Chính sách, tôi tin)

47
snostorm

Bạn có thể sửa đổi các quyền của PolicyKit để cho phép người dùng truy cập vào phụ trợ aptdaemon mà Trung tâm phần mềm sử dụng.

dpkg --listfiles aptdaemon cho thấy /usr/share/polkit-1/actions/org.debian.apt.policy là tệp chỉ định các hành động có thể có trên phụ trợ aptdaemon.

Nhìn vào tệp đó, các thẻ < action id=""> chỉ định các hành động có thể. Bạn có thể muốn org.debian.apt.install-packages cho phép người dùng cài đặt các gói mới từ kho lưu trữ và org.debian.apt.update-cache để cho phép người dùng cập nhật danh sách gói.

Xem man pklocalauthority tài liệu nào về cách đặt quyền cục bộ trên các hành động của Chính sách. Đặt phần sau vào /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla sẽ cho phép bất kỳ người dùng nào đăng nhập vào máy cục bộ để cài đặt các gói sau khi nhập mật khẩu của riêng họ (ngay cả khi họ không thuộc nhóm quản trị viên) và cập nhật bộ đệm của gói mà không cần nhập bất kỳ mật khẩu nào.

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
36
RAOF

Tôi không nghĩ hiện tại có thể làm như vậy thông qua GUI, nhưng những điều sau đây sẽ hoạt động, mặc dù có một chút ít. YMMV.

Thêm dòng sau vào/etc/sudoers (sử dụng Sudo visudo để chỉnh sửa tệp):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

Sau đó, bạn chỉ cần tạo và thêm người dùng cụ thể vào nhóm packageinstallers:

$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers

Bây giờ jdoe có thể làm như sau:

$ Sudo apt-get install <some-package>

và bạn có thể chỉnh sửa mục menu trên máy tính để bàn cho Trung tâm phần mềm để nó gọi software-center đang chuẩn bị lệnh với gksudo.

PolicyKit có thể cho phép bạn làm như vậy mà không cần Sudo, nhưng điều này nằm ngoài sự hiểu biết của tôi vào thời điểm này.

10
lfaraone

Nếu bạn chỉ cần một quyền chung để cho phép/không cho phép cài đặt gói, hãy truy cập vào Chính sách.

Thật không may, PolicyKit không có quyền kiểm soát tốt đối với gói cần cài đặt. Nếu bạn muốn cấp cho người dùng của mình quyền chỉ cài đặt một bộ ứng dụng bị hạn chế, bạn nên sử dụng Sudo và cài đặt một cái gì đó như softwarechannels ...

Tôi cũng đã tìm kiếm một cái gì đó tương tự, nhưng vì tôi không tìm thấy gì, tôi đã mã hóa giải pháp dễ dàng này "softwarechannels", có sẵn ở đây trên GitHub

Đây là một hệ thống rất đơn giản để cho phép người dùng thông thường (không phải quản trị viên) cài đặt các gói từ danh mục bị hạn chế.

Chỉ cần xác định 'kênh' (nhóm gói) trong một tệp văn bản đơn giản và cung cấp cho người dùng của bạn quyền để khởi chạy phần mềm.

Họ sẽ chỉ thấy các gói trong các kênh phù hợp với các nhóm unix của họ.

5
Alfonso E.M.

Câu trả lời của RAOF chỉ áp dụng cho Ubuntu. Kubfox sử dụng QAptWorker làm phụ trợ (quan sát cho Natty và Oneiric). Để cho phép cài đặt không root, hãy tạo /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla có chứa:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

Tôi muốn cho phép một số người dùng không phải quản trị viên cài đặt phần mềm trong khi không cấp quyền truy cập Sudo trực tiếp. Điều đó đã được thực hiện bằng cách chèn các dòng tiếp theo trong cả hai nhóm cấu hình:

Identity=unix-user:some-non-admin-user

Nếu có một nhóm phải được cấp phép, hãy sử dụng unix-group thay vì unix-user.

5
Lekensteyn