我有一个只能使用 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
$
仅供参考,我引用的相关帖子的一个例子是:
答案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