【问题标题】:lsof shell command in php deniedphp中的lsof shell命令被拒绝
【发布时间】:2019-11-06 18:15:57
【问题描述】:

我有以下代码:

        $cmd="lsof | awk '{print $1 \" \" $2 \" \" $3 \" \" $9}'";
        $info = shell_exec($cmd);        
        $processors = preg_split('/\s?\n\s?\n/', trim($info));
        $processors = explode("\n",$processors[0]);
        foreach($processors as $processor){
           echo $processor."\n";
        }

当我在命令行上运行它时,我得到了积极的结果。但是,当我在 php 脚本上运行它时,我得到:

systemd 1 root denied) 对应每个$processor

【问题讨论】:

  • 恕我直言,不确定 awk 标签是否应该用于此帖子,可能是 bash 标签,因为 lsof 是一个 shell 命令(内部或外部)?

标签: php awk server lsof


【解决方案1】:

当我尝试发布您的代码时,我也遇到了同样的错误(能够重新产生错误)。

然后我尝试只用awklsof 代替完整的lsof 命令,以查看完整的错误是什么,然后出现以下错误。

COMMAND PID    USER   FD      TYPE DEVICE SIZE/OFF       NODE NAME
sh        1    root  cwd   unknown                            /proc/1/cwd (readlink: Permission denied)
sh        1    root  rtd   unknown                            /proc/1/root (readlink: Permission denied)
sh        1    root  txt   unknown                            /proc/1/exe (readlink: Permission denied)
sh        1    root NOFD                                      /proc/1/fd (opendir: Permission denied)
time      9    root  cwd   unknown                            /proc/9/cwd (readlink: Permission denied)
time      9    root  rtd   unknown                            /proc/9/root (readlink: Permission denied)

之后我用谷歌搜索并找到了一个很好的链接 https://unix.stackexchange.com/a/109228(跨站点参考),它告诉我们 lsof 提供错误,因为我们无权访问这些文件/命令,显然我们没有运行命令root.

所以要克服这个问题恕我直言,你可以:

  • sudo 运行lsof 命令以消除错误,以防您的用户具有sudo 访问权限来运行此命令。
  • 如果您对根进程的详细信息不感兴趣,您可以将这些错误发送至/dev/null 以消除这些错误。

【讨论】:

    【解决方案2】:

    如果您查看lsof 的完整输出,您会看到大多数行如下所示:

    COMMAND     PID   TID TASKCMD            USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd       1                          root  cwd   unknown                                         /proc/1/cwd (readlink: Permission denied)
    

    因为您正在运行的用户无权查看不属于自己的进程。

    试试:sudo lsof

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2019-01-12
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多