php - 带有 shell_exec 的命令行 PHP 适用于 root,但不适用于其他人

标签 php linux permissions command-line-interface

我有一个非常简单的脚本,用于测试运行 shell_exec (或反引号运算符)是否基本有效:

#!/usr/bin/php5
<?php

echo "This is a PHP script\n";
echo `ls -l /home/stoysnet/`;

除非我以 root 身份运行它,否则它总是给我:

$ ./foo.php 
This is a PHP script

Warning: _shell_exec(): Permission Denied in /home/stoysnet/foo.php on line 5

我尝试通过 PHP 以几种不同的方式运行它,但总是遇到相同的错误。但是,当我将脚本放入 root:root 拥有的 /etc/ 子目录并以 root 身份执行时,它就可以工作了。

什么给出了?

更新:只是为了澄清:

  • 我正在尝试通过命令行以 stoysnet 用户身份运行它。我能够执行通过同一 session 传递给 shell_exec 的命令。
  • 如果我将脚本移至 /etc/somedir/ 并以 root 身份执行,它就会按预期工作。
  • 脚本本身运行,只是不运行反引号运算符或 shell_exec 部分
  • 设置了执行权限,777也不起作用。

最佳答案

您是否以与 stoysnet 不同的用户身份运行此脚本? ?当你运行 ls -l /home/stoysnet 时会发生什么与您执行 PHP 脚本的用户是同一用户吗?

似乎您需要以有权 /home/stoysnet/ 的用户身份运行脚本.

关于php - 带有 shell_exec 的命令行 PHP 适用于 root,但不适用于其他人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030595/

相关文章:

android - Android 上的应用程序是否授予默认权限?

php - 使用 DOMDocument 从 rss feed 读取图像 url 时出现问题

java - 创建onrequest权限granted()时传递的grant result是什么

C# 替换为混合值

linux - 无法连接到节点 rabbit@localhost : nodedown

linux - 在一行中使用 awk 和 stat 来打印 stat 的值

linux - 一个文件输入到脚本中的两个程序

docker - Docker 容器中的用户和文件权限配置(docker-compose 版本 3)

javascript - 使用 AJAX 从另一个网站获取数据

php - Jquery ajax post 将阿拉伯字符发送到 php 和 mysql 查询,例如