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?


47

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 một cái gì đó như thế này. (Bằng cách sửa đổi cấu hình Chính sách, tôi tin)


5
Điều quan trọng cần lưu ý là Fedora cũng ủng hộ nó sau khi bầu trời sụp đổ trên chúng.
Hiệp sĩ Nicholas

Vâng, tôi nhớ điều đó. Nó thực sự chỉ có ý nghĩa trên máy tính để bàn chỉ có một hoặc hai người dùng.
snostorm

Ghi nhớ một số phần mềm thị trường ứng dụng như Trung tâm phần mềm cho phép thay đổi kho lưu trữ hệ thống. Việc tự phục vụ các gói là rủi ro, nhưng người dùng thêm các nguồn gói không đáng tin cậy thực sự nguy hiểm.
Alfonso EM

Câu trả lời:


36

Bạn có thể sửa đổi các quyền của Chính sách để 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 aptdaemoncho thấy đó /usr/share/polkit-1/actions/org.debian.apt.policylà tệp chỉ định các hành động có thể có trên phụ trợ aptdaemon.

Nhìn vào tập tin đó, các < action id="">thẻ chỉ định các hành động có thể. Bạn có thể muốn org.debian.apt.install-packagescho 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-cachecho phép người dùng cập nhật danh sách gói.

Xem man pklocalauthoritytà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 các mục sau vào /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklasẽ 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

Các chính sách của /usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Kubfox

Hướng dẫn cho Kubfox có thể được tìm thấy trong câu trả lời của tôi
Lekensteyn

Cứu người - chúc mừng bạn đời! Tôi đã phải thêm Identity=*để làm cho điều này hoạt động, được điều chỉnh từ Askubfox.com/a/123260 . Ngoài ra, có cách nào để có thêm đầu ra nhật ký của bộ chính sách trong ví dụ /var/log/auth.log(hoặc bất kỳ tệp nhật ký nào khác) không? Tôi chỉ nhận được authentication failstin nhắn, nhưng không có lý do tại sao nó thất bại ...
ssc

10

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 packageinstallersnhóm:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Bây giờ jdoecó 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-centervào việc chuẩn bị lệnh với gksudo.

Chính sách có thể cho phép bạn làm như vậy mà không cần sudo, nhưng nó vượt quá tầm hiểu biết của tôi vào thời điểm này.


Điều này cho phép họ cài đặt từ Synaptic hoặc aptitude, hay chỉ apt-get?
snostorm

Nếu bạn đã thêm "/ usr / bin / synaptic" vào danh sách, nó sẽ như vậy. Trên thực tế, bạn có thể có thể thêm "/ usr / bin / software-centre" vào danh sách và nó sẽ hoạt động. Mặc dù chưa kiểm tra điều đó, hãy cho tôi biết nếu nó hoạt động và tôi sẽ cập nhật câu trả lời.
lfaraone

Tôi sẽ thử xem. :)
snostorm

Điều đó sẽ yêu cầu người dùng biết chạy trung tâm phần mềm với sudo hoặc để bạn sửa đổi tệp .desktop. Xem câu trả lời của tôi về cách điều chỉnh Chính sách để làm những gì bạn muốn.
RAOF

Đồng ý, đó sẽ là một giải pháp ưu việt.
lfaraone

5

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.pklachứ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, sử dụng unix-groupthay vì unix-user.


Để áp dụng lại các quy tắc, tôi khởi động lại. (đăng nhập lại có thể cũng hoạt động)
Lekensteyn

Làm thế nào bạn có nghĩa vụ phải làm điều này? Ngay cả sau khi sudo -itôi thậm chí không có quyền truy cập vào /etc/polkit-1/localauthority(Ubuntu 17.10): "Sẽ không xử lý thư mục / etc / polkit-1 /
localmasterity

5

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 PolicyKit.

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 sudovà 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à 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ọ.

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.