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

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

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

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

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

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

8 ответов

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

    • read = 4
    • write = 2
    • execute = 1

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

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

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

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

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

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

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

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

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

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

    Это самая безопасная установка.

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

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

    Лестница:

    * предварительные шаги:
     * базовая подготовка сервера,
     * создать пользователя "dev"
     который будет владельцем "/var/www / html",
     * 
     * установка nginx,
     * 
    * 
    * создать пользователя 'front'
     sudo useradd-d /главная/фронт-s /bin/bash фронт
     sudo passwd спереди
    
     # создать домашнюю папку, если она еще не существует,
     sudo mkdir / главная / фронт
     # установить владельца новой домашней папки,
     sudo chown-R фронт: фронт / главная / фронт
    
     # переключиться на пользователя,
     Су-фронт
    
     # копия. bashrc, если еще не существует,
     cp / etc/skel/.bashrc ~фронт/
     cp / etc/skel/.профиль ~спереди/
    
     # включить цвет,
     vi ~front/.bashrc
     # раскомментировать начало строки с " force_color_prompt",
    
     # пользователь выхода
     выход
    * 
    * добавить в группу "dev",
     sudo usermod-A-G dev фронт
    * сменить владельца web dir,
     sudo chown-R dev:dev / var / www
    * изменение разрешения web dir,
     chmod 775 $(find/var/www / html-type d)
     chmod 664 $(find/var/www / html-type f)
    * 
    * повторно войти в систему как "фронт"
     чтобы группа вступила в силу,
    * 
    * испытание
    * 
    * ладно
    *