如何判断 bash 脚本是否具有 root 权限

如何判断 bash 脚本是否具有 root 权限

我有一个只能使用 root 权限的 bash 脚本,所以我想测试用户是否拥有这些权限。其他帖子(见下文)询问并回答如何知道用户是否实际以 身份运行root,但没有回答脚本是否具有 root 权限。这些帖子说测试是否$EUID为 0。

为了在的上下文中尝试这个想法sudo,我编写了一个 bash 脚本/tmp/a.sh

#!/bin/bash
echo $EUID

sudo以下两个命令以具有Ubuntu 16.04 权限的非 root 用户身份运行。如果$EUID建议在 的上下文中起作用sudo,则第二个命令将打印 0 而不是空白行。

$ /tmp/a.sh
1000
$ sudo /tmp/a.sh

$ 

仅供参考,我引用的相关帖子的一个例子是:

脚本如何检查其是否以 root 身份运行?

答案1

该脚本/tmp/a.sh仅在第一行起作用#!/bin/bash。实际运行我给出的示例时,!意外省略了,并且报告的唯一用户是问题中显示的非 root 用户。

答案2

我在一些脚本中使用了以下内容:

#!/bin/bash

if [ "$(id -un)" != "root" ]; then
    echo "Need root - sudoing..."
    exec sudo "$0" "$@"
fi
# Now we are root

相关内容