文件說明 - org.freedesktop.login1.policy
我正在使用 Ubuntu 16.04。
有一個文件
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
似乎可以控制有關關機/掛起/休眠選項的權限。在此文件中,相關選項採用以下格式:
<defaults> <allow_any>no</allow_any> <allow_inactive>auth_admin_keep</allow_inactive> <allow_active>yes</allow_active> </defaults>
對應於每個操作(關閉、暫停等)。
這是該文件的完整版本。
我想知道
allow_any
,allow_inactive
和allow_active
options 的含義。它們到底是什麼意思?
我好奇的原因是我想在沒有 root (來自 cron)的情況下以非互動方式休眠,但是我得到了授權錯誤。
看來這些錯誤可以通過修改這個文件來解決。
來自polkit - 授權框架的聲明操作部分:
預設值
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.
我希望這能讓你清楚。
此連結以更好的方式 包含其他答案提供的資訊。
特別是這部分:
預設標籤是權限或缺少權限所在的位置。
它包含三個設置:
allow_any
、allow_inactive
和allow_active
。非活動會話通常是遠端會話(SSH、VNC 等),而活動會話直接登錄到 TTY 或 X 顯示器上的機器。
allow_any
是包含這兩種情況的設置。對於這些設置中的每一個,都可以使用以下選項:
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.
另外,這裡是 polkit 的官方手冊頁。
no
通過將操作更改為標籤yes
內的to和,可以從 cron 打開休眠。allow_any``org.freedesktop.login1.hibernate``org.freedesktop.login1.hibernate-multiple-sessions
但這不是推薦的解決方案,因為它可以在以後的升級過程中被刪除。
相反,您可以創建一個包含以下內容的文件:
[Enable hibernate to be run via cron] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions ResultAny=yes
com.0.enable-hibernation-from-cron.pkla
在目錄中命名/etc/polkit-1/localauthority/50-local.d/
以達到相同的效果。這裡
visudo
給出了一個更好的解決方案。