gpt4 book ai didi

PHP exec() 函数和 .history 文件

转载 作者:IT王子 更新时间:2023-10-29 01:09:05 27 4
gpt4 key购买 nike

假设 apache 在我的服务器上运行的用户是真实用户并且有一个带有 .history 文件的主目录,将通过 exec() 运行命令导致在那个文件?

例如,如果我运行 exec("whoami") 并以该用户身份登录并运行命令 history 我会在该历史记录中看到一个条目 whoami 命令?

最佳答案

没有。

michael@MacMichi:~ $ php -r 'exec("whoami");'
michael@MacMichi:~ $ history |tail -n3
506 history |tail -n3
507 php -r 'exec("whoami");'
508 history |tail -n3

对于 apache 案例:我在两年前(2012 年)尝试过,发现它对历史没有任何影响。如果您不确定,请尝试一下...


只是一个旁注...命令确实由 shell 解释,正如您在这个简单示例中看到的那样

$ php -r 'exec("echo foo $(bar2 jojo) go >/dev/tty");'
sh: bar2: command not found
foo go

这与我直接在命令行上执行此操作时的输出完全相同

$ echo foo $(bar2 jojo) go >/dev/tty
-bash: bar2: command not found
foo go

这里的重点是,如果 shell 处于“交互模式”,它只会将命令添加到历史记录中。当您执行类似 cat|bashbash -c $exec_command 的操作时,不会创建任何历史条目。这就是 exec() 所做的,顺便说一句。它是一个类似于 C 命令的调用 execl("/bin/sh", "-c", exec_command, NULL);

关于PHP exec() 函数和 .history 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com