Я использую следующий скрипт (основанный на кодездесь) для перезагрузки в 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
сработает, но может открыть больше возможностей, чем предполагалось.
решение1
Я вижу две возможности:
Используйте sudo, но настройте его так, чтобы эта команда не спрашивала у вас пароль (используя
NOPASSWD
опцию)Установите root в качестве владельца скрипта и установите setuid для скрипта:
chown root.root script ; chmod u+s script