如何从基于 php 的 Web 应用程序以 root 权限打开终端

如何从基于 php 的 Web 应用程序以 root 权限打开终端

我在 lampp ubuntu 机器上有一个 web 应用程序,我需要打开一个终端来执行一些操作,有人能帮我吗

提前致谢

答案1

不,这是错误的方法。我大致会这样做:

  • 将网站上的数据存储在服务器上的数据库中,或作为文本文件存储。
  • 使用服务器上的脚本(服务或目录观察器/etc/crontab)在数据库中填充文件或使用此文本文件中的数据创建文本文件
  • 对数据进行处理后,让网页获取这些新数据,以获得所需的结果。

数据库方法更好,但工作量更大。设计良好的数据库会迫使您验证数据,并使数据操作变得容易。您可以使用 MySQL 中的“过程”来操作数据。转储文本文件比较容易,但验证和操作文本文件可能比较棘手。

答案2

Rinzwind 方法的替代方法是:

  1. 编写一个包装特权命令的脚本,例如,

    #!/bin/sh
    set -eu
    input="$1"
    output="$2"
    exec /path/to/data-analysis-program [OPTIONS...] "$input" "$output"
    

    将其另存为,/other/path/to-data-analysis-wrapper.sh并使其可执行:

    chmod +x /other/path/to-data-analysis-wrapper.sh
    

    测试包装器脚本是否按照您的要求执行:

    sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
    
  2. 将文件的所有权转移给某个用户,使得拥有 Web 服务器进程的用户无法写入该文件,例如root

    sudo chown root /other/path/to-data-analysis-wrapper.sh
    
  3. 配置sudoers以允许拥有 Web 服务器进程的用户以提升的权限执行脚本。请参阅如何在没有密码的情况下运行特定的 sudo 命令?有关如何一般性地执行此操作并使用以下规则(或根据您的喜好进行调整):

    www-data ALL = (root) NOPASSWD: /other/path/to-data-analysis-wrapper.sh *
    
  4. 您现在可以sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>从代表 Web 服务器运行的 CGI 脚本执行。

更好的方法是以不需要超级用户权限的方式设置数据分析流程。如果这仅与数字运算有关,而不是与特权系统或硬件访问有关,那么应该有一个相对简单的方法。如果您想走这条路,请提出一个新问题并更深入地描述情况。

相关内容