php创建目录权限被拒绝:尝试shell_exec脚本时
当我尝试php创建目录权限被拒绝:尝试shell_exec脚本时,php,apache,shell,ubuntu,permissions,Php,Apache,Shell,Ubuntu,Permissions,当我尝试shell\u 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_
shell\u 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')
在我的面向web的php脚本上返回www-data
目录和文件的权限完全相同:
-rwxrwxr-x 1 user123 group456 8246 Jun 25 06:10 script
drwxrwxr-x 7 user123 group456 4096 Jul 10 14:54 .
事实上,我可以shell\u 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
为什么会出现此错误?如果您试图在
/home/user/scripts//script
执行脚本,则应以shell\u exec('sh/home/user/scripts/script')的身份运行该脚本。
当您添加/
时,其路径上有不同的解释
当您传递/script
-您指的是当前目录中的文件名script
另外,您的c程序实际上也出现了错误,它告诉我们您的系统正在停止apache以获得根权限。您可以
audit2allow
让apache获得所需的特权。您运行的脚本有一个输入错误:它试图使文件夹/。脚本位于根文件夹中,而不是/script
(相对路径)。这很有趣,我没有意识到sh
和//code>有不同的含义。您能否详细说明一下这两个命令的区别,因为现在几乎不可能搜索像/
这样的术语。无论如何,我仍然收到一些错误:ELF:notfound
语法错误:“(意外的无法使用shell\u exec('sh/home/user/scripts/script')创建0?A@
)
/filename表示您引用当前目录中的文件名。我怎么可能在/home/user2/somedir/altscript.php
中编写php脚本,其中包含行shell\u exec(“/home/user/scripts//script”)
它能工作吗?其他用户有相同的ini设置吗?如果没有,则指向正在发布的safe\u mode\u exec\u dir
设置safe mode是关闭的,据我所知--safe\u mode=off
来自/etc/php5/apache2/php.ini
我不明白,这是一个打字错误吗?我可以使用\35;!/usr/bin从命令行运行这个确切的页面/php
而且工作正常,我通过在命令行中键入/scriptname
来运行大多数脚本,为什么它在apache上失败,但在命令行上没有失败?脚本错误消息说它无法创建/.script
,这是一个名为的文件夹。script
位于根文件夹//code>中。1)您试图从PHP运行的脚本有输入错误,2)您复制/粘贴错误的错误消息,或3)boost输出错误的错误消息。您可以在运行命令之前尝试chdir('/home/user/scripts
)`以确保它使用的是正确的PWD。没有打字错误,我没有复制/粘贴任何错误,我尝试了您的建议:chdir
不起作用,我遇到了与我原来帖子中相同的错误。更具体地说,在我的php页面的开头使用以下chdir
命令:chdir('/home/user/scripts')代码>我尝试以下命令:shell\u exec('./script')
--在我的操作中产生错误消息<代码>shell_exec('script')
--导致新的错误消息<代码>sh:1:脚本:未找到
shell\u exec('sh script')
——会导致一些奇怪的ELF:not found
和语法错误消息。这是一个可执行脚本还是shell脚本,如果您从命令行运行/home/user/scripts//script
,您将获得ELF:not found
,如果您从命令行运行/home/user/scripts//script
会发生什么?它会得到预期的结果。事实上,我从这个线程中了解到,我还可以使用/home/user/scripts/script
执行命令,并且它可以工作。应该注意的是,我运行的脚本不是一个PHP脚本,而是一个简短的C程序,我使用同一台机器上面向web的服务器上的PHP来调用这个脚本。我使用PHP脚本在命令行中将此C脚本作为root用户调用时没有遇到问题。当您从PHP运行它时,shell_exec('/home/user/scripts/script')
以及system('/home/user/scripts/script')
与我在原始帖子中粘贴的错误完全相同。如果我在我的shell\u exec
函数中使用相同的命令并将其粘贴到命令行上,我会得到预期的结果。我认为您的问题是您的系统正在阻止apache获得根权限。你们有SELinux吗?