Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-04-04

apache2-mpm-itk

Как быть, если надо, чтобы веб-сервер Apache разные запросы отрабатывал от имени разных учетных записей? Эдакий Apache HTTPD sudo.

Вот, к примеру, у меня есть древний лаптоп, он работает торрентокачалкой и заодно, раз уж круглосуточно подключен к Интернет, хостит разные веб-службы. Apache HTTPD одна из них. Вопрос, почему бы не дать доступ к торрент хламу через HTTP? Делов-то, добавить в конфиг веб-сервера алиас и конфиг для папки. А не работает. Нет доступа, ибо файлы в папке доступны только для учетки «valik» а Apache работает то ли под рутом, то ли под «www-data».

Первая мысль — переписать права доступа на папку и файлы. Не выходит, ибо папка монтируется truecrypt-ом и система безопасности truecrypt-а не позволяет открыть доступ посторонним. Только владельцу. Надо как-то научить Apache прикидываться valik-ом.

И тут выходит на сцену
apache2-mpm-itk (just mpm-itk for short) is an MPM (Multi-Processing Module) for the Apache web server

mpm-itk allows you to run each of your vhost under a separate uid and gid—in short, the scripts and configuration files for one vhost no longer have to be readable for all the other vhosts.
mpm-itk is based on the traditional prefork MPM, which means it's non-threaded; in short, this means you can run non-thread-aware code (like many PHP extensions) without problems. On the other hand, you lose out to any performance benefit you'd get with threads, of course; you'd have to decide for yourself if that's worth it or not. You will also take an additional performance hit over prefork, since there's an extra fork per request.


Чтобы запросы к виртуалхосту Apache отрабатывались от имени «valik» надо сделать так
nano /etc/apache2/sites-available/alwaysglum
<VirtualHost *:80>
 AssignUserId valik root
...
valik — это имя пользователя, root — это имя группы.

Чтобы сработала директива AssignUserId, надо включить модуль apache2-mpm-itk
aptitude install apache2-mpm-itk

Вот так все просто.

Использованные материалы

Листинг конфига сайта
cat /etc/apache2/sites-available/alwaysglum
<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 ServerName alwaysgloom.sytes.net
 ServerAlias alwaysgloom.sytes.net
 AssignUserId valik root
 DocumentRoot /var/www/
 <Directory />
  Options None
  AllowOverride None
  Order allow,deny
 </Directory>
 <Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>
 <Directory /var/www/files/>
  Options FollowSymLinks
  AuthType Basic
  AuthUserFile /home/valik/.htpasswd
  AuthName "Alwaysglum restricted services"
  Require valid-user
 </Directory>
 Alias "/torr/" "/mnt/sams640/data/"
 <Directory /mnt/sams640/data/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  AuthType Basic
  AuthUserFile /home/valik/.htpasswd
  AuthName "Alwaysglum restricted services"
  Require valid-user
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log
 LogLevel warn
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

original post http://vasnake.blogspot.com/2013/04/apache2-mpm-itk.html

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)