Есть "сервер" Debian 8 и Deluge 1.3.13 + libtorrent: 1.1.1.0
Ради интереса, хочу включить плагин Autoshutdown
GitHub - https://github.com/cas--/autoshutdown
Тема на оф. форуме - http://forum.deluge-torrent.org/viewtopic....f=9&t=41165 (возможно я не доглядел, где описано решение пробемы)
Но есть проболема - компьютер не выключается.
Вот лог-файл работы плагина:
Код: Выделить всё
[ERROR ] 14:09:45 eventmanager:59 Event handler TorrentFinishedEvent failed in <bound method Core.on_event_torrent_finished of <autoshutdown.core.Core object at 0x7fa55401f210>> with exception org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.2" (uid=1000 pid=801 comm="/usr/bin/python /usr/bin/deluged -d -l /home/ted70/") interface="org.freedesktop.login1.Manager" member="Shutdown" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=809 comm="/lib/systemd/systemd-logind ")
Код: Выделить всё
ted70@server:~$ dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
Команда от пользователя не работала. Писала отказано в доступе.
Я сделал, с помощью этого разрешение:
Код: Выделить всё
cat /etc/polkit-1/localauthority/50-local.d/deluge-actions.pkla
[Actions for my user]
Identity=unix-user:ted70
Action=org.freedesktop.login1.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
я тут уже запутался с этими consolekit, polkit, logind :-(
да и гуглить тяжело, везде натыкаешься на советы с исп. sodo или например systemctl poweroff
Как дать права на выключение компьютера службе deluge (она работает от имени ted70 (т.е. получается uid=1000))?
Наверника где-то есть конфиг файл, который разрешает выключение не привелигированным пользователям.
п.с. так же я пробовал создать правило, но тоже не помогло:
Код: Выделить всё
cat /etc/polkit-1/rules.d/10-poweroff.rules
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions") {
return polkit.Result.YES;
}
});