Секретные записки WEB-программиста




100mbru, bitrix, CentOS, cms, drupal, java, joomla, LAMP, linux, mysql, nicru, Open-Source, php, Red Hat, seo, Typo3, ubuntu, win, windows, авто, администрирование, алгоритмы, алкоголь, бизнес, битрикс, видео, военмех, выборы, германия, джино, домены, интересности, исследования, картинки, кино, компьютеры, ливия, магазин, маразм, мастерхост, обработка-изображений, пейнтбол, политика, политэкономия, прикольное-видео, программирование, путешествия, работа, религия, рунет, сайтостроение, сео, сми, технологии, украина, форум, хиханьки, холивары, хостинг

Apache: Запуск сайтов от разных пользователей

16.03.2015

> В чем полезность этого?

  • Безопасность. - Взлом одного из ваших сайтов никогда не приведет к взлому всей системы или других сайтов, стоящих рядом.
  • Расширяемость. - Теперь мы можем отдать права на именно эту папку с сайтом своему программисту, не открывая других сайтов и тем более всей системы.

Поехали:
1. Итак, установим модуль apache, который позволит запускать процессы под разными пользователями, в зависимости от домена.

apt-get install apache2-mpm-itk

2. Apache будет запускать наш сайт от нового пользователя. Создадим этого пользователя.

useradd -d/opt/www/site.ru -s/bin/bash webmaster-site

passwd webmaster-site

3. Но скорее всего доступ к сайту необходим будет не только этому пользователю. Как минимум, если есть nginx - его пользователь тоже должен иметь доступ. Для этого создадим группу. И сразу добавим в нее нашего пользователя.

groupadd site-group

usermod -a -Gsite-group webmaster-site

4. Редактируем конфиг apache от нашего сайта.

Ориентировочно должен лежать тут: /etc/apache2/sites-available/site.ru .

Добавляем:

AssignUserId webmaster-site site-group

php_admin_value open_basedir "/opt/www/letswow.ru:/tmp"

# Можно не давать доступ сайту к /tmp и создать свою tmp для каждого сайта.

Но некоторые сайты откажутся работать в такой конфигурации

# php_admin_value upload_tmp_dir "/opt/www/letswow.ru/tmp"

# php_admin_value session.save_path "/opt/www/letswow.ru/tmp"

5. Проследите что у apache пользователь по-умолчанию и не совпадает не с одним из созданным под сайты. Лучше всего ничего не трогать и оставить стандартного пользователя www-data.

6. Меняем права на папку с сайтом. Подробнее о правах на файлы рассказано тут: http://sharm-blog.ru/ web -chmod-chown.html

chown -R www-data:site-group /opt/www/site.ru;

find /opt/www/site.ru -type f -exec chmod 664 {} ;

find /opt/www/site.ru -type d -exec chmod 2775 {} ;

7. Если используете nginx для записи, или есть другие сервисы/пользователи, которым нужен доступ к сайту на запись — самое время их добавить в группу!

usermod -a -Gsite-group nginx-user