【问题标题】:Allowing Apache on EC2 to run sudo commands via CGI script允许 EC2 上的 Apache 通过 CGI 脚本运行 sudo 命令
【发布时间】:2014-04-24 19:17:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我也检查了我的错误日志。它说 sudo: 抱歉,你必须有一个 tty 才能运行 sudo
  • 您需要小心锁定此 URL 端点以避免恶意使用。在不检查的情况下执行用户的内容是 90 年代第一代 CGI 应用程序中常见的漏洞。祝你好运。

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


【解决方案1】:

我通过搜索找到了答案。

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

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

默认值:apache !requiretty

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

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

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

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

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

EDITOR=nano visudo

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多