PHP / Apache上传文件夹的权限是什么?

抱歉的基本问题 – 我是一个.NET开发人员,并没有太多的LAMP设置经验。

我有一个PHP网站,将允许上传到特定的文件夹。 我被告知,这个文件夹需要由Web服务器用户拥有上传过程才能工作,所以我创build了文件夹,然后设置权限,如下所示:

chown apache:apache -R uploads/ chmod 755 -R uploads/ 

现在唯一的问题是,FTP用户根本无法修改上传的文件。

是否有一个权限设置,允许我仍然上传文件,然后修改它们以外的用户而不是Web服务器用户?

你可以用apache用户和FTP用户作为成员创build一个新的组,然后在上传文件夹775上创build权限。这应该使apache和FTP用户都能够写入文件夹中的文件,但是让其他人从修改它们。

如果你真的想这样做的话,我会和Ryan一起回答。

总的来说,在一个* nix环境中,你总是希望尽可能less的授予权限。

10次​​中的9次,755是理想的权限 – 因为唯一能修改文件的用户将是web服务器。 如果您真的需要更改,请将您的ftp用户更改为775。

由于您自己承认PHP是新手,因此您可以通过以下链接提高上传服务的安全性: move_uploaded_file

或者至less766。

  • 阅读= 4
  • 写= 2
  • 执行= 1

7 =读取+写入+执行

6 =读取+写入

  • 第一个数字:所有者
  • 第二个数字:组
  • 第三个号码:其他用户

重要的是, apache用户和组应该有最小的read访问权限,并在某些情况下execute访问权限。 其余的你可以给0访问。

这是最安全的设置。

我会支持创build一个有权上传的ftp组的想法。 但是,我不认为有必要给予775的许可。 7代表读,写,执行。 通常你想允许某些组读取和写入,但根据情况,执行可能不是必需的。

我将补充一点,如果您使用的是SELinux,则需要确保types上下文是tmp_t您可以使用chcon实用程序

chcon -t tmp_t上传

还请记住CHOWNchgrp您的网站文件夹。 尝试myusername# chown -R myusername:_www uploads

基于@Ryan Ahearn的回答,以下是我在Ubuntu 16.04上创build的用户front ,只有nginx的web dir /var/www/html权限。

脚步:

 *前置步骤:
     *基本的服务器准备,
     *创build用户“开发”
        这将是“/ var / www / html”的所有者,
     * 
     *安装nginx,
     * 
 * 
 *创build用户“前”
     sudo useradd -d / home / front -s / bin / bash front
     sudo passwd前面

     #创build主文件夹,如果还不存在,
     sudo mkdir / home / front
     #设置新主文件夹的所有者,
     sudo chown -R正面:正面/正面/正面

     #切换到用户,
    前线

     #复制.bashrc,如果还不存在,
     cp /etc/skel/.bashrc〜front /
     cp /etc/skel/.profile〜front /

     #启用颜色,
     vi〜front / .bashrc
     #取消以“force_color_prompt”开头的行注释,

     #退出用户
    出口
 * 
 *添加到组“开发”,
     sudo usermod -a -G dev前端
 *更改网页目录的所有者,
     sudo chown -R dev:dev / var / www
 *更改networking目录的权限,
     chmod 775 $(find / var / www / html -type d)
     chmod 664 $(find / var / www / html -type f)
 * 
 *重新login为“前”
    为了使小组生效,
 * 
 *testing
 * 
 * 好
 *