Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > Не получается настроить права доступа для apache.


Автор: ksicom 10.11.2006, 15:20
Не получается настроить права доступа для apache.

httpd работает из-под пользователя apache (дочерние процессы).

Система CentOS 4.4

Сейчас домашние каталоги настроены так для каждого пользователя:
drwx--x--- 5 user1 user1 4096 Nov 8 19:33 user1

у каждого пользователя есть подкаталог:
drwxrwxr-x 3 user1 user1 4096 Nov 9 21:15 www

апач входит в следующие группы:
[root@zzz web1]# groups apache
apache : apache user1 user2 user3

в httpd.conf настроен UserDir
UserDir www

т.е. сервер по адресам
http://zzz/~userX отдаёт содержимое каталога /home/userX/www

И всё бы ничего, но:
некоторые web приложения сами создают каталоги и файлы.
На вновь создаваемые каталоги/файлы apache само собой ставит владельца apache:apache

chown в Red Hat по умолчанию отключён для всех кроме root и включать его честно говоря не хочется.

Поэтому когда пользователь пытается стереть созданный апачем файл/подкаталог - он этого сделать не может т. к. он ему не принадлежит. chown тоже не работает. Остаётся только использовать права root, что очень плохо.

Как такую ситуацию просто разрулить чего-то никак не соображу.

И вообще можно apache заставить на базе поступившего URL(фактически на базе имени домашнего каталога)  создавать дочерний процесс с конкретным UIDом? (наподобие proftpd)

Автор: Sun 10.11.2006, 16:42
Во первых нужно для каждого юзера создать свой VrtualHost, а не гонять всех из под одного. Во вторых есть такая вещь как suExec, которая запускает CGI и SSI из под юзера - владельца документ рута. Подробней тут
http://httpd.apache.org/docs/1.3/suexec.html

Если речь идет о PHP, то его можно запускать либо как модуль Апача, тогда и все скрипты будут выполнены под процессом Апача, либо как CGI, тогда можно использовать suExec. Советую еще это почитать
http://malik.elcat.kg/apache-suexec-php.shtml

Автор: ksicom 10.11.2006, 19:31
Это всё работает только на виртуальных серверах (вроде).
А мне надо, чтобы просто домашние каталоги раздавал. Без виртуальных серверов на каждого пользователя.

Автор: Sun 10.11.2006, 21:37
Ну тогда придеться писать свой модуль к Апачу, который будет фильтровать запросы по URL и выполнять под нужным юзером. Или найти кто уже написал  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)