Вопрос: Мой администратор сервера хочет, чтобы я установил публичные права на запись в каталог


Я относительно новичок в веб-разработке, поэтому, пожалуйста, будьте терпеливы.

Я в первую очередь разработчик iPhone, но недавно сделал сайт для кого-то другого, использующего общий хостинг. Я мог бы писать в файлы на PHP на этом сайте отлично, не задумываясь о разрешениях.

Я занимаюсь развертыванием веб-службы для нового приложения, которое я создаю, но на самом деле это не происходит гладко. Самое важное отличие здесь в том, что я использую чужой сервер и просто имею доступ к FTP / БД.

В принципе, у меня есть загрузка файлов PHP, которые составляют мою CMS, например:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

Затем эти сценарии либо редактируют базу данных, либо файлы. Они могут взаимодействовать с БД прекрасно, однако мои сценарии не могут записываться в файловую систему. Например, они могут попытаться написать следующие файлы:

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

Это отлично работало на моей установке MAMP (локально), но после развертывания на сервере PHP извергал ошибки каждый раз, когда была предпринята попытка записи ... что-то вроде этого:

Не удалось открыть файл «../data/img/someimage.png» для записи.

Поэтому я отправил по электронной почте парня, который работает на сервере, и он вернулся, сказав:

Работает ли он с разрешения общественности? (777)

И это произошло, но я был очень осторожен с использованием общедоступных разрешений, поэтому отключил его сразу. Я отправил ему по электронной почте сообщение «как я могу писать свои PHP-скрипты с использованием стандартных пользовательских разрешений», и он сказал:

Оставьте его открытым, все будет хорошо

Я считаю, что это конфликт ip где-то в разрешении домена, но я не беспокоюсь об этом.

Затем я отправил ему по электронной почте сообщение «наверняка это небезопасно» или что-то в этом роде, и он ответил следующим образом:

реальность такова, что есть миллионы веб-сайтов, в том числе несколько, которыми я управляю, которые имеют 777 в разных папках, это всего лишь образ жизни.

Может ли кто-нибудь дать мне некоторое представление о решении, которое я мог бы ему дать? Или что я могу сделать, чтобы не использовать 777? Мне действительно не нравится идея о том, что любые папки на моем сайте / сервисе должны быть общедоступными.

Я был бы очень признателен за ваш совет, поскольку я очень мало знаю о веб-серверах.


9
2017-12-18 18:40


Источник


Убегайте от этого парня и не оглядывайтесь назад. - Iain
Не совсем вариант ... см. Комментарии к ответу SvenW ... - Alex Coplan


Ответы:


Давайте сломаем его:

Вам нужно, чтобы пользователь запускал скрипт для чтения, выполнения и записи в каталоге, поэтому он должен быть:

7 = (r) ead, (w) обряд, e (x) ecute

Другие пользователи, принадлежащие к одной группе, должны иметь возможность выполнять php-файл в каталоге, но не писать ему (по понятным причинам); они не обязательно должны читать файлы PHP. Поэтому нам нужно предоставить только разрешения на выполнение:

1 = e (x) ecute

То же самое для общественности. Фактически, это все, что вам нужно для внешних пользователей, которым необходимо просматривать php и статические файлы:

1 = e (x) ecute

Таким образом, минимальный минимум должен быть:

711

Я подтвердил вышеуказанные настройки своей собственной конфигурацией, поэтому он должен работать; однако это зависит от пользователя сети по умолчанию. Если вы загружаете логин, отличный от www, файлы и каталоги, вероятно, будут находиться под другим пользователем. В этом случае веб-пользователь по умолчанию может не иметь возможности читать или записывать файлы, принадлежащие вам. В этот момент вам, вероятно, потребуется добавить пользователя по умолчанию в вашу группу (sysadmin должен будет это сделать), а затем предоставить права на чтение, запись и выполнение пользователям, принадлежащим к группе:

771

И это, вероятно, сработает. Либо это, либо системный администратор изменяет права пользователя и группы этих файлов на пользователя веб-сервера по умолчанию (но НЕ РАЗРЕШЕНИЯ!). Если это все еще не сработает, выборка разрешений (что-то вроде «ls -la в каталоге») поможет нам устранить эту проблему дальше. Это говорит о том, что пока вам нужно предоставить разрешения на выполнение для общественности ( или «другое»), вы должны быть в порядке с точки зрения безопасности.


13
2017-12-18 21:02



Жаль, что я не смог бы удвоить. - Wesley
Проблема в том, что веб-сайт не должен писать файлы в своей собственной структуре, а не сами разрешения. - JamesRyan
Ты прав. В зависимости от данных вы, вероятно, захотите записать в файл за пределами общедоступного webroot. - Rilindo
Здесь я пишу /data folder - эта папка содержит PHP-скрипты, которые составляют мой веб-сервис JSON, и кучу изображений, используемых для контента, переданного в веб-службе (в /data/img папка) - Alex Coplan
Значит, изображения должны быть публичными? Это прояснило все. - Rilindo


Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

Этот парень идиот, и это полная глупость. Права доступа не имеют никакого отношения к добавлению IP или разрешению домена, он просто отбрасывает слова.

Учитывая качество этого «администратора», я бы рекомендовал разместить ваш сайт в другом месте, так как очень вероятно, что сайт администрируется очень плохо и небезопасно. Просто положить 777 разрешения на что-то, чтобы он работал, является верным признаком того, что он не понимает, что он делает.

Какие права доступа действительно необходимы, зависит от того, как система используется и настраивается, и что-то трудно сказать вам, не зная об этом.


18
2017-12-18 18:58



спасибо - моя мысль именно о разрешениях - у меня нет возможности разместить ее в другом месте, поскольку компания, которую я разрабатываю, не заплатит за нее, и рекомендовала мне этого парня и сказала, что они заставят его сделайте это бесплатно - от того, что я могу сказать, я просто убегал от одного из своих виртуальных серверов. Итак, как это нормально работает, как скрипт PHP работает как «пользователь» и, следовательно, может писать что-нибудь на сайте? - Alex Coplan
Ну, я бы проинформировал их о том, что они получают «бесплатно». У меня нет большого опыта работы с каким-либо общедоступным хостингом, поэтому я не могу комментировать это. Мои сайты запускают веб-серверы и папки Debian, которые должны быть доступны для записи, будут принадлежать www-data с 700 разрешений, но это вряд ли будет работать в вашем случае. - Sven♦
Я думаю, что они платят ему за свой основной сайт, поэтому, поэтому - если это какая-то помощь внизу страницы ошибок сервера, это говорит об этом Apache/2.2.9 (Debian) PHP/5.2.6-1 - Alex Coplan
также это vps не используется - Alex Coplan
Ну, я пытаюсь выяснить, какие разрешения и владельцы ваших файлов могут быть переданы на сервер. Если это пользователь, который не является, по крайней мере, членом www-data группе, вам необходимо либо изменить пользователей / группы после передачи, либо использовать 777разрешения. Но это бессмысленно, мы не можем вам помочь. - Sven♦