Что такое команда или приложение, которое позволяет пользователю выключить компьютер из GNOME. И как у него есть привилегии, а для остановки требуется суперпользователь?
2 ответа
2
Он использует сообщение DBus.
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Нашел это здесь.
Перезагружать:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot
Приостановка:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1
Hibernate:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
2
GNOME делает это, отправляя сообщения через DBus службе, которая уже работает от имени пользователя root.
Для выключения или перезагрузки с помощью ConsoleKit:
gdbus call -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/Manager \ -m org.freedesktop.ConsoleKit.Manager.Stop
gdbus call -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/Manager \ -m org.freedesktop.ConsoleKit.Manager.Restart
Для приостановки или спящего режима с помощью UPower:
gdbus call -y -d org.freedesktop.UPower \ -o /org/freedesktop/UPower \ -m org.freedesktop.UPower.Suspend
gdbus call -y -d org.freedesktop.UPower \ -o /org/freedesktop/UPower \ -m org.freedesktop.UPower.Hibernate