Какой механизм предотвращает отключение при наличии другого открытого сеанса?

Система отказывается завершать работу или перезагружаться, когда открыт другой сеанс (GUI). Он просто выводит меня из системы, когда я выбираю , выключаю или , перезапускаю из системного меню.

Как это сделать?

Я не прошу обоснования (совершенно ясно, что закрытие может иметь негативные последствия для работы другого пользователя), но для механизма, стоящего за этим поведением. ]

5
задан 24 August 2013 в 01:05

1 ответ

При нажатии кнопки выключения (в Unity):

  1. SessionView спрашивает SessionManager, авторизован ли пользователь для выключения.

  2. SessionManager использует systemd-logind для проверки /org/freedesktop/ConsoleKit/Manager для авторизации.

  3. ConsoleKit устанавливает это свойство по существу, проверяя, вошли ли в систему несколько пользователей. Если вошли несколько пользователей, это запрещает авторизацию. Кроме того, в зависимости от того, как была настроена система, ConsoleKit может также использовать polkit или управление доступом на основе ролей для определения авторизации.

  4. Если SessionView не получает разрешение на отключение пользователя, он меняет режим действия с shutdown на logout.

Отметим, что такое поведение (и как его реализовать) является решением, принятым Ubuntu. Недавно я установил Arch с Gnome 3.8 в раздел, поэтому вошел в систему от двух пользователей, чтобы посмотреть, что произошло, когда один из них отключился. Было сообщение с предупреждением о том, что другие пользователи вошли в систему и могут потерять работу, но нажав кнопку ОК, можно завершить работу.

[Редактировать на основании комментария OP]

Самый простой способ изменить это поведение - это обойти его. В терминале или скрипте введите:

sudo shutdown -h 0 для немедленного выключения или sudo shutdown -r 0 для перезапуска.

Это предполагает, что пользователь, который хочет завершить работу, имеет административные привилегии, но пользователю также может быть предоставлена ​​привилегия администратора только для shutdown.

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

У кого-то еще может быть другая идея (или, возможно, он предоставит конкретный сценарий в ответ на новый вопрос), но я не могу придумать ничего простого (скажем, без перекомпиляции пользовательской версии Unity) или безопасного за пределами это решение.

0
ответ дан 24 August 2013 в 01:05

Другие вопросы по тегам:

Похожие вопросы: