我在另一个人给我的脚本中找到了一些代码,作为我正在做的项目的 Ubuntu 16.04 锁定/强化的资源。
我不知道它做了什么,如果我无法确定它会做出什么改变,我不想运行它,有没有人知道它做了什么或改变了什么?只有代码没有简短的解释注释,而且它恰好是我唯一不知道的东西。此外,第二个功能可以通过功能识别,但我不明白目的或细节。
function bacon.config.ubuntu.chage() {
CHAGE_SCRIPT='/etc/cron.daily/userchage'
if [ ! -e $CHAGE_SCRIPT ]; then
printf "#%c/bin/bash \nfor i in \$(awk -F: '{if(($3 >= 1000)&&($3 <65534)) print \$1}' /etc/passwd); do \nchage -m 0 -M 60 -W 10 \$i \ndone \n" ! > $CHAGE_SCRIPT
chmod +x $CHAGE_SCRIPT
fi
}
function bacon.config.ubuntu.log.rotate() {
echo "bacon.config.ubuntu.log.rotate: [INFO] Installing logrotate..."
sudo apt-get install logrotate 1>/dev/null
echo "bacon.config.ubuntu.log.rotate: [INFO] Configuring logrotate..."
sed 's/rotate 4/rotate 60/' /etc/logrotate.conf > /etc/logrotate.conf.new
mv /etc/logrotate.conf.new /etc/logrotate.conf
sed 's/rotate 1/rotate …
Run Code Online (Sandbox Code Playgroud) 我刚开始使用 sed,但很快就爱上了它,因为它在自动化方面具有普遍的灵活性。我希望每次部署新系统时都运行具有各种安全控制的脚本,其中一部分需要我锁定 GRUB。我希望从 GRUB 菜单中解锁一般的 Ubuntu 选项,这样任何人都可以在没有密码的情况下使用它,同时保护其他所有内容的密码。
话虽如此,我希望在 /boot/grub/grub.cfg 文件中搜索特定行并将 --unrestricted 添加到该选项。(我们只使用 16.04.03 所以理论上所有系统在安装时都会有相同的文件)
文件中的行是:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我知道 sed -i 用于就地编辑, s/ 应该搜索。但除此之外,我对这里的语法迷失了,让它真正做我们需要的。据我所知,需要 --unrestricted 的定位,因为我相信如果我们不必进行如此长时间的搜索会更容易,但我再次对 sed 感到陌生并且不确定。有人可以帮我插入这个 sed 吗?最好也向我解释为什么不同的语法会出现在它的位置,所以我知道未来。