如何以超级用户身份执行脚本,首先检查用户,如果不是超级用户,则从 askpass 获取密码

如何以超级用户身份执行脚本,首先检查用户,如果不是超级用户,则从 askpass 获取密码

那里有类似的问题我如何确定 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 形式运行,请使用类似gksukdesudo来代替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 权限,因此只需保持简单即可。

相关内容