chmod 不会粘住

ple*_* me -2 linux php centos chmod umask

我在虚拟专用服务器上使用 CentOS。

当我以 root 身份进入并更改文件夹的 chmod 值时,它会起作用。但是,我放入该文件夹的任何文件都不会继承我设置的 chmod。

这是我使用的:

chmod -Rv 777 files
Run Code Online (Sandbox Code Playgroud)

回报是这样的:

mode of `files' retained as 0777 (rwxrwxrwx)
mode of `files/1344188366-f7cad6aa87685db775817d4168c329ef-AUTO_INSURANCE2.csv'
changed to 0777 (rwxrwxrwx)
Run Code Online (Sandbox Code Playgroud)

好的,所以一个文件改变了。但是,如果我将任何文件放入该文件夹中,它们将具有不同的 chmod 值。如何让 chmod 坚持该目录中的每个文件和文件夹?

我希望默认 chmod 设置的文件正在通过 XHR 上传。IE 从浏览器到服务器的文件上传过程。

如何在 PHP 中的应用程序代码上设置 chmod 级别?

编辑

我想我已经找到了解决问题的合理方法。下面的答案解决了文件权限问题。但是get_current_user()在 php 中运行后,我意识到运行脚本的用户与我正在尝试处理的文件的用户不同。文件用户是 apache,因为那是创建它的人。但是PHP脚本是不同的用户,默认用户。

eww*_*ite 5

您需要修改umask。这可以按用户(in ~/.profile)或系统范围(即/etc/profile)定义。

此处提供了此概念和用例的详细分类

此处提供了对取消屏蔽和八进制权限的更详细细分。

编辑:

您的具体问题是如何设置通过 PHP 通过 Apache 上传的文件的权限。同样的概念也umask适用,只是需要在正确的位置进行定义。在典型的 Apache 安装中,该位置将是环境变量文件;envvars在某些发行版上。/etc/sysconfig/httpd在 RHEL/CentOS 上。

另请参阅:如何覆盖由 Apache/PHP 存储在 /tmp 中的文件的默认权限?

  • 在为问题添加上下文时,请尝试更新问题并相应地重新措辞,以便所有信息都集中在一个地方。不要用零碎的东西乱扔评论列表。 (3认同)