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

azpvetkf  于 2022-11-16  发布在  Apache
关注(0)|答案(8)|浏览(346)

很抱歉问这个基本问题-我是一个.NET开发人员,对LAMP设置没有太多经验。
我有一个PHP站点,它允许上传到一个特定的文件夹。我被告知这个文件夹需要由Web服务器用户拥有才能进行上传,所以我创建了这个文件夹,然后设置了如下权限:

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

现在唯一的问题是FTP用户根本不能修改上传的文件。
是否存在允许我以Web服务器用户以外的用户身份上载文件并在以后修改文件的权限设置?

vof42yt1

vof42yt11#

您可以创建一个新组,将apache用户和FTP用户都作为组成员,然后将upload文件夹的权限设置为775。这样给予apache和FTP用户都可以写入文件夹中的文件,但其他用户无法修改这些文件。

s71maibg

s71maibg2#

如果你真想这么做我会同意瑞安的答案。
一般来说,在 *nix环境中,您总是希望放弃尽可能少的权限。
10次中有9次,755是最理想的权限--因为唯一有能力修改文件的用户将是Web服务器。如果您真的需要更改,请将此权限更改为775,并将您的ftp用户与组一起更改。
既然你自己承认你是php新手,这里有一个有用的链接可以提高你上传服务的安全性:move_uploaded_file

axzmvihb

axzmvihb3#

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

muk1a3rh

muk1a3rh4#

我还要补充一点,如果您使用的是SELinux,则需要确保类型上下文为tmp_t。您可以使用chcon实用程序来完成此操作
chcon -t临时上载

9njqaruj

9njqaruj5#

重要的是,apache用户和组应该具有最低read访问权限,在某些情况下具有execute访问权限。对于其余用户和组,您可以给予0访问权限。
这是最安全的设置。

7y4bm7vi

7y4bm7vi6#

chmod -R 775 uploads/
chown -R www-data uploads/

重要添加到web用户公共组ubuntu www-data标准

llmtgqce

llmtgqce7#

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

jckbn6z7

jckbn6z78#

根据@Ryan Ahearn的回答,我在Ubuntu 16.04上创建了一个用户front,该用户只拥有nginx的web目录/var/www/html的权限。

步骤:

* 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
*

相关问题