设置正确的上传文件权限


12

我有一个php脚本,可将文件上传到名为“ uploads”的目录中。我可以上载的唯一方法是:

chmod 777 uploads

我知道这是不正确的,但我不知道要使其工作该怎么办。

服务器信息:Amazon EC2上的T1-Micro Amazon Linux AMI 2013.03

问题:

  • 我如何找出需要访问哪些用户……例如,apache或Web服务器的用户名是什么?

  • 我需要提供什么级别的访问权限,以及执行什么命令。

谢谢!

编辑:我在堆栈溢出中发现了很多答案,我将对此进行研究。例如

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

谢谢

Answers:


20

尝试运行:

ps -ef | grep apache

并查看与Apache服务器相对应的最左列。这是运行Apache的用户,并且通过继承也运行PHP。

将上载目录的所有权更改为此用户并稍微限制权限,例如,如果Web服务器用户www-data属于相同名称的组(使用的示例路径/var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(或此实例中您想要的任何权限)。我sudo在示例命令中使用了-我不完全知道如何在EC2系统上设置以获得超级用户特权。

如果您已经上传了文件/目录,则可能还需要更改其所有权和权限。为此,从777更合理的权限开始,您可以运行:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

如果您不理解命令的每个部分,请不要“盲目”运行它们。检查man页面是否不清楚(应该很简单)。


谢谢。这很有帮助。apache是​​用户。sudo chown和sudo chmod命令都可以使用。
fun_programming 2013年

清晰直接的解决方案,非常感谢。现在,我不再需要冒险的777许可
lhrec_106 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.