Каковы надлежащие разрешения для папки загрузки с помощью PHP / Apache?
Вопрос
Извините за основной вопрос - я .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 *