2008-08-14 8 views
43

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

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

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

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

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

ответ

36

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

12

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

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

7 = Чтение + запись + исполнение

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

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

не 766 на папку позволит другим людям загружать файлы там и вредоносный код тоже? – 2012-12-20 10:23:13

+0

отключить php/или другое выполнение скрипта в вашей папке uploads – 2017-04-23 07:19:09

0

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

chcon -t tmp_t загрузки

13

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

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

9 раз из 10, 755 - идеальное разрешение для этого - так как единственным пользователем с возможностью изменения файлов будет веб-сервер. Измените это на 775 с вашим ftp-пользователем в группе, если вам действительно нужно изменить это.

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

1

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

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

0

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

1

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

0

На основании ответа от @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 
* 

 Смежные вопросы

  • Нет связанных вопросов^_^