Я использую следующий скрипт (на основе кода здесь ) для перезагрузки в Windows, поэтому я могу перестать пинать себя каждый раз, когда начинаю мечтать и пропущу меню загрузки.
#!/bin/bash
ENTRY=$( grep Windows /boot/grub2/grub.cfg | head -n 1 | cut -d"'" -f2 )
echo Rebooting to \"$ENTRY\"
sudo grub2-reboot "$ENTRY" && reboot
Однако мне нужно sudo
и нужно ввести пароль, иначе я получаю следующее:
/usr/bin/grub2-editenv: error: cannot open ‘/boot/grub2/grubenv’: Permission denied.
Это символическая ссылка, / boot / grub2 / grubenv -> / boot / efi / EFI / fedora / grubenv
и принадлежит root
.
Команда reboot
отлично работает как обычный пользователь в Fedora 23. Как я могу сделать grub2-reboot
тоже работает, но безопасным способом?
Я думал что-то вроде бита на grub2-editenv
, но это не звучит хорошо. Липкий бит в моем скрипте не сработает ( хорошая вещь ). Изменение прав доступа к файлу / boot / efi / EFI / fedora / grubenv
будет работать, но может открыться больше возможностей, чем предполагалось.
Я вижу две возможности:
Использовать sudo, но настройте его так, чтобы эта команда не запрашивала пароль (с помощью параметра NOPASSWD
)
Установите root как владельца сценария и установите uid сценария: chown root.root script; chmod u + s скрипт