Fab*_*ken 4 linux bash privileges root
如何在BASH脚本中检查用户是否为root用户?
我知道我可以使用
[[ $UID -eq 0 ]] || echo "Not root"
Run Code Online (Sandbox Code Playgroud)
要么
[[ $EUID -eq 0 ]] || echo "Not root"
Run Code Online (Sandbox Code Playgroud)
但是如果脚本是通过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
Run Code Online (Sandbox Code Playgroud)
您可以使用它来检测应用程序是否在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"
Run Code Online (Sandbox Code Playgroud)