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

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

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

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

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

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

Solutions Collecting From Web of "Каковы правильные разрешения для папки для загрузки с PHP / Apache?"

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

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

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

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

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

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

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

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

6 = читать + писать

  • первый номер: владелец
  • второе число: группа
  • третье число: другие пользователи

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

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

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

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

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

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

Основываясь на ответе от @Ryan Ahearn , следующее – это то, что я сделал на Ubuntu 16.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 / главная / передняя
     # установить владельца новой домашней папки,
     sudo chown -R передний: передний / задний / передний

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

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

     # включить цвет,
     vi ~ front / .bashrc
     # раскомментировать начало строки с помощью «force_color_prompt»,

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