перезагрузить компьютер без рута из скрипта

перезагрузить компьютер без рута из скрипта

Когда я печатаю

reboot

я получил

reboot: Need to be root

P.S. У меня нет прав sudo и пароля

решение1

В Debian вам нужно быть членом группы powerdev, чтобы выключить компьютер как обычный пользователь. Я не уверен, как это работает в Ubuntu.

Что вы можете сделать в любом случае, так это использовать бит setuid, чтобы разрешить любому перезагружать компьютер. Подумайте об этом, прежде чем вы это сделаете. Возможно, вы можете установить setuid только для группы rebootи изменить группу перезагрузки на свою собственную группу пользователей (или создать новую группу вручную).

решение2

Мы не знаем, какую версию Ubuntu вы используете, но чтобы выключить компьютер, попробуйте

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

и перезапустить

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Для получения списка возможных действий выполните команду

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.DBus.Introspectable.Introspect

решение3

Попробуйте эту команду

systemctl reboot -i

Для выключения запустите это

systemctl poweroff -i

вводить в спящий режим, приостанавливать работу, гибридный режим

systemctl hibernate -i
systemctl suspend -i
systemctl hybrid-sleep -i

Связанный контент