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

StackOverflow https://stackoverflow.com/questions/10990

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основываясь на ответе от @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
* 

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top