Извините за основной вопрос – я разработчик .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.
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' чтобы группа вступила в силу, * * контрольная работа * * ОК *