Как быть, если надо,
чтобы веб-сервер 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> |
Комментариев нет:
Отправить комментарий