检查我是否使用sudo或su

时间:2015-11-02 22:19:53

标签: linux bash shell sh

我想要一个脚本shell让用户使用su而不是sudo

如果我在命令中使用sudo或su,我想要一个脚本检查,例如:

if [ "$USER" != "root" -a "$0" = "sudo" ];then

    echo "You have to run this script as a root \"Use : su \" "

fi 

我知道错了,有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用$ EUID,因为sudo的有效用户ID始终为0 :) 例如:

#!/usr/bin/env bash
if [[ $EUID = 0 ]]; then
    echo "sudo!"
else
    echo "not sudo!"
fi

编辑:

上面的

不起作用,但是如果你只是想从一个简单的bash脚本中检查这个,你可以做这个hack:

#!/usr/bin/env bash
if [[ $EUID = 0 && "$(ps -o comm= | sed -n '1p')" = "su" ]]; then
    echo "sudo!"
else
    echo "not sudo!"
fi

显然不会识别普通的root shell,但是实际的su使用是正确识别的。 (当被另一个脚本调用时可能会中断:/)

对于嵌套的su使用非常脏并且不稳定(当从嵌套的su运行时sudo仍然可以通过),它可能就足够了:

#!/usr/bin/env bash
if [[ $EUID = 0 && "$(ps -o comm= | grep su | sed -n '1p')" = "su" ]]; then
    echo "sudo!"
else
    echo "not sudo!"
fi

...无可否认的是(不是OK!)类别的解决方案...