![在执行脚本之前检查是否只有 root 可以编辑脚本](https://linux22.com/image/53545/%E5%9C%A8%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%89%8D%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8F%AA%E6%9C%89%20root%20%E5%8F%AF%E4%BB%A5%E7%BC%96%E8%BE%91%E8%84%9A%E6%9C%AC.png)
我有一个需要以 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