繁体   English   中英

PHP文件上传权限

[英]PHP file upload permissions

我正在设置共享主机。 我的用户可以通过SFTP访问服务器来上传其内容。 我正在使用以各自的用户身份运行的单独的PHP进程(每个站点一个)。 我希望用户默认情况下不会看到其他用户的内容(通过Web服务器作为其他任何非特权客户端除外),但是Web服务器(以www-data user / group运行)应该能够读取所有内容。 现在,我将特定用户在www中的文件所有权授予特定用户,将组所有权授予www-data,并使用设置的GID位将组所有权传播到新文件/目录(用户不在www-data组中)。

一切正常,但现在我遇到了问题。 一些站点正在使用wordpress,并且在它们上载文件时,设置的GID位丢失了,这意味着Web服务器无法访问它。 有什么方法可以配置PHP或wordpress(更有可能)将chmod文件和目录设置为正确的权限?

注意:我没有在PHP中使用安全模式,因此它应该能够添加设置的GID位。

更新:我尝试调整wordpress配置中的FS_CHMOD_DIRFS_CHMOD_FILE值。 我认为这将使我能够将上传的文件更改为所需的文件。 但是,它不会影响新上传的文件的权限。 法典中的信息,我想这些设置仅适用于核心更新功能。

谢谢!

请参阅这篇文章。
还有这个

这不是确切问题的答案,而是一般而言的解决方案。 将用户的Web目录的所有权分配给user / www-data,并将权限设置为750,无SGID位。 用户不得属于www-data组。 但是,可以在该目录内将组所有权设置为用户的主组(例如,用户)。 文件和子目录的内部权限分别为644和755。 由于其他用户将无法进入或遍历该Web目录,因此即使他们具有足够的权限自己访问文件,也将无法访问其中的任何文件,因此提供了安全性。 这将限制两个用户通过SFTP连接并执行PHP命令。

由于此解决方案不使用设置的GID位,因此可以解决原始问题。 上载的文件可以保留其默认所有权和权限。

一点示范:

transistor# mkdir www
transistor# chown :www-data www
transistor# chmod 750 www
transistor# ls -l
total 4
drwxr-x--- 2 root www-data 4096 Feb 20 20:59 www
transistor# touch www/file1.txt
transistor# mkdir www/subdir
transistor# touch www/subdir/file2.txt
transistor# ls -l www
total 4
-rw-r--r-- 1 root root    0 Feb 20 21:00 file1.txt
drwxr-xr-x 2 root root 4096 Feb 20 21:00 subdir
transistor# ls -l www/subdir 
total 0
-rw-r--r-- 1 root root 0 Feb 20 21:00 file2.txt
transistor# exit
giedrius@transistor:/tmp/sandbox$ cd www
bash: cd: www: Permission denied
giedrius@transistor:/tmp/sandbox$ ls www/subdir
ls: cannot access www/subdir: Permission denied
giedrius@transistor:/tmp/sandbox$ cat www/file1.txt
cat: www/file1.txt: Permission denied
giedrius@transistor:/tmp/sandbox$ cat www/subdir/file2.txt
cat: www/subdir/file2.txt: Permission denied
giedrius@transistor:/tmp/sandbox$ sudo -su www-data
transistor% ls www 
file1.txt  subdir
transistor% cat www/file1.txt 
transistor% cat www/subdir/file2.txt 
transistor% 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM