Giải thích về tệp - org.freedesktop.login1.policy


7

Tôi đang sử dụng Ubuntu 16.04.

Có một tập tin nằm ở /usr/share/polkit-1/actions/org.freedesktop.login1.policyđó dường như kiểm soát các quyền liên quan đến các tùy chọn tắt / tạm dừng / ngủ đông.

Trong tệp này, các tùy chọn mặc khải có định dạng này:

<defaults>
  <allow_any>no</allow_any>
  <allow_inactive>auth_admin_keep</allow_inactive>
  <allow_active>yes</allow_active>
</defaults>

tương ứng với mọi hành động (tắt máy, tạm dừng, v.v.).
Đây là phiên bản đầy đủ của tập tin đó.

Tôi muốn biết ý nghĩa của allow_any, allow_inactiveallow_activecác tùy chọn.
Ý nghĩa chính xác của chúng là gì?

Lý do cho sự tò mò của tôi là tôi muốn ngủ đông không tương tác mà không cần root (từ cron), nhưng đang nhận được lỗi ủy quyền .

Và dường như những lỗi đó có thể được giải quyết bằng cách sửa đổi tệp này.

Câu trả lời:


3

Từ phần HÀNH ĐỘNG KHAI THÁC của polkit - Khung ủy quyền :

mặc định

       This element is used to specify implicit authorizations for
       clients.

       Elements that can be used inside defaults includes:

       allow_any
           Implicit authorizations that apply to any client. Optional.

       allow_inactive
           Implicit authorizations that apply to clients in inactive
           sessions on local consoles. Optional.

       allow_active
           Implicit authorizations that apply to clients in active
           sessions on local consoles. Optional.

       Each of the allow_any, allow_inactive and allow_active elements can
       contain the following values:

       no
           Not authorized.

       yes
           Authorized.

       auth_self
           Authentication by the owner of the session that the client
           originates from is required.

       auth_admin
           Authentication by an administrative user is required.

       auth_self_keep
           Like auth_self but the authorization is kept for a brief
           period.

       auth_admin_keep
           Like auth_admin but the authorization is kept for a brief
           period.

Tôi hy vọng điều này làm cho nó rõ ràng cho bạn.


1
Một là những gì sessionchính xác? Sự khác biệt giữa activeinactivephiên là gì? Những giá trị nào tôi sử dụng để giải quyết vấn đề tôi đã đề cập ở cuối?
Anmol Singh Jaggi

Bạn đang sử dụng systemctl hibernatelệnh?
coffeMug

Đúng. Tôi đang sử dụng nó.
Anmol Singh Jaggi

OK tôi không có lệnh đó trong hệ thống của mình để kiểm tra. Điều gì sẽ xảy ra nếu bạn thử lệnh khi bạn là người dùng duy nhất đăng nhập cục bộ. Bạn có nhận được cùng một lỗi?
coffeMug

Theo tôi biết, tôi là người dùng duy nhất đăng nhập. Tôi đang chạy nó trên máy tính xách tay cá nhân của tôi. Tôi đã chạy wuptimetừ cronvà chỉ có 1 người dùng.
Anmol Singh Jaggi

4

Liên kết này chứa thông tin được đưa ra bởi câu trả lời khác theo cách tốt hơn.

Đặc biệt là phần này:

Thẻ mặc định là nơi chứa các quyền hoặc thiếu.
Nó chứa ba thiết lập: allow_any, allow_inactive, và allow_active.
Các phiên không hoạt động thường là các phiên từ xa (SSH, VNC, v.v.) trong khi các phiên hoạt động được đăng nhập trực tiếp vào máy trên màn hình TTY hoặc X.
allow_anylà cài đặt bao gồm cả hai kịch bản.

Đối với mỗi cài đặt này, các tùy chọn sau khả dụng:

no: The user is not authorized to carry out the action. There is therefore no need for authentication.
yes: The user is authorized to carry out the action without any authentication.
auth_self: Authentication is required but the user need not be an administrative user.
auth_admin: Authentication as an administrative user is require.
auth_self_keep: The same as auth_self but, like sudo, the authorization lasts a few minutes.
auth_admin_keep: The same as auth_admin but, like sudo, the authorization lasts a few minutes.

Ngoài ra, đây là trang hướng dẫn chính thức của polkit.

Ngủ đông có thể được thực hiện để được bật từ cron bằng cách thay đổi nođể yesbên trong allow_anythẻ dưới những hành động org.freedesktop.login1.hibernateorg.freedesktop.login1.hibernate-multiple-sessions.

Nhưng đây không phải là một giải pháp được khuyến nghị vì nó có thể bị xóa trong quá trình nâng cấp trong tương lai.

Thay vào đó, bạn có thể tạo một tệp chứa các mục sau:

[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes 

có tên com.0.enable-hibernation-from-cron.pklatrong thư /etc/polkit-1/localauthority/50-local.d/mục để đạt được hiệu quả tương tự.

Một giải pháp thậm chí tốt hơn bằng cách sử dụng visudođược đưa ra ở đây .


Đây là câu trả lời tốt hơn so với câu trả lời khác với trang man dán sao chép. Làm tốt lắm
Anwar

@Anwar Cảm ơn! Tôi chấp nhận câu trả lời đó bởi vì trước tiên, nó khiến tôi biết về polkit mà không có câu trả lời của tôi sẽ không thể thực hiện được, và thứ hai, chấp nhận câu trả lời của riêng tôi có vẻ hơi kỳ lạ.
Anmol Singh Jaggi

1
Theo tôi, câu trả lời đúng và chính xác nhất nên được chấp nhận. Điều đó giúp du khách trong tương lai. Vì ở đây chỉ có 2 câu trả lời được đưa ra, tôi thấy không có vấn đề gì.
Anwar
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.