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


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
Біжіть від цього хлопця і не озирайтеся.
користувач9517

Насправді не варіант ... дивіться коментарі до відповіді SvenW ...
Алекс Коплан

Відповіді:


13

Давайте розбимо його :

Щоб читати, виконувати та писати в каталозі, користувачеві, який запускає скрипт, потрібно:

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

Інші користувачі, що належать до однієї групи, повинні мати можливість виконувати файл php в каталозі, але не писати в нього (з очевидних причин); їм не обов’язково потрібно читати файли PHP. Тому нам потрібно надати лише дозволи на виконання:

1 = e (x) еккуте

Те саме для публіки. Насправді це все, що потрібно для зовнішніх користувачів, яким потрібно переглядати php та статичні файли:

1 = e (x) еккуте

Отже, мінімум повинен бути:

711

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

771

І це, мабуть, спрацює. Або це, або системний адміністратор змінить право власності на користувачі та групи на ці файли на користувача веб-сервера за замовчуванням (але НЕ ДОЗВІЛЬНІ!). Якщо це все ще не працює, зразок виводу дозволів (щось на кшталт "ls -la в каталозі") допоможе нам усунути цю проблему. Це сказано, що поки ви лише повинні надати доступ до виконання для публіки ( або "інше"), ви повинні бути в порядку з точки зору безпеки.


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
Алекс Коплан

також це vps не ділиться
Алекс Коплан

2
Ну, я намагаюся розібратися, які дозволи та права власності на ваші файли можуть бути передані серверу. Якщо це користувач, який не принаймні є членом www-dataгрупи, вам потрібно або змінити користувачів / групи після передачі, або дійсно використовувати 777дозволи. Але це безглуздо, ми не можемо вам допомогти таким чином.
Свен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.