我已经编写了一个 bash 脚本,可以在我的 ubuntu 机器上使用。现在我想阻止在我自己的用户下运行此脚本,并且只能以 root (sudo) 身份运行它。
有没有可能强制这样做。如果我在自己的用户名下运行脚本,是否可以以某种方式让脚本请求 root 权限?
答案1
我有一个用于bash
此目的的标准函数:
# Check if we're root and re-execute if we're not.
rootcheck () {
if [ $(id -u) != "0" ]
then
sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
可能有更优雅的方法(我很久以前就写了这个!),但这对我来说效果很好。
要在脚本中一致地使用此函数,您应该将脚本最初接收到的参数传递给它。
用法:(rootcheck "${@}"
单独rootcheck
不会将任何参数传递给 rootcheck 函数)
答案2
我正在使用这个单行版本,可以轻松复制粘贴到脚本顶部
[ `whoami` = root ] || { sudo "$0" "$@"; exit $?; }
答案3
sudo chown root yourcode
sudo chmod 500 yourcode
瞧!
答案4
您可以更改权限,以便只有 root 可以执行它。或者您可以使用whoami
命令,以防它不是 root 强制 sudo。