grub2-reboot без рута

grub2-reboot без рута

Я использую следующий скрипт (основанный на кодездесь) для перезагрузки в 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

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