我有一个小的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
一切都很好!
任何人都能解释一下这种奇怪的行为吗?我会非常感激的!
答案 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