有一个 shell 脚本(/bin/sh,不是 bash),需要 root 权限才能执行。
如果由普通用户运行,则应要求用户输入密码以获取 root 访问权限并重新运行自身。
现在它使用以下代码:
if [ $(id -u) -ne 0 ]; then su root -- $0 $@ ; ... fi
这很好用,但是有些操作系统(如 Ubuntu)根本没有 root 密码。另一方面,许多系统使用 sudo 进行 root 权限。
问题是:脚本如何检测是否使用 su
或 sudo
,而不需要要求用户输入太多密码(例如,输入 sudo
密码,如果失败则运行 su
)。