Я относительно новичок в веб-разработке, поэтому, пожалуйста, будьте терпеливы.
Я в первую очередь разработчик для 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? Мне действительно не нравится идея, чтобы какие-либо папки на моем сайте / сервисе были общедоступными для записи.
Я был бы очень признателен за ваш совет, поскольку я очень мало знаю о веб-серверах.
источник
Ответы:
Давайте разберемся с этим :
Вам нужен пользователь, запускающий скрипт для чтения, выполнения и записи в каталог, поэтому он должен быть:
7 = (R) EAD, (W) обряд, E (X) Ecute
Другие пользователи, принадлежащие к той же группе, должны иметь возможность выполнять php-файл в каталоге, но не записывать в него (по понятным причинам); им не обязательно читать файлы PHP. Поэтому нам нужно предоставить только права на выполнение:
1 = e (x) ecute
То же самое для публики. Фактически это все, что вам нужно для внешних пользователей, которым нужно просматривать php и статические файлы:
1 = e (x) ecute
Таким образом, минимум должен быть:
711
Я подтвердил вышеуказанные настройки своей собственной конфигурацией, поэтому она должна работать; однако, это по умолчанию для веб-пользователя. Если вы загружаете с логином, отличным от www, файлы и каталоги, вероятно, будут принадлежать другому пользователю. В этом случае веб-пользователь по умолчанию может не иметь возможности читать или записывать файлы, которые принадлежат вам. В этот момент вам, вероятно, нужно добавить веб-пользователя по умолчанию в вашу группу (это должен сделать системный администратор), а затем дать разрешения на чтение, запись и выполнение пользователям, принадлежащим к этой группе:
771
И это, вероятно, сработает. Либо так, либо системный администратор изменит пользователя и группу владельцев этих файлов на пользователя веб-сервера по умолчанию (но НЕ РАЗРЕШЕНИЯ!). Если это по-прежнему не работает, пример выходных данных разрешений (что-то вроде «ls -la в каталоге») поможет нам устранить эту проблему в дальнейшем. Тем не менее, до тех пор, пока вам нужно только предоставить права на выполнение для публики ( или «другое»), с точки зрения безопасности у вас все должно быть в порядке.
источник
/data
папку - эта папка содержит сценарии PHP, которые составляют мой веб-сервис JSON, и набор изображений, используемых для контента, передаваемого в веб-сервисе (в/data/img
папке)Этот парень идиот, и это полная чушь. Права доступа не имеют ничего общего с IP-адресом или разрешением домена, он просто отбрасывает слова.
Учитывая качество этого «администратора», я бы рекомендовал разместить ваш сайт в другом месте, так как очень вероятно, что сайт администрируется очень плохо и небезопасно. Просто наложение
777
разрешений на что-то, чтобы это работало, является верным признаком того, что он немного не понимает, что он делает.Какие права доступа действительно необходимы, зависит от того, как система используется и настроена, и довольно сложно сказать вам что-то, не зная об этом.
источник
www-data
с700
разрешениями, но в вашем случае это вряд ли сработает.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
группы, вам необходимо либо изменить пользователей / группы после передачи, либо использовать777
разрешения. Но это бессмысленно, мы не можем вам помочь.