2

bash 的标准解决方案,请参见:

https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root

这是:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 
   exit 1
fi

在 dash 中不起作用,它正在慢慢成为 Linux 下的标准 shell。以上内容如何移植到dash?

4

3 回答 3

8

使用id

if [ "$(id -u)" -eq 0 ]; then
    echo "I am root!"
fi

或者

#!/bin/sh
if [ "$(id -u)" -ne 0 ]; then
    echo "This script must be run as root" 
    exit 1
fi
于 2014-08-13T08:09:22.100 回答
1

使用“id -u”命令获取您当前的有效用户 id:

#!/bin/dash
MYUID=`id -u`
if [ "$MYUID" -eq 0 ]
then
    echo "You are root"
else
    echo "You are the non-root user with uid $MYUID"
fi
于 2014-08-13T08:33:12.273 回答
0

我通常做的是检查我实际需要的功能,以便脚本对于喜欢通过备用特权帐户运行的用户也能正常工作(*BSD 曾经toor用于超级用户csh,当然没有人在他们的权利心想这些天,但无论如何)。

test -w /usr/share/bin ||
{ echo "$0: /usr/share/bin not writable -- aborting" >&2; exit 1 }
于 2014-08-13T08:06:09.810 回答