如何确保/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
已更新,但这是一个简单的示例。通过我的快速研究,我没有看到任何apt
或dpkg
选项如果此特定包已更新,则运行此脚本。
参考:https://www.cyberciti.biz/faq/debian-ubuntu-linux-hook-a-script-command-to-apt-get-upgrade-command/