使用PHP / Apache上传文件夹的适当权限是什么?

时间:2008-08-14 13:22:26

标签: php apache upload

对不起基本问题 - 我是.NET开发人员,对LAMP设置没有太多经验。

我有一个PHP站点,允许上传到特定文件夹。我被告知这个文件夹需要由网络服务器用户拥有才能使上传过程正常工作,所以我创建了该文件夹,然后设置权限:

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

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

是否有权限设置允许我仍然上传文件,然后以网络服务器用户以外的用户进行修改?

8 个答案:

答案 0 :(得分:40)

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

答案 1 :(得分:14)

如果你真的想这样做,我会选择Ryan的答案。

通常在* nix环境中,您总是希望尽可能少地放弃权限。

10次中的9次,755是理想的权限 - 因为唯一能够修改文件的用户将是网络服务器。如果您真的需要更改此设置,请将您的ftp用户更改为775。

由于您是自己承认的新手,所以这是一个有用的链接,可以提高上传服务的安全性: move_uploaded_file

答案 2 :(得分:12)

或至少766。

  • read = 4
  • 写= 2
  • execute = 1

7 =读+写+执行

6 =读+写

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

答案 3 :(得分:1)

我将补充一点,如果你正在使用SELinux,你需要确保类型上下文是tmp_t你可以通过使用chcon实用程序来实现这一点

  

chcon -t tmp_t uploads

答案 4 :(得分:1)

重要的是,apache用户和群组应具有最低read访问权限,在某些情况下execute访问权限。其余的,您可以0访问。

这是最安全的设置。

答案 5 :(得分:1)

我支持创建一个有权上传的ftp组的想法。但是,我认为没有必要给予775许可。 7代表读,写,执行。通常,您希望允许某些组进行读写,但根据具体情况,可能不需要执行。

答案 6 :(得分:0)

根据@Ryan Ahearn的回答,以下是我在Ubuntu 16.04上创建的用户front,该用户只拥有nginx网址/var/www/html的权限。< / p>

<强>步骤:

* pre-steps:
    * basic prepare of server,
    * create user 'dev'
        which will be the owner of "/var/www/html",
    * 
    * install nginx,
    * 
* 
* create user 'front'
    sudo useradd -d /home/front -s /bin/bash front
    sudo passwd front

    # create home folder, if not exists yet,
    sudo mkdir /home/front
    # set owner of new home folder,
    sudo chown -R front:front /home/front

    # switch to user,
    su - front

    # copy .bashrc, if not exists yet,
    cp /etc/skel/.bashrc ~front/
    cp /etc/skel/.profile ~front/

    # enable color,
    vi ~front/.bashrc
    # uncomment the line start with "force_color_prompt",

    # exit user
    exit
* 
* add to group 'dev',
    sudo usermod -a -G dev front
* change owner of web dir,
    sudo chown -R dev:dev /var/www
* change permission of web dir,
    chmod 775 $(find /var/www/html -type d)
    chmod 664 $(find /var/www/html -type f)
* 
* re-login as 'front'
    to make group take effect,
* 
* test
* 
* ok
* 

答案 7 :(得分:0)

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