我正试图创建一个小脚本,通过修改/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
- 当前/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
- 运行脚本后,输出如下
/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
- 预期输出如下所示
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
代表空白,它由空格、制表符和其他一些字符组成。