如何以不同的用户身份安全地执行php文件?

如何以不同的用户身份安全地执行php文件?

我想确认我的想法是正确的,因为这涉及安全问题。

我们有基于 Web 的应用程序,它使用 db2 数据库。 db2在该db2inst1用户下运行。

现在,我们希望 Web 应用程序的用户能够将 db2 备份映像恢复到我们称为 playschool 的数据库中。使用这个游戏学校,他们“玩耍”并且不会损害生产数据库。为此,db2restore需要通过 PHP 函数执行PHP 脚本exec()

是否足够安全确保没有人可以在以下情况下以 PHP 用户身份滥用和运行 db2 命令:

  • 我们将这一行添加到/etc/sudoers

    php ALL=(db2inst1) NOPASSWD: /opt/eduserver/bin/db2restore
    
  • 然后在 PHPdb2restore脚本中运行此命令

    exec('sudo -u db2inst1 /opt/eduserver/bin/db2restore');
    

笔记

  • 并非所有最终用户都有权通过 Web 界面运行 db2restore,只有他们“应该”知道自己在做什么的管理员组。
  • 没有最终用户有权访问服务器的命令行。
  • 无法通过 Web 服务器访问 db2restore

答案1

我不认为这样做有什么本质上的错误。唯一突出的是,例如,如果 db2restore 文件属于 db2inst1 而不是 root,则有人可以使用 db2restore 的内容玩游戏。

我还假设这个 Playschool 数据库不在生产系统上。如果是这样,那么如果开发人员登录到生产数据库,这将成为一个坏主意。

一般来说,在授予对数据库的访问权限时,我总是在数据库中创建用户帐户,然后向该特定用户帐户授予特定功能(添加、删除等)。

相关内容