Я относительно новичок в веб-разработке, поэтому проявите терпение.
Я в первую очередь разработчик 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 в каталоге») поможет нам в дальнейшем устранении неполадок. Тем не менее, при условии, что вам нужно предоставить только разрешения на выполнение для общественности ( или «другое»), с точки зрения безопасности все будет в порядке.