我在虚拟专用服务器上使用 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 上。
答案2
您需要做的是设置该文件夹的组权限......
将其设置为协作文件夹:
chmod 2777 /what/ever/folder
这样,文件夹中的任何文件都会默认采用组设置
或者
setfacl -m d:g:whatever-group:rwx /what/ever/folder