PHP chmod():不允许操作,涉及安全模式弃用?

Posted

技术标签:

【中文标题】PHP chmod():不允许操作,涉及安全模式弃用?【英文标题】:PHP chmod( ):Operation not permitted, safe_mode deprecation involved? 【发布时间】:2014-05-29 00:19:24 【问题描述】:

我正在努力从 php 中掌握chmod() 的概念,因为我目前正在学习的课程有点过时并且涉及安全模式。它指出,当安全模式关闭时,当所有者与执行命令的人不同时,使用chmod() 修改文件权限的限制将被删除。我正在与 XAMPP 一起使用 PHP 5.5.9,我已验证标志已关闭(以防万一),但似乎无法使其正常工作。当我执行以下 PHP 脚本时:

echo "File permissions :" .  decoct(fileperms("file_permissions.php"));
chmod("file_permissions.php" ,0777);

我收到以下输出:

Warning: chmod(): Operation not permitted

我对该文件的权限如下

-rwxrwxrwx@  1 joelhernandez  staff     24 Apr 14 06:59 file_permissions.php

我已经执行ps aux | grep httpd 以确认我的网络服务器在用户“守护进程”下运行。

当我将文件所有权更改为 daemon 时:

-rwxrwxrwx@  1 daemon  staff     24 Apr 14 06:59 file_permissions.php

一切正常,我不明白为什么,正如我所理解的那样,关闭安全模式,文件所有权将毫无意义,而是文件权限是处理访问的方式。

【问题讨论】:

【参考方案1】:

daemon 用户不是root,因此不允许更改其他用户拥有的文件的模式。 PHP safe_mode 不是这里的原因。警告告诉您尝试操作失败,因为 Web 服务器用户无权更改模式。

您手动将文件的所有权更改为daemon后操作成功,因为允许用户更改他们拥有的文件的模式。

【讨论】:

好的,那我应该采取什么方法呢?关闭的安全模式不是允许更改用户不拥有的文件的权限吗?另外,我相信我读到 chmod() 不需要超级用户权限,只需要 chown() chmod 并不总是需要 root - 用户可以更改他们拥有的文件的模式 - joelhernandez 可以更改 joelhernandez 拥有的文件的模式,daemon 可以更改daemon 拥有的文件的模式。用户(root 除外)无法更改他们不拥有的文件的模式 - daemon 无法更改 joelhernandez 拥有的文件的模式。 至于你应该做什么,如果不知道更多关于你想要完成的事情,很难说。 我投票的评论解决了我的疑问!谢谢,我猜这个教程不是很简单!

以上是关于PHP chmod():不允许操作,涉及安全模式弃用?的主要内容,如果未能解决你的问题,请参考以下文章

chmod():Laravel 中不允许的操作

PHP.ini安全设置 让你的PHP更安全

ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作”

ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作”

Laravel chmod(/var/dev/project/storage/oauth-public.key):操作失败:不允许操作

ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2linux 如何修改只读文件 3ubuntu安装