- 此问题在此处已有答案**:
(21个答案)
3天前关闭。
如何在BASH脚本中检查用户是否为root用户?
我知道我可以用
[[ $UID -eq 0 ]] || echo "Not root"
或
[[ $EUID -eq 0 ]] || echo "Not root"
但是如果脚本是通过fakeroot调用的,UID和EUID都是0(当然,因为fakeroot伪造了root权限)。
但是有没有什么方法可以检查用户是否是root?而不需要尝试做一些只有root才能做的事情(例如,在/中创建一个文件)?
2条答案
按热度按时间goqiplq21#
Fakeroot设置包含
libfakeroot
路径的自定义LD_LIBRARY_PATH
。例如:您可以使用它来检测应用程序是否在fakeroot内部运行,通过路径迭代并查找
libfakeroot
。样本代码:
waxmsbnn2#
在这里,下面的脚本会发现用户是根或不是.
在上面的例子中,我将尝试在根目录中创建一个文件,如果我不是root用户,并且我没有权限,它将给予错误,我将该错误重定向到/dev/null。
如果用户有权限,则创建文件,然后使用stat获取该文件的用户ID,并将其存储到变量uid中。
在if条件中使用该变量我将检查。
如果要创建临时文件,rm命令将删除该文件。
但要确保该文件不是已经存在于根目录中。