我使用以下脚本(基于代码这里)重新启动到 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 设置为脚本的所有者并设置脚本的 uid:
chown root.root script ; chmod u+s script