我已经设置了一个Web服务器并基于HTTP请求,需要以不同的用户身份执行脚本。
关于这一点,我可以像我需要的用户那样运行HTTP吗?
或者我可以非交互式提供密码,并包含以下内容作为bat文件的第一行。
runas /user:dmn1\user1 cmd
答案 0 :(得分:0)
首先,从命令执行bat,sh或任何其他文件不是一个好主意,可以通过任何方式进行欺骗。 您可以使用php的exec()来执行系统命令。
答案 1 :(得分:0)
如果您尝试以Web服务器本身中的其他用户身份执行命令,那么我不知道该怎么做,但是如果您尝试通过浏览器执行cmd,则可以通过.hta脚本来实现可能不适用于除IE以外的现代浏览器。
答案 2 :(得分:0)
Windows 缺少类似 sudo
的内置功能。</p>
您的选择是:
使用第三方工具,例如 psexec(需要以明文形式指定密码;有时可能有点花哨)或 sudo for windows(允许网络服务器用户不受限制的管理访问 - 不安全)。
在不同的端口上使用所需的用户凭据运行另一个网络服务器实例,并使用 .htaccess 重定向请求(这可能非常不安全!)
您只能允许本地访问并使用来自第一个网络服务器的 CURL 向第二个网络服务器发出请求
taskschd.msc
) 并创建一个任务,选择用户作为所有者并输入他们的密码。要运行任务,请使用: schtasks /run /s SERVERNAME /tn "SCHEDULEDTASKNAME"
您不能直接将参数传递给任务 - 您可以使用文件,但如果两个人同时访问 HTTP,请注意重叠
您可以通过任务调度程序运行“服务器”脚本。
然后 HTTP 服务器应该在该文件夹中创建具有长随机名称的文件。
如果不希望创建文件,您可以使用命名管道或本地 TCP 连接 (netcat) 或类似方法