PHP shell_exec('whoami; ls / var / lib / nagios3 2>& 1');在shell中罚款的权限被拒绝

时间:2014-01-06 17:36:43

标签: php shell file-permissions

我有一个小的PHP脚本,在Vagrant VM中运行(应该没关系,但谁知道):

<?php
  echo 'euid' + posix_geteuid(); // Prints 33, which is the ID of www-data
  echo shell_exec('whoami; ls /var/lib/nagios3 2>&1'); // Prints www-data ls: cannot open directory /var/lib/nagios3
  echo shell_exec( 'whoami' ); // Prints www-data
?>

/ var / lib / nagios3如下所示:

drwxr-x---  4 nagios  nagios   4096 Jan  6 18:00 nagios3/

www-data是小组nagios的成员,我把它设置了。

如果我在shell中运行它:

ssh www-data@10.0....
$ cd /var/lib/nagios3
$ ls
retention.dat  rw  spool
$ ls /var/lib/nagios3
retention.dat  rw  spool

一切都很好!

任何人都能解释一下这种奇怪的行为吗?我会非常感激的!

2 个答案:

答案 0 :(得分:2)

你还应该检查一下id说的是什么,它是否列出了www-data组中的nagios?

echo shell_exec('id'); // uid=33(web-data) gid=... groups=... IS nagios IN HERE?

如果在启动网络服务器后将www-data添加到组nagios ,则可能需要重新启动网络服务器,甚至重新启动。至少这种情况发生在Linux中的普通用户会话中 - 您将自己添加到某个组(音频/视频等)并需要在更改发生之前注销/登录。当您进入框中时,您将获得具有新权限的新shell,但Web服务器仍在旧权限下运行。

答案 1 :(得分:0)

您必须为该php文件提供775权限

chmod 775