Có một gksudo trung tính máy tính để bàn?


17

Có nhiều công cụ cho các máy tính để bàn khác nhau nhằm chạy một ứng dụng đồ họa dưới dạng root. gksudo, kdesudo, empower, Vv ...

Nhưng nếu tôi đang viết một tập lệnh có thể được sử dụng trên bất kỳ máy tính để bàn Linux nào thì sao? Có một xdg-sudosố loại ..? Một tiêu chuẩn để có được quyền truy cập sudo trong môi trường máy tính để bàn?

Câu trả lời:


16

Theo đề nghị của @Tachyons, tôi đã nghiên cứu rất nhiều về pkexecnó và nó thật tuyệt vời !

  • Nó là một phần của PolicyKit , một gói được sử dụng rộng rãi.
  • Được lưu trữ và tài trợ bởi freedesktop.org
  • Mặc định trong Gnome , Unity , MATE , Cinnamon , KDE , LXDEXFCE và có thể cả những thứ khác
  • Hoạt động thông qua D-Bus, do đó, nó hoàn toàn trung lập với máy tính để bàn, với giao thức được xác định rõ.
  • Trong nhiều DE, nó được sử dụng trong một số dịch vụ như màn hình đăng nhập, tắt / khởi động lại, quản lý đĩa (udisks / automount), v.v.

Vì vậy, có, nó đáp ứng tất cả các yêu cầu, và tôi đoán đó là điều gần nhất mà một "gksudo phổ quát" có thể.

Điều đó nói rằng, pkexeclà giao diện dòng lệnh cho PolicyKit. Có 2 chế độ hoạt động cơ bản:

  • Chỉ cần chạy nó như bạn muốn sudovà bạn nhận được một dấu nhắc GUI đẹp:

    $ pkexec rm -rf /

nhắc nhở GUI pkexec

  • Hoặc tạo tệp ủy quyền Chính sách cho ứng dụng của bạn, thả nó vào /usr/share/polkit-1/rules.dvà nó sẽ cho phép rất nhiều tùy chọn liên quan đến tùy chỉnh và bảo mật, ví dụ: chỉ truy cập root cho một số hành động nhất định, không cần mật khẩu cho người khác, truy cập giới hạn ở một số đường dẫn nhất định , v.v. Bạn có thể tinh chỉnh cài đặt của mình với độ chi tiết đáng kinh ngạc.

6

Một cách tổng quát hơn sẽ là viết một "chương trình trợ giúp". Một chương trình như vậy sẽ nhắc người dùng nhập mật khẩu; nếu bạn chắc chắn rằng, giả sử, Zenity, đã được cài đặt, bạn có thể sử dụng nó, nếu không, bạn sẽ cần phải viết chương trình trợ giúp bằng Python hoặc một cái gì đó khác có thể tương tác với GUI.

Đọc sudohướng dẫn cho các tùy chọn -A("Askpass") và -S(stdin).

Và hãy nhớ rằng khi bạn chạy sudotừ tập lệnh của mình, bạn cần -Htùy chọn (home) để mô phỏng gksudo.

Phương pháp này hoạt động tốt, nhưng bạn cần kiểm tra kỹ chương trình trợ giúp để đảm bảo rằng nó không có lỗi.


1
Bạn cũng cần xử lý mã thông báo xauth trong chương trình của mình - điều này không tầm thường.
symcbean

4

Không, không có bất kỳ cách tiêu chuẩn nào để nhận quyền (hoặc bất kỳ người dùng nào khác).

Nếu bạn muốn tương thích với càng nhiều hệ thống càng tốt, đừng giả sử bất kỳ cách nào nhưng hãy nói với người dùng rằng họ phải chạy tập lệnh của bạn như một người dùng cụ thể. Sau đó, tùy thuộc vào người dùng / quản trị viên để định cấu hình hệ thống để tập lệnh của bạn được chạy theo cách phù hợp.

Đưa ra một số gợi ý về cách sử dụng các hệ thống xác thực phổ biến nhất, như su, sudo và ConsoleKit, sẽ rất tuyệt.


Đúng vào đầu năm 2009, nhưng rất may bây giờ polkit(chính thức là Chính sáchKit) đủ rộng để được coi là một tiêu chuẩn.
MestreLion
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.