Оновлено резюме
Каталог / var / www є власником, root:root
що означає, що ніхто не може ним користуватися, і це абсолютно марно. Оскільки всі ми хочемо, щоб веб-сервер насправді працював (і ніхто не повинен входити в систему як "root"), то нам потрібно це виправити.
Лише двом організаціям потрібен доступ.
Усі PHP / Perl / Ruby / Python потребують доступу до папок і файлів, оскільки вони створюють багато з них (тобто
/uploads/
). Ці мови сценаріїв повинні працювати під nginx або apache (або навіть якоюсь іншою подією, як FastCGI для PHP).Розробники
Як вони отримують доступ? Я знаю, що хтось десь робив це раніше. З однак багато мільярдів веб-сайтів там, ви б могли подумати, що буде більше інформації на цю тему.
Я знаю, що 777 є повноцінним дозволом для читання / запису / виконання власника / групи / іншого. Так що це не здається, що потрібно правильно , оскільки це дає випадкові користувачам повний доступ.
Які дозволи потрібно використовувати, /var/www
щоб:
- Керування джерелами, як git або svn
- Користувачі в такій групі, як "веб-сайти" ( або навіть додані до "www-data" )
- Сервери типу apache або lighthttpd
- І PHP / Perl / Ruby
чи можуть усі там читати, створювати та запускати файли (та каталоги)?
Якщо я маю рацію, сценарії Ruby та PHP не "виконуються" безпосередньо, а передаються інтерпретатору. Тож немає необхідності в дозволі на виконання файлів у /var/www
...? Тому, схоже, правильний дозвіл був би, chmod -R 1660
який би робив
- всі файли, якими можна ділитися цими чотирма об'єктами
- всі файли не виконуються помилково
- блокувати всіх інших із каталогу повністю
- встановіть режим дозволу "липким" для всіх майбутніх файлів
Це правильно?
Оновлення 1: Я щойно зрозумів, що файли та каталоги можуть потребувати різних дозволів - я вже говорив про файли вище, тому я не впевнений, якими будуть потрібні дозволи для каталогу.
Оновлення 2: Структура папок /var/www
різко змінюється, оскільки одне з чотирьох вищезазначених об'єктів завжди додає (а іноді і видаляє) папки та підпапки на багато рівнів. Вони також створюють та видаляють файли, до яких іншим 3 об’єктам може знадобитися доступ для читання / запису. Тому в дозволах потрібно виконати чотири вищезазначені дії як для файлів, так і для каталогів. Оскільки жоден з них не потребує дозволу на виконання (див. Питання про ruby / php вище), я б припустив, що rw-rw-r--
дозвіл буде усім необхідним і повністю безпечним, оскільки цими чотирма об’єктами управляє довірений персонал (див. №2) та всі інші користувачі на у системі є лише доступ для читання.
Оновлення 3: Це для персональних машин розвитку та серверів приватних компаній. Жодних випадкових "веб-клієнтів", як спільний хост.
Оновлення 4: Ця стаття від slicehost здається найкращою для пояснення того, що потрібно для налаштування дозволів для вашої папки www. Однак я не впевнений, який користувач або група apache / nginx з PHP OR svn / git запускаються як і як їх змінити.
Оновлення 5: Я (я думаю) нарешті знайшов спосіб змусити це все працювати (відповідь нижче). Однак я не знаю, чи це правильний і БЕЗПЕЧНИЙ спосіб зробити це. Тому я розпочав щедроту. Перемагає людина, яка має найкращий метод забезпечення та керування www-каталогом.