允许EC2上的Apache通过CGI脚本运行sudo命令

时间:2014-04-24 19:17:03

标签: apache perl amazon-web-services cgi ec2-ami

我在AWS上运行了一个Amazon(AMI)Linux EC2实例。我创建了一个perl脚本,当通过web url(CGI脚本)调用目录时,它将创建目录。

但是,由于浏览器正在执行脚本,因此用户apache正在运行perl脚本。因为不允许apache在不使用sudo的情况下执行mkdir命令,所以没有创建任何目录。

我已经通过浏览器修改了脚本执行权限(755),但没有一个mkdir命令有效。

我甚至尝试在perl脚本中使用sudo命令,但我没有运气。但是,所有非sudo命令都可以工作,例如' cd'等

如果有人知道如何解决这个问题,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我通过搜索找到了答案。

您需要做的第一件事是为当前用户禁用tty ..我的网络浏览器执行任何操作,因为用户' apache'在服务器上。

所以在我的/ etc / sudoers文件中我添加了

默认值:apache!requiretty

此外,我创建了一个命令列表,我希望apache使用它而不需要sudo密码

Cmnd_Alias APACHE = / bin / mkdir,/ bin / rmdir apache ALL =(ALL)NOPASSWD:APACHE

这样只允许在我的Web服务器上执行某些sudo命令,而无需重新输入密码。

注意:只能使用visudo命令打开/ etc / sudoers文件...不要只使用常规的vim或nano打开它,因为如果你保存它并且它是错误的,它会****你的机器和你可能必须创建一个全新的服务器,因为任何sudo命令都不会执行。

你可以用visudo指定你的编辑器......例如

  

EDITOR = nano visudo