php shell_exec touch 重定向和 adduser

2023-12-04

我试图最终使用 phpshell_exec功能创建新的 Linux 用户。然而,即使进行调试,我也遇到了问题。这是我的代码

<?PHP 

function adduser($username,$password,$server){ 
    try{
        //3 debug statements
        $output=shell_exec("pwd"); 
        echo $output;
       shell_exec("touch test.txt");

        //3 debug statements are requested by Christian
        echo '<pre>';
        print_r(execute('pwd'));
        print_r(execute('touch test.txt'));

        //actuall code
        $output=shell_exec("ssh root@$server \"adduser $username; echo $password | passwd $username --stdin\"");
    }
    catch(Exception $e){
        echo 'could not add user '.$e->getMessage();
    }
} 

$servers = array('192.168.1.8'); 

foreach($servers as $server){ 
    echo $_GET['USER']."   ".$_GET['PASSWORD'];
    adduser($_GET['USER'],$_GET['PASSWORD'],$server); 
}

The try-catch语句不执行任何操作,使我相信 shell 错误不会作为 PHP 错误传播(Python 也是如此)。线路$output=shell_exec("pwd")返回正确的目录。线路shell_exec("touch test.txt")但是,无法创建文件 test.txt (即使我给出完整路径“/home/user/.../test.txt”)。

不用说,添加用户的实际代码也不起作用。

EDIT我设法修复了一些代码。这touch test.txt错误是由于权限不足造成的。 Apache 使用用户 www-data 登录,我只是为该用户创建了一个主文件夹,并确保触摸该主文件夹中的文件。

然而,按照 Christian 的要求添加三个调试语句现在引起了问题。

EDIT经过进一步检查,这与以用户 www-data 登录时无法以 root 身份 ssh 相关。ssh -v回报debug1: read_passphrase: can't open /dev/tty: No such device or address。我的猜测是 ssh 正在询问通用的“您想将 xxx 永久添加到known_hosts吗”,但我无法回应。是否可以手动将用户添加到已知主机列表中?


  • 许多(大多数?) PHP 的内部函数不会抛出异常,而是会引发错误。我认为你不会看到抛出异常shell_exec()
  • 我可能会 var_dump() 返回值,只是为了确保您明确知道它返回的内容。
  • 我还建议研究诸如escapeshellarg()以避免您的输入出现问题。

一般情况下,我不会让 PHP 顺序执行多个命令,而是编写一个 shell 脚本来执行我需要的所有操作,然后从 PHP 调用它。调试时链条中少了一个环节,我发现我轻松了很多。

关于您的 SSH 命令本身,因为 apache 正在执行www-data,它如何以 root 身份登录到有问题的机器?您是否已将 apache 用户的密钥添加到远程计算机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php shell_exec touch 重定向和 adduser 的相关文章

  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 如何创建一个每次调用公共方法时都会调用的方法?

    如何创建一个每次调用公共方法时都会调用的方法 您也可以说这是一个后方法调用挂钩 我当前的代码
  • 用php将数字转换为字母[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中将数字 1 2 3 转换为字符串 一 二 三 https stackoverflow com questions 2112571 converting a number 1 2 3 to
  • 如何为 eclipse PHP 调试设置正确的 URL

    我在使用非标准 URL 在 Eclipse 中设置 PHP 调试时遇到问题 我的应用程序的 URL 必须是http xxx index php http xxx index php 这是我无法轻易改变的 我在设置调试配置来调用此 URL 时
  • 如何在 PHPUnit 中跨多个测试模拟测试 Web 服务?

    我正在尝试使用 PHPUnit 测试 Web 服务接口类 基本上 这个类调用肥皂客户端目的 我正在尝试使用 PHPUnit 测试此类getMockFromWsdl这里描述的方法 http www phpunit de manual curr
  • 发送邮件时PEAR邮件验证失败

    由于我发现 PHP 中内置的邮件功能存在安全漏洞 因此我尝试使用 PEAR 我已经在本地主机 WAMP 服务器 2 2 上安装并进行了必要的配置 但是 每次我尝试发送电子邮件时 都会显示以下消息 error authentication f
  • after_or_equal 验证在 laravel 5.2 中不起作用

    我想比较 start date 和 end date 并且 end date 应等于或大于 start date 我正在使用 after or equal 验证 return Validator make data start date g
  • 无法在 PHP shell_exec() 中运行“cd”命令

    我最近在我的大学以太网连接上安装了 Apache 设置的笔记本电脑 现在 只要我有 IP 地址或主机名 我可以选择 我就可以从任何地方连接到我的计算机 现在我想创建一个基于 Web 的命令提示符 让我可以从任何设备在笔记本电脑上运行命令 一
  • PHP 生成的 XML 显示无效的 Char 值 27 消息

    我使用 PHP 库生成 XML 如下所示 dom new DOMDocument 1 0 utf 8 执行上述操作会生成一个页面 该页面在输出顶部显示一条消息 此页面包含以下错误 第 16 行第 274505 列错误 PCDATA 无效 C
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 将 mod-rewrite 添加到现有 PHP 网站

    我正在更新一个 php 应用程序 该应用程序当前不使用 url 重写 目的是隐藏文件扩展名 网站总体结构如下 root index php login php page1 php page2 php page3 php page4 php
  • GhostScript PDF 合并(丢失可编辑字段)

    我正在使用 GhostScript 将 PDF 合并为一个 PDF 其中一份 PDF 具有我在 Adob e Acrobat Pro 9 中创建的文本框字段 可编辑字段 当我使用 GhostScript 合并这两个 PDF 时 我丢失了文本
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • InvalidArgumentException 与 UnexpectedValueException

    我应该什么时候使用无效参数异常 http www php net manual en class invalidargumentexception php什么时候意外值异常 http www php net manual en class
  • 如何设置打开文件时默认展开?

    In my vimrc我已经把set foldmethod syntax启用方法折叠等 但是 我不喜欢每次打开文件时都会折叠整个文件的默认设置 有没有办法启用foldmethod 但是当我打开文件时文件是否展开了 set foldlevel

随机推荐