【问题标题】:How to allow user www-data use sudo commands without password如何允许用户 www-data 使用没有密码的 sudo 命令
【发布时间】:2022-01-27 17:24:23
【问题描述】:

我想通过 PHP exec() 函数在我的网站上允许运行指定命令,所以我找到了在 sudoers.d 文件中添加 www-data 以允许运行指定命令而无需询问密码的方法。

我尝试了接下来的事情:

  1. 检查程序目录在哪里 whereis hashcat -> hashcat: /usr/bin/hashcat
  2. 将新文件添加到sudo visudo /etc/sudoers.d/www-data 并添加下一行www-data ALL=(www-data:www-data)NOPASSWD: /user/bin/hashcat
  3. 尝试通过 www-data 运行它:sudo -u www-data sudo hashcat 然后我得到这个:[sudo] password for www-data:,这意味着它似乎不起作用

我能做错什么,我应该怎么做?我这样做的决定是否正确?有没有更好更安全的解决方案?

【问题讨论】:

  • 您确定 /etc/sudoers.d/www-data 文件中是“/user/bin/hashcat” - 使用用户而不是 usr?在您展示的问题中,该 hashcat 位于 /usr/bin 中。另外:您确定 hashcat 需要以 root 身份运行吗?为什么不能简单地作为 www-data 执行?
  • 虽然最终结果可能是您可以使用您的网络服务器运行 shell 命令,但这实际上是提供网络服务器的帐户和它可能运行的 所有 脚本,在您的服务器上以 root 身份运行的权限。这让我害怕。如果可以,请尝试放宽您需要运行的特定命令的权限。或者,考虑构建一个简单的队列(甚至只是一个数据库或文本文件),让您的 Web 提交到该队列,并让一个守护进程(cron、service supervisord 等)读取队列并执行提升的安全列表命令集。跨度>
  • 如果你做后者(这听起来很复杂,但实际上并不算太多),确保你不要让它太“聪明”,你可以传递动态的东西让它解释,否则你将制作另一个 Log4J。
  • @cyberbrain - 是的,它是 /usr/,抱歉,编辑答案。当我尝试在没有 root 的情况下执行此操作时,它显示“权限被拒绝”,因此它与 sudo 一起使用
  • @ChrisHaas - 如果这有点不安全,我只想添加一个命令(sudo hashcat)以使用 www-data 执行

标签: php debian sudo hashcat


【解决方案1】:

通过删除(www-data:www-data) 解决了这个问题,所以我的“www-data: sudoers.d 中的文件看起来像:www-data ALL=NOPASSWD: /usr/bin/hashcat 感谢大家的回答,并给我一个解决这个问题的提示!特别感谢@cyberbrain 的粗心大意!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多