Спящий режим от cron

Я пытаюсь спящий с cron с помощью команды systemctl hibernate. Тем не менее, я получаю следующую ошибку:

Failed to set wall message, ignoring: Interactive authentication required.
Failed to hibernate system via logind: Interactive authentication required.
Failed to start hibernate.target: Interactive authentication required.
See system logs and 'systemctl status hibernate.target' for details.

Если я выполняю приведенную выше команду вручную с терминала, она работает так, как ожидалось.

Как спящий режим cron?

Я использую Ubuntu 16.04.

1
задан 15 June 2016 в 09:06

1 ответ

Другой ответ велик! Но для этого требуется root cron.

Если вы хотите спящий режим из non-sudo cron, есть 2 варианта:

1. Использование polkit

Создайте файл, содержащий следующее:

[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes 

с именем com.0.enable-hibernation-from-cron.pkla в каталоге /etc/polkit-1/localauthority/50-local.d/.

Пояснение дано Другой ответ .

2. Использование polkit

Цитата из этого:

Если пользователям разрешено использовать команды останова, но не иметь других привилегий sudo, то, как root, добавьте следующее в конец /etc/sudoers с помощью команды visudo.
user hostname =NOPASSWD: /usr/bin/systemctl poweroff,/usr/bin/systemctl halt,/usr/bin/systemctl reboot
Подставьте user для вашего имени пользователя и hostname для имени хоста машины. Теперь ваш пользователь может завершить работу с sudo systemctl poweroff и перезагрузиться с помощью sudo systemctl reboot. Пользователи, желающие отключить систему, также могут использовать sudo systemctl halt. Используйте тег NOPASSWD: только если вы не хотите получать запрос на ввод пароля.

В моем случае точная строка:

anmol ALL=NOPASSWD: /bin/systemctl hibernate  

(обратите внимание, что расположение systemctl может отличаться в вашей системе.)

После этого вы можете записать sudo systemctl hibernate fron cron в спящий режим.

Примечание. Прямая модификация /etc/sudoers здесь здесь ; вместо этого создайте пользовательский файл sudoers под /etc/sudoers.d/, используя команду - sudo visudo -f /etc/sudoers.d/custom.

2
ответ дан 23 May 2018 в 10:06
  • 1
    Отлично, здесь - еще одна ссылка для опции polkit из страниц справки Ubuntu. Можно использовать Identity=unix-user:username, чтобы разрешить одному пользователю только то же, что и решение sudoer. – user.dz 13 June 2016 в 08:16

Другие вопросы по тегам:

Похожие вопросы: