Назад | Перейти на главную страницу

Администратор моего сервера хочет, чтобы я установил общедоступные разрешения на запись в каталог

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

Я в первую очередь разработчик 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? Мне действительно не нравится идея о том, что какие-либо папки на моем сайте / сервисе доступны для публичной записи.

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

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 разрешения на что-либо, чтобы это работало, - верный признак того, что он немного не понимает, что делает.

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

Давайте разберемся:

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

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

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

1 = e (x) ecute

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

1 = e (x) ecute

Итак, минимум должен быть:

711

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

771

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