4

Что такое команда или приложение, которое позволяет пользователю выключить компьютер из GNOME. И как у него есть привилегии, а для остановки требуется суперпользователь?

2 ответа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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .