ルートなしで 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

このコマンドは、rebootFedora 23 の通常のユーザーとして問題なく動作します。grub2-reboot安全に動作させるにはどうすればよいですか?

私は、 の stick bit のようなものを考えていますgrub2-editenvが、それは良くないようです。私のスクリプトの stick bit は機能しません (よいこと)。ファイルの権限を変更すると/boot/efi/EFI/fedora/grubenv機能しますが、意図したよりも多くの可能性が開かれる可能性があります。

答え1

2つの可能性があると思います:

  • sudo を使用しますが、このコマンドがパスワードを尋ねないように設定してください (NOPASSWDオプションを使用)

  • スクリプトの所有者として root を設定し、スクリプトを setuid します。chown root.root script ; chmod u+s script

関連情報