如何确定shell脚本是否以root权限运行?
我已经有了一个脚本,我想要用su特权运行,但脚本中会出现失败的有趣的脚本命令很晚,因此我想先进行一次干净的测试以确定脚本是否会失败没有SU能力。如何确定shell脚本是否以root权限运行?
对bash,sh和/或csh执行此操作的好方法是什么?
庆典/ SH:
#!/bin/bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] ; then
echo "I AM ROOT, HEAR ME ROAR"
fi
CSH:
#!/bin/csh
if (`id -u` == "0") then
echo "I AM ROOT, HEAR ME ROAR"
endif
此代码在POSIX shell('/ bin/sh')中不起作用。 '[[''命令和'EUID'变量是特定于bash的 - 它们没有在POSIX规范中定义。 – 2011-06-18 07:55:44
另外#!/ bin/bash几乎总是错的。如果你必须使用bash(这真的不是首选),使用/ usr/bin/env bash – 2013-05-25 15:31:28
看起来bash **是**被那些在他们的问题中特别提到bash的人首选的。 – jwg 2014-03-12 16:11:18
你可能在你的脚本的开头添加类似的东西:
#!/bin/sh
ROOTUID="0"
if [ "$(id -u)" -ne "$ROOTUID" ] ; then
echo "This script must be executed with root privileges."
exit 1
fi
您是否尝试过的http:// www.cyberciti.biz/tips/shell-root-user-check-script.html? – 2011-06-15 18:23:53
这看起来不错。你为什么不把这个作为答案? :-) – 2011-06-15 18:33:17