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

Извините за основной вопрос - я разработчик .NET и не имею большого опыта работы с настройками LAMP.

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

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

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

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

14.08.2008 13:22:25
8 ОТВЕТОВ
РЕШЕНИЕ

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

42
14.08.2008 13:32:55
Не забывайте, что вы можете избежать тупых магических чисел, отправляясь в путь chmod u+rwX,go+r theFolder!
Kzqai 10.11.2014 21:55:39
это, вероятно, не то, что он думает, потому что он загружает файлы так, как пользователь сайта загружает файлы. там вам нужны разрешения 777
Luka Govedič 19.01.2016 13:51:40
папка загрузки должна содержать только файлы jpg, gif и т. д. Конечно, нет, скажем, php-файлы, загруженные кем-то, или файлы сценариев оболочки. Есть ли способ, чтобы сервер apache не выполнял файлы php в папке загрузки?
Toskan 14.03.2016 20:13:00

Или хотя бы 766.

  • читать = 4
  • написать = 2
  • выполнить = 1

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

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

  • первый номер: владелец
  • второй номер: группа
  • третий номер: другие пользователи
12
14.08.2008 13:26:27
Разве 766 в папке не позволят другим людям загружать туда файлы и вредоносный код тоже?
fuddin 20.12.2012 10:23:13
отключите php / или другое выполнение скрипта в папке загрузок
Ravinder Payal 23.04.2017 07:19:09

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

chcon -t tmp_t загружает

1
14.08.2008 13:43:36

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

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

9 раз из 10 755 является идеальным разрешением для этого - поскольку единственным пользователем, который может изменять файлы, будет веб-сервер. Измените это на 775 с вашим пользователем ftp в группе, если вам действительно нужно это изменить.

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

14
7.06.2013 13:57:07

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

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

1
27.02.2012 06:11:53

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

0
13.01.2016 11:21:06

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

3
12.02.2016 15:17:52

Основываясь на ответе @Ryan Ahearnниже, я сделал Ubuntu16.04, чтобы создать пользователя, frontкоторый имеет разрешение только на веб-каталог nginx /var/www/html.

шаги:

* предварительные шаги:
    * базовая подготовка сервера,
    * создать пользователя 'dev'
        который будет владельцем "/ var / www / html",
    * 
    * установить nginx,
    * 
* 
* создать пользователя 'front'
    sudo useradd -d / home / front -s / bin / bash front
    sudo passwd front

    # создать домашнюю папку, если она еще не существует,
    sudo mkdir / home / front
    # установить владельца новой домашней папки,
    sudo chown -R спереди: спереди / дома / спереди

    # переключиться на пользователя,
    су - фронт

    # copy .bashrc, если еще не существует,
    cp /etc/skel/.bashrc ~ front /
    cp /etc/skel/.profile ~ front /

    # включить цвет,
    vi ~ front / .bashrc
    # раскомментируйте начало строки с "force_color_prompt",

    # выход пользователя
    Выход
* 
* добавить в группу 'dev',
    sudo usermod -a -G фронт разработчика
* сменить владельца веб-каталога,
    sudo chown -R dev: dev / var / www
* изменить разрешение веб-каталога,
    chmod 775 $ (найти / var / www / html -типа d)
    chmod 664 $ (найти / var / www / html -type f)
* 
* войдите как «фронт»
    чтобы группа вступила в силу,
* 
* контрольная работа
* 
* ОК
* 

0
7.06.2017 03:26:42