1

我有一个在 AWS 上运行的 Amazon (AMI) Linux EC2 实例。我正在创建一个 perl 脚本,该脚本将在通过 Web url(CGI 脚本)调用时创建目录。

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

我已经修改了通过浏览器执行 (755) 的脚本权限,但是 mkdir 命令都不起作用。

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

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

4

1 回答 1

2

我通过搜索找到了答案。

您需要做的第一件事是为当前用户禁用 tty。我的网络浏览器在服务器上以用户“apache”的身份执行任何操作。

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

默认值:apache !requiretty

我还创建了一个我希望 apache 使用而不需要 sudo 密码的命令列表

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

这仅允许某些 sudo 命令在我的 Web 服务器上执行而无需密码。

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

您可以使用 visudo 指定您的编辑器。例如

EDITOR=纳米视觉

于 2014-04-24T20:36:24.440 回答