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