执行bash脚本时阻止sudo命令

时间:2014-08-14 11:42:16

标签: bash sudo

我知道在执行脚本时我可以阻止sudo命令;假设我有一个测试bash脚本,我不希望有人通过发出以下命令来执行此脚本:

username:~#sudo ./test

我实现了以下方法之一来阻止上述执行,我还为此实现了一个die方法。

if [[ $UID = 0 ]] ; then
  die "Please dont use sudo command with script"
fi

但是如果root用户自己想要使用脚本,我不确定我应该实现什么。我的上述方法将阻止root使用该脚本。

如果root想以这种方式执行脚本,我很好

root:~#./test

2 个答案:

答案 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

如链接帖子中所述,可以通过手动设置它们来伪造它们。不过,它可能对你有所帮助。