我知道在执行脚本时我可以阻止sudo
命令;假设我有一个测试bash脚本,我不希望有人通过发出以下命令来执行此脚本:
username:~#sudo ./test
我实现了以下方法之一来阻止上述执行,我还为此实现了一个die
方法。
if [[ $UID = 0 ]] ; then
die "Please dont use sudo command with script"
fi
但是如果root用户自己想要使用脚本,我不确定我应该实现什么。我的上述方法将阻止root使用该脚本。
如果root想以这种方式执行脚本,我很好
root:~#./test
答案 0 :(得分:2)
我认为您可以查看$SUDO_USER
来自sudo的手册:
SUDO_USER
Set to the login name of the user who invoked sudo.
一点测试:
#!/bin/bash
[[ -z $SUDO_USER ]] && echo "Not from sudo" || echo "You are from sudo"
将其保存为t.sh
,然后我们有:
kent$ ./t.sh
Not from sudo
kent$ su
Password:
root# ./t.sh
Not from sudo
kent$ sudo ./t.sh
You are from sudo
答案 1 :(得分:1)
serverfault有答案。实质上,设置了多个环境变量:
SUDO_COMMAND
SUDO_USER
SUDO_UID
SUDO_GID
如链接帖子中所述,可以通过手动设置它们来伪造它们。不过,它可能对你有所帮助。