【问题标题】:smartest way to use config /etc/sudoers for www-data将 config /etc/sudoers 用于 www-data 的最聪明方法
【发布时间】:2022-01-07 11:05:42
【问题描述】:

如果您有时需要用于 cp、mv 或启动一些 python 文件的 exec 或 shell_exec 函数,我想问一下将 /etc/sudoers 用于 www-data 的最佳或最聪明的方法是什么。 www-data ALL=(ALL) NOPASSWD:ALL 是唯一的方法还是您将如何配置此类问题?谢谢

【问题讨论】:

  • 这是一个非常的坏主意。这意味着如果有人设法通过 Web 服务器(某种 RCE)触发了一些 PHP 代码,他们可以接管整个服务器,因为他们可以执行任何 SUDO 命令而无需密码。根据文件是什么,您可以授予对这些文件的 www-data 访问权限,或者您可以使用队列。让 PHP 将操作添加到队列中,然后让一些脚本(可以每隔几秒使用 CRON 调用,或者作为守护程序运行的不同服务)读取并执行队列中的操作。然后您可以限制和验证它可以执行的操作。
  • @M.Eriksson 虽然有点“框架挑战”,但我认为这是对这个问题的最佳答案。如果你把你的评论移到答案部分,我会投赞成票。
  • @IMSoP - Ty。添加它作为答案。
  • @M.Eriksson 为您服务。所以最好写一个python文件来移动、删除或做我需要对一些上传的文件做的事情,并在sudoers下设置那个python文件的权限,对吧?
  • @trash2 "sudo" 根本不需要参与 - 更改相关文件的权限,以便常规 Web 服务器/脚本用户可以操作它们。任何脚本操作需要以 root 身份执行应该是非常罕见的,通常这将是一个完全在特权状态下运行的脚本,例如部署代理或系统维护 cron 任务。 “sudo”是一个交互式系统维护的工具,甚至必须强制非交互式操作。

标签: php sudo sudoers


【解决方案1】:

将www-data 设置为sudoer 是一个非常糟糕的主意,更不用说设置为没有密码的sudoer。这意味着,如果有人设法通过 Web 服务器触发了一些 PHP 代码(任何类型的删除代码执行漏洞),他们就可以接管整个服务器,因为他们可以以 SUDO 的形式执行命令,而无需在整个服务器上输入密码。

这里有几个可能的替代方案:

  • 根据文件是什么,您可以授予www-data 对这些特定文件所需的权限。

  • 使用队列。让 PHP 将操作添加到队列中,然后让一些脚本(可以使用 CRON 每隔几秒调用一次,或者您创建一个作为守护程序运行的不同服务)读取并执行队列中的操作。然后,您还可以在它执行之前限制和验证它可以执行的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多