Система отказывается завершать работу или перезагружаться, когда открыт другой сеанс (GUI). Он просто выводит меня из системы, когда я выбираю , выключаю или , перезапускаю из системного меню.
Как это сделать?
Я не прошу обоснования (совершенно ясно, что закрытие может иметь негативные последствия для работы другого пользователя), но для механизма, стоящего за этим поведением. ]
При нажатии кнопки выключения (в Unity):
SessionView
спрашивает SessionManager
, авторизован ли пользователь для выключения.
SessionManager
использует systemd-logind
для проверки /org/freedesktop/ConsoleKit/Manager
для авторизации.
ConsoleKit
устанавливает это свойство по существу, проверяя, вошли ли в систему несколько пользователей. Если вошли несколько пользователей, это запрещает авторизацию. Кроме того, в зависимости от того, как была настроена система, ConsoleKit
может также использовать polkit
или управление доступом на основе ролей для определения авторизации.
Если SessionView
не получает разрешение на отключение пользователя, он меняет режим действия с shutdown
на logout
.
Отметим, что такое поведение (и как его реализовать) является решением, принятым Ubuntu. Недавно я установил Arch с Gnome 3.8 в раздел, поэтому вошел в систему от двух пользователей, чтобы посмотреть, что произошло, когда один из них отключился. Было сообщение с предупреждением о том, что другие пользователи вошли в систему и могут потерять работу, но нажав кнопку ОК, можно завершить работу.
[Редактировать на основании комментария OP]
Самый простой способ изменить это поведение - это обойти его. В терминале или скрипте введите:
sudo shutdown -h 0
для немедленного выключения или sudo shutdown -r 0
для перезапуска.
Это предполагает, что пользователь, который хочет завершить работу, имеет административные привилегии, но пользователю также может быть предоставлена привилегия администратора только для shutdown
.
С помощью скрипта вы можете добавить некоторые тонкости, такие как предупреждение о других пользователях, вошедших в систему, и позволить пользователю изменить свое мнение о закрытии.
У кого-то еще может быть другая идея (или, возможно, он предоставит конкретный сценарий в ответ на новый вопрос), но я не могу придумать ничего простого (скажем, без перекомпиляции пользовательской версии Unity) или безопасного за пределами это решение.