- pklocalauthority je zastaralá
- Potřebujete systemd with logind a polkit.
Dostupné akce
pkaction
# or /usr/share/polkit-1/actions/
Měli byste se podívat na /usr/share/polkit-1/actions/org.freedesktop.login1.policy
Přidat pravidlo
Nejprve začněte sledovat systémové zprávy, abychom viděli, zda naše nové pravidlo funguje:
journalctl -f
Poté vytvořte soubor /etc/polkit-1/rules.d/60-noreboot_norestart.rules
(v javascriptu).
V tomto souboru přidáme logiku pro kontrolu akcí a povolíme users
v power
skupina nebo vyžadovat su
autorizace:
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions") {
if (subject.isInGroup("power")) {
return polkit.Result.YES;
} else {
return polkit.Result.AUTH_ADMIN;
}
}
});
Pravidlo by se mělo načíst a mělo by fungovat. Odkazy níže.
- https://lists.fedoraproject.org/pipermail/users/2013-September/440457.html
- https://wiki.archlinux.org/index.php/Polkit#Authorization_rules
- http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
- https://bbs.archlinux.org/viewtopic.php?pid=1335204#p1335204
Nejprve si všimněte, že funkce vypnutí ConsoleKit považuje „jeden uživatel“ a „více uživatelů“ za dvě různé situace – vypnutí systému vždy vyžaduje ověření správce, pokud jsou přihlášeni další uživatelé.
Všechny tyto akce jsou řízeny PolicyKit. Pokud chcete upravit zásady, můžete tak učinit podle popisu v polkit(8) – /etc/polkit-1/rules.d/20-disallow-shutdown.rules
:
polkit.addRule(function(action, subject) { if ((action.id == "org.freedesktop.consolekit.system.stop" || action.id == "org.freedesktop.consolekit.system.restart") && subject.isInGroup("users")) { return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO; } });
PolicyKit 0.105 a starší verze to dokumentují v pklocalauthority(8) – /etc/polkit-1/localauthority/50-local.d/20-disallow-shutdown.pkla
:
[Disallow shutdown] Identity=unix-group:users Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart ResultAny=no ResultInactive=no ResultActive=auth_admin
Action
s jsou uvedeny v souboru zásad ConsoleKit nebo spuštěním pkaction
.