Команды reboot
, halt
и shutdown
обычно требуют root для обеспечения безопасности [ 1 ].
Написание на Google, how to run sudo in a script
он отвечает с
Добавьте ваш скрипт в файл /etc /sudoers с атрибутом NOPASSWD, чтобы он мог запускаться без запроса пароля. Вы можете привязать это к определенному пользователю (или группе пользователей) или разрешить запускать его с помощью sudo любым пользователем в вашей системе.
Достаточно справедливо, если вы можете ограничить вышеприведенное сценарием в одну строку, который запускает только команду reboot
. Однако это приведет к перезагрузке компьютера без пароля из этого сценария + пользовательской конфигурации.
В качестве альтернативы это подвергнет вас риску того, что у всех будет возможность перезагрузить вашу машину. Прочитайте, например, ответы [ 2, 4, 5 ]
... вам нужно добавить suid-Bit [ 3, 4, 5 ] к этим командам. Но имейте в виду, что каждый в вашей системе, имеющий доступ к оболочке, может отключить вашу машину.
Но я также убежден, что использовать suid - плохая идея.
В комментарии к [ 2 ] снова предлагается изменить с помощью visudo ...
%sudo ALL = NOPASSWD: /sbin/reboot
но на этом этапе лучше сделать однострочный сценарий для перезагрузки вашего пользователя и ограничить его только возможностью перезагрузки. (Таким образом, вы не можете перезагрузиться даже как ваш пользователь без пароля, если не с этим скриптом).