Каковы надлежащие разрешения для папки загрузки с PHP / Apache? - PullRequest
46 голосов
/ 14 августа 2008

Извините за основной вопрос - я разработчик .NET и не очень разбираюсь в настройках LAMP.

У меня есть сайт PHP, который позволяет загружать файлы в определенную папку. Мне сказали, что эта папка должна принадлежать пользователю веб-сервера, чтобы процесс загрузки работал, поэтому я создал папку и затем установил права доступа следующим образом:

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

Единственная проблема сейчас заключается в том, что пользователь FTP вообще не может изменять загруженные файлы.

Есть ли настройка разрешений, которая позволит мне по-прежнему загружать файлы, а затем изменять их позже как пользователь, отличный от пользователя веб-сервера?

Ответы [ 8 ]

40 голосов
/ 14 августа 2008

Вы можете создать новую группу, в которой пользователь apache и пользователь FTP будут являться участниками, а затем сделать разрешение для папки загрузки 775. Это должно дать пользователям apache и FTP возможность записи в файлы в папке, но не позволяйте никому изменять их.

14 голосов
/ 14 августа 2008

Я бы пошел с ответом Райана, если вы действительно хотите это сделать.

Как правило, в среде * nix вы всегда хотите ошибиться, выдавая как можно меньше разрешений.

9 раз из 10, 755 является идеальным разрешением для этого - поскольку единственным пользователем, который может изменять файлы, будет веб-сервер. Измените это на 775 с вашим пользователем ftp в группе, если вам ДЕЙСТВИТЕЛЬНО нужно изменить это.

Поскольку вы новичок в php по собственному желанию, вот полезная ссылка для повышения безопасности службы загрузки: move_uploaded_file

12 голосов
/ 14 августа 2008

Или, по крайней мере, 766.

  • read = 4
  • запись = 2
  • execute = 1

7 = чтение + запись + выполнение

6 = чтение + запись

  • первый номер: владелец
  • второй номер: группа
  • третий номер: другие пользователи
1 голос
/ 12 февраля 2016

Я бы поддержал идею создания группы ftp, которая будет иметь права на загрузку. Однако я не думаю, что нужно давать разрешение 775. 7 обозначает чтение, запись, выполнение. Обычно вы хотите разрешить определенным группам читать и писать, но в зависимости от случая выполнение может не потребоваться.

1 голос
/ 27 февраля 2012

Важно, чтобы у пользователя и группы apache был минимальный доступ read, а в некоторых случаях execute. В остальном вы можете дать 0 доступ.

Это самая безопасная настройка.

1 голос
/ 14 августа 2008

Я добавлю, что если вы используете SELinux, вам нужно убедиться, что тип контекста равен tmp_t. Это можно сделать с помощью утилиты chcon

загрузка chcon -t tmp_t

0 голосов
/ 07 июня 2017

Основываясь на ответе от @Ryan Ahearn, ниже я сделал Ubuntu 16.04 для создания пользователя front, который имеет разрешение только для веб-каталога nginx /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
* 

0 голосов
/ 11 июля 2014

Помните также CHOWN или chgrp папку вашего сайта. Попробуйте myusername# chown -R myusername:_www uploads

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...