LINUX.ORG.RU

История изменений

Исправление demsi, (текущая версия) :

Осилил man 8 polkit. Это было тяжко, так как в английском я полный нуль.
Также помогла статья на opennet'е. Странно статья датируется 2010 годом. Но в ней PolicyKit совсем другой, начиная от расположения и синтаксиса XML файлов с разрешениями, заканчивая командами пакета (синтаксис и название команд тоже другие).
Зато статья обьяснила принцип работы, что куда важнее.

Все решилось банальным редактированием XML файла с правилами для ConsoleKit. А именно - /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Как помните в своем сообщении я говорил, что в окошке написано:Действие: org.freedesktop.consolekit.system.restart-multiple-users. Кар раз оно и есть в выше указанном файле:

<action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
Опция allow_active согласно man 8 polkit отвечает за неявные разрешения, которые применяются к клиентам в активных сессиях на локальной консоли.
Активная сессия это та в которой вы работаете. Неявные разрешения применяются ко всем пользователям. Существуют еще явные разрешения, для конкретных пользователей.
Возможные значения для allow_active и вообще для всех опций в секции defaults
no - не разрешать
yes - разрешать
auth_self - разрешить владельцу сессии если он введет свой пароль.
auth_admin - нужно ввести пароль root при каждом запросе
auth_self_keep - то же самое что и auth_self, но некоторое время после ввода пароля, снова пароль запрашивать не будет (Для выключения и перезагрузки компьютера, смысла не имеет).
auth_admin_keep - тоже самое что и auth_admin, но также некоторое время авторизация сохраняется (Для выключения и перезагрузки компьютера, смысла не имеет).
Как вы наверное уже поняли теперь достаточно в опции allow_active поменять auth_admin_keep на yes
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
...
<allow_active>yes</allow_active>
...
Тоже самое сделать для <action id=«org.freedesktop.consolekit.system.stop-multiple-users»> чтобы можно было выключать компьютер.

Вот и все. Заработало.
Правда некоторые вещи для меня до сих пор остались неясными. Почему например за перезагрузку и выключение компьютера отвечает ConsoleKit ?
Я где-то читал что он нужен для одновременной работы на одной системе нескольких независимых графических сеансов для различных пользователей. Но возможности «Сменить пользователя» у меня почему то нет. Хотя наверное это тоже чиниться.

Исходная версия demsi, :

Проблема решена

Осилил man 8 polkit. Это было тяжко, так как в английском я полный нуль.
Также помогла статья на opennet'е. Странно статья датируется 2010 годом. Но в ней PolicyKit совсем другой, начиная от расположения и синтаксиса XML файлов с разрешениями, заканчивая командами пакета (синтаксис и название команд тоже другие).
Зато статья обьяснила принцип работы, что куда важнее.

Все решилось банальным редактированием XML файла с правилами для ConsoleKit. А именно - /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Как помните в своем сообщении я говорил, что в окошке написано:Действие: org.freedesktop.consolekit.system.restart-multiple-users. Кар раз оно и есть в выше указанном файле:

<action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
Опция allow_active согласно man 8 polkit отвечает за неявные разрешения, которые применяются к клиентам в активных сессиях на локальной консоли.
Активная сессия это та в которой вы работаете. Неявные разрешения применяются ко всем пользователям. Существуют еще явные разрешения, для конкретных пользователей.
Возможные значения для allow_active и вообще для всех опций в секции defaults
no - не разрешать
yes - разрешать
auth_self - разрешить владельцу сессии если он введет свой пароль.
auth_admin - нужно ввести пароль root при каждом запросе
auth_self_keep - то же самое что и auth_self, но некоторое время после ввода пароля, снова пароль запрашивать не будет (Для выключения и перезагрузки компьютера, смысла не имеет).
auth_admin_keep - тоже самое что и auth_admin, но также некоторое время авторизация сохраняется (Для выключения и перезагрузки компьютера, смысла не имеет).
Как вы наверное уже поняли теперь достаточно в опции allow_active поменять auth_admin_keep на yes
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
...
<allow_active>yes</allow_active>
...
Тоже самое сделать для <action id=«org.freedesktop.consolekit.system.stop-multiple-users»> чтобы можно было выключать компьютер.

Вот и все. Заработало.
Правда некоторые вещи для меня до сих пор остались неясными. Почему например за перезагрузку и выключение компьютера отвечает ConsoleKit ? Я где-то читал что он нужен для одновременной работы на одной системе нескольких независимых графических сеансов для различных пользователей. Но возможности «Сменить пользователя» у меня почему то нет. Хотя наверное это тоже чиниться.