如何使 grub.cfg 在每次更新 grub 后自动可写

如何使 grub.cfg 在每次更新 grub 后自动可写

如何确保/boot/grub/grub.cfg每次运行后我的仍然可写update-grub

我已经尝试在脚本中设置/boot/grub/grub.cfg.new我希望他们拥有的权限,41_custom因为我看到在包含所有内容之后,grub-mkconfig只是将此文件移动.new到最后一个文件grub.d,但这并没有导致最终保留权限。现在我仍在寻找一种更新安全的方法,以便grub.cfg在每次运行update-grub.

(背景:我想在休眠之前通过脚本更改文件,并在恢复后切换回原始文件。)

答案1

为其制作一个包装脚本。

你可以做类似的事情:

#!/bin/bash
update-grub
chmod g+w /boot/grub/grub.cfg

然后将其命名为类似的名称update-grub-perm(或其他名称)并运行它。


要让此脚本在 后自动运行apt-get,您可以编辑/etc/apt/apt.conf或创建一个新文件/etc/apt/apt.conf.d/并使用DPkg::Post-Invoke.

例如,/etc/apt/apt.conf.d/80updgrubperm

DPkg::Post-Invoke {"/root/bin/update-grub-perm";};

可能/root/bin/update-grub-perm是这样的:

#!/bin/bash

FILE='/boot/grub/grub.cfg'
DATE=$(date '+%s')
FILETIME=$(stat -c %Y $FILE)
DAYSEC=86400

if [ $FILETIME -ge $(expr $DATE - $DAYSEC) ]; then
    chmod g+w $FILE
fi

exit 0

上面的脚本检查/boot/grub/grub.cfg过去 24 小时内是否已被修改。如果是这样的话,那chmod就是。

笔记:您可能可以想出一个更好的方法来检查是否/boot/grub/grub.cfg已更新,但这是一个简单的示例。通过我的快速研究,我没有看到任何aptdpkg选项如果此特定包已更新,则运行此脚本


参考https://www.cyberciti.biz/faq/debian-ubuntu-linux-hook-a-script-command-to-apt-get-upgrade-command/

相关内容