LINUX.ORG.RU

Правила Polkit для ждущего режима, блокировка сессии, xfce4-power-manager, lid close

 , , ,


0

1

Добрый день! У меня Debian Unstable, policykit-1 0.105-16 Xfce 4.12.3, закрытие крышки обрабатывает xfce4-power-manager. Через N минут бездействия, в соответствии с настройками, экран гаснет и происходит блокировка сессии. Кроме того, через M > N минут бездействия должен произойти переход в ждущий режим, и при закрытии крышки тоже будет ждущий режим. Я столкнулся с тем, что если я закрываю крышку при выключенном экране или просто проходит M минут бездействия, то не происходит перехода в ждущий режим, а после ввода логина/пароля для возвращения в сессию я вижу запрос пароля от policykit. Запрос для действия «org.freedesktop.login1.suspend». Чтобы этот пароль не запрашивался, в каталоге /etc/polkit-1 я создал каталог rules.d, а в нём - файл 10-enable-suspend.rules с содержимым:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.suspend" ||
        action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||
        action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions") {
        return polkit.Result.YES;
    }
});
Тем не менее, пароль всё равно запрашивается и в описанных выше случаях компьютер не уходит в ждущий режим. Пожалуйста, подскажите, как решить проблему. Заранее спасибо.

И ещё один вопрос: у меня нет swap, как следствие - спящий режим не работает (ни swap, ни спящий режим мне не нужны). Можно ли из меню Xfce4 как-нибудь убрать спящий режим, чтобы он не мозолил глаза, раз его поддержки всё равно нет?

★★

policykit-1 0.105

В polkit 0.105 нет поддержки правил авторизации. Они появились в версии 0.106. Enjoy your Debian.

Можно попытаться пойти в /usr/share/polkit-1/actions/org.freedesktop.login1.policy, найди там org.freedesktop.login1.suspend и заменить значение в теге allow_inactive на yes.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

В polkit 0.105 нет поддержки правил авторизации. Они появились в версии 0.106.

О_о

Можно попытаться пойти в /usr/share/polkit-1/actions/org.freedesktop.login1.policy, найди там org.freedesktop.login1.suspend и исправь значение в теге allow_inactive на yes.

А нет ли возможности это как-то сделать в /etc, чтобы не менять файлы, которые будут перезаписаны при обнове?

Norong ★★ ()
Ответ на: комментарий от Norong

А нет ли возможности это как-то сделать в /etc, чтобы не менять файлы, которые будут перезаписаны при обнове?

Нет, в том-то и дело!

Как костыль второго порядка, можно сделать на этом файле chattr +i (атрибут immutable запрещает любые изменения файла) — но это может не понравиться dpkg; тут лучше спросить дебианщиков, как правильнее поступить.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Не, вот костыль второго порядка я точно не хочу)

В Ubuntu, где тоже 105 версия есть вот такой пакет: http://packages.ubuntu.com/xenial/policykit-desktop-privileges

С содержимым: http://packages.ubuntu.com/xenial/all/policykit-desktop-privileges/filelist

И правилами типа:

[Disable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=no
Я обнаружил в пакете policykit-1 каталоги
/var/lib/polkit-1/localauthority
/var/lib/polkit-1/localauthority/90-mandatory.d
/var/lib/polkit-1/localauthority/20-org.d
/var/lib/polkit-1/localauthority/10-vendor.d
/var/lib/polkit-1/localauthority/50-local.d
/var/lib/polkit-1/localauthority/30-site.d
, пустые. Видимо, мне рекомендуют туда класть конфиги.

Norong ★★ ()
Последнее исправление: Norong (всего исправлений: 3)
Ответ на: комментарий от Norong

А, вот оно что.

Похоже, до 0.106 там всё-таки был механизм задания правил авторизации, но он был другим.

Вот тут документация: pklocalauthority(8)

Там говорится, что *.pkla можно класть в /etc — например, в /etc/polkit-1/localauthority/99-user.d.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Теперь у меня по пути /etc/polkit-1/localauthority/50-local.d/10-allow_suspend.pkla лежит конфиг:

[Allow logind suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes
Запрос всё равно происходит. Не подскажешь, ЧЯДНТ?

Norong ★★ ()
Ответ на: комментарий от Norong

Тебе нужен не Active, а Inactive (для неактивных/заблокированных сессий). Active там как раз по дефолту yes.

intelfx ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.