用于将"noexec"和"nosuid"添加到 /var 分区的 shell 脚本



我正试图创建一个小脚本,通过修改/etc/fstab文件将noexec和nosuid添加到/var分区。

目前,除了/var分区外,/etc/fstab还包含/var/log分区。

当我运行脚本时,对/var/var/log都进行了更改。我只想在/var分区中添加"noexec"one_answers"nosuid"。

这是我写的

#cat test.sh
#!/bin/bash
egrep -q  '/var/.+noexec' /etc/fstab || sed -ri '//var/ s/defaults/defaults,noexec/' /etc/fstab
egrep -q  '/var/.+noexec' /etc/fstab || sed -ri '//var/ s/defaults,nodev/defaults,nodev,noexec/' /etc/fstab
egrep -q  '/var/.+nosuid' /etc/fstab || sed -ri '//var/ s/defaults/defaults,nosuid/' /etc/fstab
  1. 当前/etc/fstab条目w.r.t/var和/var/log如下所示
cat /etc/fstab
/dev/mapper/system-var  /var                    ext4    defaults,nodev        1 2
/dev/mapper/system-varlog /var/log                ext4    defaults,nodev        1 2
  1. 运行脚本后,输出如下
/dev/mapper/system-var  /var                    ext4    defaults,nosuid,noexec,nodev        1 2
/dev/mapper/system-varlog /var/log                ext4    defaults,nosuid,noexec,nodev        1 2
  1. 预期输出如下所示
cat /etc/fstab
/dev/mapper/system-var  /var                    ext4    defaults,nosuid,noexec,nodev        1 2
/dev/mapper/system-varlog /var/log                ext4    defaults,nodev        1 2

最简单的方法是在/var之后向grep模式添加traling空白字符,如下所示:

egrep '/vars' /etc/fstab

在许多REGEX实现(sed、perl…(中,s代表空白,它由空格、制表符和其他一些字符组成。

相关内容

  • 没有找到相关文章

最新更新