История изменений
Исправление intelfx, (текущая версия) :
-
Почему так? Где и как это настроить?
В systemctl выполняется только предварительная проверка на наличие ингибиторов и сессий других пользователей. Окончательные проверки выполняются уже внутри logind, которому направляется запрос на выключение/ребут/etc.
Так вот, если есть сессии помимо активной, то logind запрашивает у polkit разрешение на действие
org.freedesktop.login1.{hibernate,suspend,reboot,power-off}-multiple-sessions
, а неorg.freedesktop.login1.{hibernate,suspend,reboot,power-off}
.По умолчанию первый набор действий (*-multiple-sessions), как и второй, тоже разрешён любому активному пользователю. Дефолт достаточно странный, но это настраивается.
/etc/polkit-1/rules.d/10-multiple-sessions-require-admin.rules:polkit.addRule(function(action, subject) { if (action.id.match(/^org\.freedesktop\.login1\..*-multiple-sessions$/)) { return polkit.Result.AUTH_ADMIN_KEEP; } });
-
Почитав исходники lightdm, я понял, что он делает это всё через logind. Правильно ли я понимаю, что это, по сути, тот же systemctl reboot/poweroff/suspend?
Да, совершенно верно. Если
systemctl {reboot,poweroff,suspend,hibernate,hybrid-sleep}
запущен не от рута, то запрос перенаправляется в logind. Если от рута — то сразу запускается нужный юнит. -
Как пользователи чистых WM вообще реализуют удобный вход/выход/спячку?
Через
systemctl
и polkit authentication agent от какого-нибудь DE (/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1
, например).
Нет.Чувствую, что горожу костыли, вписывая systemctl в меню awesome
Исправление intelfx, :
-
Почему так? Где и как это настроить?
В systemctl выполняется только предварительная проверка на наличие ингибиторов и сессий других пользователей. Окончательные проверки выполняются уже внутри logind, которому направляется запрос на выключение/ребут/etc.
Так вот, если есть сессии помимо активной, то logind запрашивает у PolicyKit разрешение на действие
org.freedesktop.login1.{hibernate,suspend,reboot,power-off}-multiple-sessions
, а неorg.freedesktop.login1.{hibernate,suspend,reboot,power-off}
.По умолчанию первый набор действий (*-multiple-sessions), как и второй, тоже разрешён любому активному пользователю. Дефолт достаточно странный, но это настраивается.
/etc/polkit-1/rules.d/10-multiple-sessions-require-admin.rules:polkit.addRule(function(action, subject) { if (action.id.match(/^org\.freedesktop\.login1\..*-multiple-sessions$/)) { return polkit.Result.AUTH_ADMIN_KEEP; } });
-
Почитав исходники lightdm, я понял, что он делает это всё через logind. Правильно ли я понимаю, что это, по сути, тот же systemctl reboot/poweroff/suspend?
Да, совершенно верно. Если
systemctl {reboot,poweroff,suspend,hibernate,hybrid-sleep}
запущен не от рута, то запрос перенаправляется в logind. Если от рута — то сразу запускается нужный юнит. -
Как пользователи чистых WM вообще реализуют удобный вход/выход/спячку?
Через
systemctl
и polkit authentication agent от какого-нибудь DE (/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1
, например).
Нет.Чувствую, что горожу костыли, вписывая systemctl в меню awesome
Исправление intelfx, :
-
Почему так? Где и как это настроить?
В systemctl выполняется только предварительная проверка на наличие ингибиторов и сессий других пользователей. Окончательные проверки выполняются уже внутри logind (а systemctl направляет запросы на отключение питания именно туда).
Так вот, если есть сессии помимо активной, то logind запрашивает у PolicyKit разрешение на действие
org.freedesktop.login1.{hibernate,suspend,reboot,power-off}-multiple-sessions
, а неorg.freedesktop.login1.{hibernate,suspend,reboot,power-off}
.По умолчанию первый набор действий (*-multiple-sessions) тоже разрешён любому активному пользователю. Дефолт достаточно странный, но это настраивается.
/etc/polkit-1/rules.d/10-multiple-sessions-require-admin.rules:polkit.addRule(function(action, subject) { if (action.id.match(/^org\.freedesktop\.login1\..*-multiple-sessions$/)) { return polkit.Result.AUTH_ADMIN_KEEP; } });
-
Почитав исходники lightdm, я понял, что он делает это всё через logind. Правильно ли я понимаю, что это, по сути, тот же systemctl reboot/poweroff/suspend?
Да, совершенно верно. Если
systemctl {reboot,poweroff,suspend,hibernate,hybrid-sleep}
запущен не от рута, то запрос перенаправляется в logind. Если от рута — то сразу запускается нужный юнит. -
Как пользователи чистых WM вообще реализуют удобный вход/выход/спячку?
Через
systemctl
и polkit authentication agent от какого-нибудь DE (/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1
, например).
Нет.Чувствую, что горожу костыли, вписывая systemctl в меню awesome
Исправление intelfx, :
-
Почему так? Где и как это настроить?
В systemctl выполняется только предварительная проверка на наличие ингибиторов и сессий других пользователей. Окончательные проверки выполняются уже внутри logind (а systemctl направляет запросы на отключение питания именно туда).
Так вот, если есть сессии помимо активной, то logind запрашивает у PolicyKit разрешение на действие
org.freedesktop.login1.{hibernate,suspend,reboot,power-off}-multiple-sessions
, а неorg.freedesktop.login1.{hibernate,suspend,reboot,power-off
.По умолчанию первый набор действий (*-multiple-sessions) тоже разрешён любому активному пользователю. Дефолт достаточно странный, но это настраивается.
/etc/polkit-1/rules.d/10-multiple-sessions-require-admin.rules:polkit.addRule(function(action, subject) { if (action.id.match(/^org\.freedesktop\.login1\..*-multiple-sessions$/)) { return polkit.Result.AUTH_ADMIN_KEEP; } });
-
Почитав исходники lightdm, я понял, что он делает это всё через logind. Правильно ли я понимаю, что это, по сути, тот же systemctl reboot/poweroff/suspend?
Да, совершенно верно. Если
systemctl {reboot,poweroff,suspend,hibernate,hybrid-sleep}
запущен не от рута, то запрос перенаправляется в logind. Если от рута — то сразу запускается нужный юнит. -
Как пользователи чистых WM вообще реализуют удобный вход/выход/спячку?
Через
systemctl
и polkit authentication agent от какого-нибудь DE (/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1
, например).
Нет.Чувствую, что горожу костыли, вписывая systemctl в меню awesome
Исходная версия intelfx, :
-
Почему так? Где и как это настроить?
В systemctl выполняется только предварительная проверка на наличие ингибиторов и сессий других пользователей. Окончательные проверки выполняются уже внутри logind (а systemctl направляет запросы на отключение питания именно туда).
Так вот, если есть сессии помимо активной, то logind запрашивает у PolicyKit разрешение на действие
org.freedesktop.login1.{hibernate,suspend,reboot,power-off}-multiple-sessions
, а неorg.freedesktop.login1.{hibernate,suspend,reboot,power-off
.По умолчанию первый набор действий (*-multiple-sessions) тоже разрешён любому активному пользователю. Дефолт достаточно странный, но это настраивается.
/etc/polkit-1/rules.d/10-multiple-sessions-require-admin.rules:
polkit.addRule(function(action, subject) { if (action.id.match(/^org\.freedesktop\.login1\..*-multiple-sessions$/)) { return polkit.Result.AUTH_ADMIN_KEEP; } });
-
Почитав исходники lightdm, я понял, что он делает это всё через logind. Правильно ли я понимаю, что это, по сути, тот же systemctl reboot/poweroff/suspend?
Да, совершенно верно. Если
systemctl {reboot,poweroff,suspend,hibernate,hybrid-sleep}
запущен не от рута, то запрос перенаправляется в logind. Если от рута — то сразу запускается нужный юнит. -
Как пользователи чистых WM вообще реализуют удобный вход/выход/спячку?
Через
systemctl
и polkit authentication agent от какого-нибудь DE (/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1
, например).
Нет.Чувствую, что горожу костыли, вписывая systemctl в меню awesome