LINUX.ORG.RU

systemctl suspend call to suspend failed: acces denied

 , ,


0

1

Пару дней назад всё прекрасно работало, не понял из-за чего, подозреваю, что после того как поставил gnome-polkit перестал работать сон.

$ systemctl suspend

Call to Suspend failed: Access denied

$ sudo grep -ri org.freedesktop.login1.suspend /usr/share

/polkit-1/
/usr/share/polkit-1/actions/org.freedesktop.login1.policy:        <action id="org.freedesktop.login1.suspend">
/usr/share/polkit-1/actions/org.freedesktop.login1.policy:        <action id="org.freedesktop.login1.suspend-multiple-sessions">
/usr/share/polkit-1/actions/org.freedesktop.login1.policy:                <annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.suspend</annotate>
/usr/share/polkit-1/actions/org.freedesktop.login1.policy:        <action id="org.freedesktop.login1.suspend-ignore-inhibit">
/usr/share/polkit-1/actions/org.freedesktop.login1.policy:                <annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.suspend</annotate>

$ grep -i suspend /usr/share/dbus-1/system.d

/org.freedesktop.login1.conf
                       send_member="Suspend"/>
                       send_member="SuspendWithFlags"/>
                       send_member="SuspendThenHibernate"/>
                       send_member="SuspendThenHibernateWithFlags"/>
                       send_member="CanSuspend"/>
                       send_member="CanSuspendThenHibernate"/>

busctl monitor:

Type=error  Endian=l  Flags=1  Version=1 Cookie=6  ReplyCookie=293  Timestamp="Wed 2023-11-22 23:31:43.814249 UTC"
  Sender=org.freedesktop.DBus  Destination=:1.14
  ErrorName=org.freedesktop.DBus.Error.AccessDenied  ErrorMessage="Rejected send message, 2 matched rules; type="signal", sender=":1.14" (uid=102 pid=688 comm="/usr/lib/polkit-1/polkitd --no-debug") interface="org.freedesktop.PolicyKit1.Authority" member="Changed" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (uid=0 pid=521 comm="/usr/bin/NetworkManager --no-daemon")"
  MESSAGE "s" {
          STRING "Rejected send message, 2 matched rules; type="signal", sender=":1.14" (uid=102 pid=688 comm="/usr/lib/polkit-1/polkitd --no-debug") interface="org.freedesktop.PolicyKit1.Authority" member="Changed" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (uid=0 pid=521 comm="/usr/bin/NetworkManager --no-daemon")";
  };

btw: Linux arch 6.6.2-arch1-1


Решение для мальчиков:

создать файл /etc/polkit-1/rules.d/85-suspend.rules с правами 644 и следующим содержимым:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.suspend" &&
        subject.isInGroup("users")) {
        return polkit.Result.YES;
    }
});

Убедиться что пользователь в группе users и перезагрузиться.

Решение для мужчин:

Открыть «Systems settings» > «System administration» > «Action permissions» > «org.freedesktop» > «The UPower project» > «Suspend the system» (org.freedesktop.upower.suspend) > «Local Authorization», поставить все три параметра в yes и перезагрузиться.

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

У меня такой есть, тоже самое по идее.

$ sudo cat /etc/polkit-1/rules.d/01-suspend.rules

// vi: ft=javascript
Array.prototype.includes = function (variable) {
  for (var i = 0; i < this.length; i++) { if (this[i] === variable) return true; }
  return false;
}

polkit.addRule(function (action, subject) {
  if (
    [
      "org.freedesktop.login1.suspend",
      "org.freedesktop.login1.suspend-ignore-inhibit",
      "org.freedesktop.login1.suspend-multiple-sessions"
    ].includes(action.id) &&
    (subject.user == "w" || subject.isInGroup("wheel"))
  ) {
    return polkit.Result.YES;
  }
});

юзер у меня в колесе $ groups

seat libvirt docker video kvm wheel w outlinevpn
lamer_
() автор топика
Последнее исправление: lamer_ (всего исправлений: 1)
Ответ на: комментарий от Obezyan

Не помогло.

Забыл упомянуть что с правами суперпользователя тоже ошибка, как понимаю так быть не должно.

$ sudo systemctl suspend

Call to Suspend failed: Access denied
lamer_
() автор топика
Последнее исправление: lamer_ (всего исправлений: 1)
Ответ на: комментарий от lamer_

Можете открыть файл /usr/share/polkit-1/actions/org.freedesktop.login1.policy, и настроить там 3 параметра:

...
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
...

В тех секциях, в id которых есть suspend. Хотя решение «для мужчин» более расово верное.

Obezyan
()
Ответ на: комментарий от lamer_

Редактирование /usr/share/polkit-1/actions/org.freedesktop.login1.policy и ребут не помогли.

У вас где-то правила перетирают друг-друга. Ищите, закомментируйте например, cat /etc/polkit-1/rules.d/01-suspend.rules и пробуйте.

Решение «для мужчин» как я понял предполагает не dwm в качестве рабочего окружения.

Да, для мужчин - KDE, остальное - для мальчиков :) (тонкий лед п.4.3 правил форума)

Obezyan
()