检查我是否使用 sudo 或 su
Check if i use sudo or su
我想要一个脚本 shell 让用户使用 su 而不是 sudo
我想要一个脚本来检查我是否在我的命令中使用了 sudo 或 su,例如:
if [ "$USER" != "root" -a "[=10=]" = "sudo" ];then
echo "You have to run this script as a root \"Use : su \" "
fi
我知道错了,谁能帮帮我??
您可以使用 $EUID,因为 sudo 的有效用户 ID 始终为 0 :)
示例:
#!/usr/bin/env bash
if [[ $EUID = 0 ]]; then
echo "sudo!"
else
echo "not sudo!"
fi
编辑:
以上内容不起作用,但如果您只想从简单的 bash 脚本中检查它,您可以执行以下操作:
#!/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
...诚然是来自(不正确!)类别的解决方案...
我想要一个脚本 shell 让用户使用 su 而不是 sudo
我想要一个脚本来检查我是否在我的命令中使用了 sudo 或 su,例如:
if [ "$USER" != "root" -a "[=10=]" = "sudo" ];then
echo "You have to run this script as a root \"Use : su \" "
fi
我知道错了,谁能帮帮我??
您可以使用 $EUID,因为 sudo 的有效用户 ID 始终为 0 :) 示例:
#!/usr/bin/env bash
if [[ $EUID = 0 ]]; then
echo "sudo!"
else
echo "not sudo!"
fi
编辑:
以上内容不起作用,但如果您只想从简单的 bash 脚本中检查它,您可以执行以下操作:
#!/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
...诚然是来自(不正确!)类别的解决方案...