我想要一个脚本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
我知道错了,有人能帮助我吗?
答案 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!)类别的解决方案...