Вопрос, заданный К.Ченом: зачем мне привилегии sudo, когда я делаю это из CLI, но мне не нужны такие привилегии, когда я делаю это из GUI.
Первая часть ответа заключается в том, что люди, которые разрабатывают среды рабочего стола, такие как Gnome, KDE, Xfce, Mate, Cinnamon, ... пытаются упростить работу своих пользователей, и они настраивают выключение и перезагрузку, не требуя учетных данных sudo. Это, между прочим, подразумевает, что должна быть последовательность завершения работы, которая не включает в себя завершение работы программы, которая требует привилегий sudo (никак не обойти это).
Я не знаю подробно, как это делает каждый DE, но я знаю, что есть мягкий способ выключить или перезапустить / выключить / перевести вашу систему в режим ожидания, который не требует привилегий root. Вы можете найти оригинальное сообщение в сообщении Arch Linux Forum . По сути, это сводится к выдаче этих команд:
стой
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
перезагрузка
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
DBus приостановить
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
спящий режим
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Я предполагаю, что кнопки GUI примерно используют эти команды. Чтобы быть уверенным, нужно заглянуть в код, но я считаю, что это безопасная ставка.