微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – BASH:检查用户是否为root

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

我知道我可以使用

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

要么

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

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

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

解决方法:

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

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

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

示例代码

IS_FAKEROOT=false

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

echo "$IS_FAKEROOT"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐