我有一个需要以 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