Извините за основной вопрос - я разработчик .NET и не имею большого опыта настройки LAMP.
У меня есть сайт PHP, который позволяет загружать файлы в определенную папку. Мне сказали, что эта папка должна принадлежать пользователю веб-сервера, чтобы процесс загрузки работал, поэтому я создал папку, а затем установил разрешения как таковые:
chown apache:apache -R uploads/
chmod 755 -R uploads/
Единственная проблема сейчас заключается в том, что пользователь FTP вообще не может изменять загруженные файлы.
Есть ли параметр разрешения, который позволит мне по-прежнему загружать файлы, а затем изменять их позже как пользователь, отличный от пользователя веб-сервера?






Вы можете создать новую группу, в которой будут участвовать как пользователь apache, так и пользователь FTP, а затем сделать разрешение для папки загрузки 775. Это должно дать пользователям apache и FTP возможность записывать файлы в папке, но оставить всех остальных от их изменения.
вероятно, он не об этом думает, потому что он думает о загрузке файлов так же, как пользователь веб-сайта загружает файлы. там нужны разрешения 777
папка загрузки должна содержать только файлы jpg, gif и т. д. Конечно, не, скажем, файлы php, загруженные кем-то, или файлы сценариев оболочки. Есть ли способ избежать того, чтобы сервер apache выполнял файлы php в папке загрузки?
@Toskan, чтобы не запускать php-файлы в папке загрузки, я обычно так и делаю. создайте файл .htaccess и поместите в него эту строку: php_flag engine off
в этом случае злоумышленник может просто перезаписать .htaccess, загрузив его сам
Я добавлю, что если вы используете SELinux, вам необходимо убедиться, что контекст типа tmp_t. Это можно сделать с помощью утилиты chcon.
chcon -t tmp_t uploads
Я бы согласился с ответом Райана, если вы действительно этого хотите.
В общем, в среде * nix вы всегда хотите ошибиться, отдавая как можно меньше разрешений.
В 9 случаях из 10 755 является идеальным разрешением для этого, поскольку единственным пользователем, имеющим возможность изменять файлы, будет веб-сервер. Измените это значение на 775 с вашим пользователем ftp в группе, если вам ДЕЙСТВИТЕЛЬНО нужно это изменить.
Поскольку вы новичок в php по собственному признанию, вот полезная ссылка для повышения безопасности вашей службы загрузки:
move_uploaded_file
Важно то, что пользователь и группа apache должны иметь минимальный доступ read и в некоторых случаях доступ execute. В остальном вы можете предоставить доступ 0.
Это наиболее безопасная настройка.
Помните также CHOWN или chgrp в папке вашего веб-сайта. Попробуйте myusername# chown -R myusername:_www uploads
Я бы поддержал идею создания ftp-группы, которая будет иметь права на загрузку. Однако я не считаю необходимым давать разрешение 775. 7 означает чтение, запись, выполнение. Обычно вы хотите разрешить определенным группам читать и писать, но в зависимости от случая выполнение может не потребоваться.
Основываясь на ответе @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
*
Не забывайте, что вы можете избежать тупых магических чисел, перейдя на
chmod u+rwX,go+r theFolder!