Chmod 不会坚持

Chmod 不会坚持

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

当我以 root 身份登录并更改文件夹的 chmod 值时,它可以正常工作。但是,我放入该文件夹的任何文件都不会继承我设置的 chmod。

这是我使用的:

chmod -Rv 777 files

返回结果如下:

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

好的,所以一个文件发生了变化。但是,如果我将任何文件放入该文件夹,它们的 chmod 值将有所不同。如何让 chmod 适用于该目录内的每个文件和文件夹?

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

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

编辑

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

答案1

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

关于这个概念和用例的详细分析可以在这里找到

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

编辑:

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

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

答案2

您需要做的是设置该文件夹的组权限......

将其设置为协作文件夹:

chmod 2777 /what/ever/folder

这样,文件夹中的任何文件都会默认采用组设置

或者

setfacl -m d:g:whatever-group:rwx /what/ever/folder

相关内容