Apache, suexec, PHP, suPHP


13

Хоча я, як користувач Linux , мені комфортно , мій адміністратор Linux трохи слабкий. Таким чином, я тут шукаю поради щодо сервера CentOS, який я збираюся створити.

Мені потрібно налаштувати веб-сервер Apache2 для кількох наших клієнтів. Я хочу, щоб веб-вміст кожного клієнта USERDIRзнаходився під його домашнім каталогом ( в апаш.конф, правда?) Для статичних HTML-сайтів. Я хочу, щоб Apache запускався як клієнт ( suexec?). Деякі з їхніх матеріалів будуть PHP-додатками, і я маю на собі враження, що тоді захочу переглянути suphp.

Тому я хочу виглядати невеликою версією спільної веб-хостингової компанії. З огляду на , як часто ті є я думав , що легко знайти хороший струм як для керівництва по налаштуванню все це вгору , але до сих пір у мене було дуже мало удачі. Я підозрюю, що мої пошукові слова вимкнено.

Тож на запитання (не соромтесь відповісти на будь-які або всі):

  1. У когось є міцні посилання на поточні / сучасні путівники, які допомогли б мені все це налаштувати? Ні, сайт документації з апашами не є керівництвом ;-)
  2. Оскільки у мене є сукупність статичних сайтів та PHP-програм, я хочу / потребую встановити як suexec, так і suphp? Якщо так, чи це вводить якісь виклики, про які я маю знати?
  3. Чи варто дивитись на інші варіанти замість suexec та suphp?

Я планую надати кінцевим користувачам SSH, SFTP або SCP доступ до своїх матеріалів (якщо це на щось впливає).

Заздалегідь дякую за вашу допомогу.

[Редагувати] Я повинен був згадати про це раніше: Одна з ключових цілей мого прагнення переслідувати спільного провайдера хостингу, пов’язаного з файловими документами та правами власності. Мені дуже хотілося б уникати навчання користувачів про необхідність змінювати такі речі, щоб побачити їх доповнення / зміни.

Відповіді:


15

Використовуючи suexec та suphp, застосовують інший тип поділу привілеїв, ніж за замовчуванням.

За замовчуванням - відокремити дозвіл користувача від веб-сервера. Тобто користувачеві належать файли, і він повинен надати веб-серверу дозвіл на їх перегляд та зміну.

Модель suexec / suphp полягає в тому, що веб-сервер (при запуску скриптів) працює під обліковим записом користувача, тому веб-сайт має дозвіл робити все, на що має дозвіл користувач. Певною мірою це видаляє поділ між користувачем та веб-сервером, але в обмін на нього застосовується РІЗНИЙ поділ: тобто між веб-сайтом одного користувача та веб-сайтом іншого користувача в одному і тому ж полі.

За замовчуванням PHP завжди працює під обліковим записом користувача Apache, тому PHP-скрипти одного веб-сайту можуть отримувати доступ до будь-яких файлів, які можуть використовувати PHP-скрипти іншого сайту. Тому, якщо один обліковий запис на сервері зламається, зараза може поширитися на інші. SuPHP перешкоджає цьому.

Ні suexec, ні suphp не вплинуть на те, як apache обслуговує статичний контент . Усі старі правила досі діють. Натомість suexec та suphp змінюють обліковий запис, під яким працюватимуть CGI та PHP (відповідно). Suexec робить виконувану програму CGI за допомогою акаунта власника, тоді як SuPHP робить сценарії PHP запускатись під обліковим записом власника.

Suexec і SuPHP не обов'язково кращі . Вони просто різні . Вони не заважають зламати веб-сайт (і, можливо, може полегшити його злому), але вони запобігають поширенню компромісу на одному сайті на всі інші. Для адміністратора сайту ця ізоляція, мабуть, важливіша, саме тому деякі спільні хостингові системи роблять suexec і suphp за замовчуванням.

Одним з надзвичайно поширених "gotcha" є те, що SuPHP перевіряє право власності та дозволи скрипту перед його запуском, і поверне помилку 500, якщо дозволи не відповідають.

Зокрема:

  • Власник і група файлу повинні відповідати власнику веб-сайту (як налаштування в конфігурації apache)
  • Файл не повинен бути доступним для запису у всьому світі
  • Батьківський каталог не повинен бути доступним для запису у всьому світі

Отже, знаючи, що я хочу наслідувати спільну модель хостингу (як ви вказали, утримуючи користувачів один від одного), це модель suexec / suphp так, як я хочу піти, чи вважаєте, що є кращі варіанти? Я також відредагував публікацію, щоб вказати, що одна з головних цілей - уникнути навчання користувачів про необхідність змінювати файлові пристрасті або власників, щоб побачити їх зміни чи доповнення.
Chris_K

2
suexec / suphp - це гарне рішення для того, що ви хочете.
tylerl

Я віддаю перевагу suphp до suexec. Я думаю, це безпечніше.
Владислав Раструсний

@FractalizeR: Зазвичай ви обидва використовуєте одночасно. SuPHP - це для PHP, suexec - для CGI. Ви можете запустити PHP через suexec, запустивши PHP як CGI, але це трохи непотрібно, оскільки існують кращі (більш безпечні та ефективніші) параметри для PHP.
tylerl

@tylerl: Дуже дякую за вашу відповідь. Які безпечніші / ефективніші рішення для PHP ви посилаєтесь?
Бенджамін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.