如何在 BASH 脚本中检查用户是否是 root 用户?

我知道我可以使用

[[ $UID -eq 0 ]] || echo "Not root"

或者
[[ $EUID -eq 0 ]] || echo "Not root"

但是如果脚本是通过 fakeroot 调用的,UID 和 EUID 都是 0(当然,因为 fakeroot 伪造了 root 权限)。

但是有没有办法检查用户是否是root?不尝试做只有 root 可以做的事情(即在/中创建文件)?

最佳答案

Fakeroot 设置包含 LD_LIBRARY_PATH 路径的自定义 libfakeroot 。例如:

/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot

您可以使用它来检测应用程序是否在按路径迭代并查找 libfakeroot 的 fakeroot 内运行。

示例代码:
IS_FAKEROOT=false

for path in ${LD_LIBRARY_PATH//:/ }; do
        if [[ "$path" == *libfakeroot ]]; then
                IS_FAKEROOT=true
                break
        fi
done

echo "$IS_FAKEROOT"

关于linux - BASH:检查用户是否为 root,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33446353/

10-11 20:15