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