0

当我尝试时,shell_exec('/home/user/scripts/./script')我收到以下错误:

terminate called after throwing an instance of 'boost::filesystem3::filesystem_error'
  what():  boost::filesystem::create_directory: Permission denied: "/.script"
Aborted (core dumped)

shell_exec('whoami')返回www-data我的面向网络的 php 脚本。

目录和文件的权限完全相同:

-rwxrwxr-x 1 user123   group456     8246 Jun 25 06:10 script
drwxrwxr-x 7 user123   group456     4096 Jul 10 14:54 . 

事实上,我可以shell_exec('touch /home/user/scripts/test')并且它会毫无问题地创建文件。

$ ls -l /home/user/scripts/test
-rw-r--r-- 1 www-data www-data          0 Jul 10 14:54 test123

这是为每个用户设置我的组的方式:

$ groups user123
user123 : group456
$ groups www-data
www-data : group456

为什么我会收到此错误?

4

2 回答 2

1

您运行的脚本有一个错字:它试图/.script文件夹而不是./script(相对路径)中创建文件夹。

于 2013-07-10T15:16:53.797 回答
0

您是否正在尝试执行脚本,/home/user/scripts/./script那么您应该运行为shell_exec('sh /home/user/scripts/script')

当您./在路径上添加时,它的解释不同。

当您通过时./script-您指的script是当前目录中的文件名。

此外,您实际上从您的 c 程序中得到了错误,这告诉我们您的系统正在停止 apache 以获得 root 权限。您可以audit2allow让 apache 获得所需的权限。

于 2013-07-10T15:13:53.990 回答