somegroup
のユーザーがsomeunit
systemdサービスを管理できるようにしようとしています。
polkit (>=0.106)
で、これはルールを追加することで実行できます。
_/etc/polkit-1/rules.d/20-someunit.rules
---
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units"
&& subject.isInGroup("somegroup")
&& (action.lookup("unit") == "someunit.service") )
{
var verb = action.lookup("verb");
if (verb == "start" || verb == "stop" || verb == "restart") {
return polkit.Result.YES;
}
}
});
_
しかし、私は2012年から_polkit 0.105
_を使用しているDebianストレッチ/バスターを使用しています。polkit(<0.106)
は_rules.d/*
_ファイルをサポートしていません。代わりに、_/etc/polkit-1/localauthority/50-local.d/*.pkla
_に依存しています。
pklocalauthority(8) のいくつかの例に従って、同等のpklaファイルでこれのほとんどを機能させることができます。
_/etc/polkit-1/localauthority/50-local.d/manage-units.pkla
----
[Allow users to manage services]
Identity=unix-group:somegroup
Action=org.freedesktop.systemd1.manage-units
ResultActive=yes
_
ただし、これにより、すべてのサービスに対するすべてのアクションへのアクセスが許可されます。特定のaction.lookup()
機能を許可することに相当するものはありますか?
私は_systemctl enable
_と_systemctl edit
_を試しましたが、どちらもまだ失敗しました(それは良いことです)。したがって、action.lookup("verb")
は必須ではないかもしれませんが、action.lookup("unit")
は依然として非常に重要です。
このテーマについては、未回答の質問がたくさんあります。
不可能です。この機能は、.rules-variantに対してのみ実装されました。