在 sh 和 bash 中检查 root 用户

在 sh 和 bash 中检查 root 用户

我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装 ports/packages。为此,执行脚本的用户必须是 root。

该系统“应该”是处女的意思bashsudo可能会也可能不会安装;所以我正在尝试解释它。为此,我检查用户 ID 是否等于 0。

问题是,bash 和 sh 之间的环境变量不同:

  • bash -> $EUID (全部大写)
  • sh -> $euid (全部较低)

除了环境变量之外,是否还有其他方法来检查 root 用户,或者我应该根据环境调整对用户的检查?

答案1

我会检查的值id -u,指定为:

仅输出有效用户 ID,使用格式“%u\n”。

也许是这样的:

if [ $(id -u) -eq 0 ]
then
  : root
else
  : not root
fi

答案2

看起来您可以简单地$UID == 0在两个 shell 中进行测试。由于名称root不是重要的部分,并且您实际上可以拥有一个root以非零 UID 命名的用户,或者一个以 以外的名称命名的 UID 0 帐户root,这可能是检查脚本是否作为一个用户运行的更好方法。特权用户。

相关内容