如何确定shell脚本是否以root权限运行?

F. *_*mer 12 permissions shell sudo

我有一个我想要使用su权限运行的脚本,但是有趣的脚本化命令会在脚本中很晚才出现,所以我想先预先进行干净的测试,以确定脚本是否会在没有SU的情况下失败能力.

对bash,sh和/或csh执行此操作的好方法是什么?

Nic*_*ell 13

庆典/ SH:

#!/usr/bin/env bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] ; then
        echo "I AM ROOT, HEAR ME ROAR"
fi
Run Code Online (Sandbox Code Playgroud)

CSH:

#!/bin/csh
if ( `id -u` == "0" ) then
        echo "I AM ROOT, HEAR ME ROAR"
endif
Run Code Online (Sandbox Code Playgroud)

  • 此代码不适用于POSIX shell(`/ bin/sh`).`[[`command和`EUID`变量特定于bash - 它们没有在POSIX规范中定义. (3认同)
  • 另外#!/ bin/bash几乎总是错的.如果你必须使用bash(这不是首选),请使用/ usr/bin/env bash (2认同)
  • 在他们的问题中特别提到 bash 的人似乎更喜欢 bash **。 (2认同)

小智 9

您可以在脚本开头添加类似的内容:

#!/bin/sh

ROOTUID="0"

if [ "$(id -u)" -ne "$ROOTUID" ] ; then
    echo "This script must be executed with root privileges."
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)