Erläuterung der Datei - org.freedesktop.login1.policy

7

Ich benutze Ubuntu 16.04.

Es befindet sich eine Datei, in /usr/share/polkit-1/actions/org.freedesktop.login1.policyder die Berechtigungen für die Optionen zum Herunterfahren / Anhalten / Ruhezustand zu steuern scheinen.

In dieser Datei haben die Offenbarungsoptionen folgendes Format:

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

entsprechend jeder Aktion (Herunterfahren, Anhalten usw.).
Hier ist die Vollversion dieser Datei.

Ich möchte die Bedeutung wissen allow_any, allow_inactiveund allow_activeOptionen.
Was bedeuten sie genau?

Der Grund für meine Neugier ist, dass ich nicht interaktiv ohne root (von cron) in den Ruhezustand wechseln möchte, aber Autorisierungsfehler erhalte .

Und es scheint, dass diese Fehler durch Ändern dieser Datei behoben werden können.

Anmol Singh Jaggi
quelle

Antworten:

3

Aus dem Abschnitt ERKLÄREN VON MASSNAHMEN von polkit - Authorization Framework :

Standardeinstellungen

       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.

Ich hoffe das macht es dir klar.

Kaffeetasse
quelle
1
Was ist ein sessiongenaues? Was ist der Unterschied zwischen activeund inactiveSitzungen? Welche Werte verwende ich, um das am Ende erwähnte Problem zu lösen?
Anmol Singh Jaggi
Verwenden Sie systemctl hibernateBefehl?
Kaffee Tasse
Ja. Ich benutze das.
Anmol Singh Jaggi
OK, ich habe diesen Befehl nicht in meinem System zum Testen. Was ist, wenn Sie den Befehl versuchen, wenn Sie der einzige lokal angemeldete Benutzer sind? Erhalten Sie den gleichen Fehler?
Kaffee Tasse
Soweit ich weiß, bin ich der einzige angemeldete Benutzer. Ich lasse es auf meinem persönlichen Laptop laufen. Ich lief wund uptimevon cronund bekam Anzeige von nur 1 Benutzer.
Anmol Singh Jaggi
4

Dieser Link enthält die Informationen der anderen Antwort besser.

Besonders dieser Teil:

Das Standard-Tag befindet sich dort, wo sich die Berechtigungen oder das Fehlen davon befinden.
Es enthält drei Einstellungen: allow_any, allow_inactive, und allow_active.
Inaktive Sitzungen sind im Allgemeinen Remotesitzungen (SSH, VNC usw.), während aktive Sitzungen auf einem TTY- oder X-Display direkt am Computer angemeldet werden.
allow_anyist die Einstellung, die beide Szenarien umfasst.

Für jede dieser Einstellungen stehen folgende Optionen zur Verfügung:

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.

Auch hier ist die offizielle Hilfeseite von polkit.

Hibernation kann durch Änderung der eingeschaltet wird von cron gemacht werden , noum yesinnerhalb der allow_anyTags im Rahmen der Aktionen org.freedesktop.login1.hibernateund org.freedesktop.login1.hibernate-multiple-sessions.

Dies ist jedoch keine empfohlene Lösung, da sie bei zukünftigen Upgrades gelöscht werden kann.

Stattdessen können Sie eine Datei erstellen, die Folgendes enthält:

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

Namen com.0.enable-hibernation-from-cron.pklaim Verzeichnis /etc/polkit-1/localauthority/50-local.d/den gleichen Effekt zu erzielen.

Eine noch bessere Lösung mit visudowird hier angegeben .

Anmol Singh Jaggi
quelle
Dies ist die bessere Antwort als die andere mit der Manpage zum Einfügen von Kopien. Großartige Arbeit geleistet!
Anwar
@ Anwar Danke! Ich habe diese Antwort akzeptiert, weil sie mich erstens auf Polkit aufmerksam gemacht hat, ohne das meine Antwort nicht möglich gewesen wäre, und zweitens schien es etwas seltsam, meine eigene Antwort zu akzeptieren.
Anmol Singh Jaggi
1
Meiner Meinung nach sollte die richtige und genaueste Antwort akzeptiert werden. Das hilft zukünftigen Besuchern. Da hier nur 2 Antworten gegeben werden, sehe ich kein Problem.
Anwar