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

9

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

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

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

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

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

Алекс Коплан
источник
12
Убегай от этого парня и не оглядывайся назад.
user9517
Не совсем вариант ... см. Комментарии к ответу SvenW ...
Алекс Коплан

Ответы:

13

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

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

7 = (R) EAD, (W) обряд, E (X) Ecute

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

1 = e (x) ecute

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

1 = e (x) ecute

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

711

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

771

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

Rilindo
источник
2
Хотелось бы, чтобы я проголосовал дважды.
Уэсли
Проблема в том, что веб-сайт не должен записывать файлы в пределах своей структуры, а не самих разрешений.
JamesRyan
Вы правы. В зависимости от данных, вы, вероятно, захотите записать файл вне публичного рута.
Рилиндо
Здесь я пишу в /dataпапку - эта папка содержит сценарии PHP, которые составляют мой веб-сервис JSON, и набор изображений, используемых для контента, передаваемого в веб-сервисе (в /data/imgпапке)
Алекс Коплан
Значит, изображения должны быть публичными? Это прояснило вещи.
Рилиндо
18
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разрешений на что-то, чтобы это работало, является верным признаком того, что он немного не понимает, что он делает.

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

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