那里有类似的问题我如何确定 shell 脚本是否以 root 身份运行?
我有同样的疑问,但结果不同
是否可以在 BASH 脚本中,在运行所有脚本之前,检查该脚本是否以超级用户身份运行,如果不是,则打印一条消息说您必须是超级用户才能使用此脚本,然后
使用 askpass 或类似方法从用户处获取密码,然后以超级用户身份执行相同的脚本?
答案1
如果程序需要 root 权限但没有,我只需调用 sudo:
#!/bin/bash
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
sudo "$0" "$@"
exit
fi
"$0"
包含脚本的名称,"$@"
可选参数。如果您的程序不接受参数,则可以省略。
注意:该 shellscript 需要在 shell 中运行,如果该脚本需要以 GUI 形式运行,请使用类似gksu
或kdesudo
来代替sudo
。
答案2
尽管 Lekensteyn 的观点是正确的,但这不起作用。
您必须将变量设置为等于 id -u 的输出
ID=$(id -u) if [ $ID != 0 ] then sudo "$0" "$@" exit fi
如果您使用echo
输出this script requires root permissions
,则每次除 root 之外的用户(因为其 id=0)运行脚本时都会显示,无论是否需要 root 权限,因此只需保持简单即可。