在执行脚本之前检查是否只有 root 可以编辑脚本

在执行脚本之前检查是否只有 root 可以编辑脚本

我有一个需要以 root 身份运行的脚本。它还有一个使用源读取的配置文件:

source conf.sh

我想检查普通用户是否无法编辑conf.sh并因此获得 root 访问权限。

我可以检查谁是文件所有者以及组和其他人拥有哪些权限:

if [[ "$(stat -c "%a" conf.sh | egrep ".2.|.3.|.6.|.7.|..2|..3|..6|..7")" != "" ]] || [[ "$(stat -c "%u" conf.sh)" != "0" ]]; then
    #don't execute the file"
fi

我在这里错过了什么吗?有没有最佳实践?

答案1

我会用算术评估来做到这一点:

if [[ $(stat -c '%u' conf.sh) -ne 0 -o \
      $(( $(stat -c '%a' conf.sh) & 0044)) -ne 0 ]]; then
    # file's owner is not root or file is writable by group or world
fi

相关内容