我在AWS上运行了一个Amazon(AMI)Linux EC2实例。我创建了一个perl脚本,当通过web url(CGI脚本)调用目录时,它将创建目录。
但是,由于浏览器正在执行脚本,因此用户apache正在运行perl脚本。因为不允许apache在不使用sudo的情况下执行mkdir命令,所以没有创建任何目录。
我已经通过浏览器修改了脚本执行权限(755),但没有一个mkdir命令有效。
我甚至尝试在perl脚本中使用sudo命令,但我没有运气。但是,所有非sudo命令都可以工作,例如' cd'等
如果有人知道如何解决这个问题,我将不胜感激。
答案 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