LINUX.ORG.RU
ФорумAdmin

Apache client certificates & filesystem ACL


0

1

Как настроить аутентификацию по клиентским сертификатам - написано везде. При этом авторизация прописывается в конфиге апача - на каждую директорию или файл надо вписать кто имеет право доступа, а кто - нет.

А как сделать, чтобы для авторизации использовались права доступа, устанавливаемые в файловой системе?

смотрю на
http://httpd.apache.org/docs/2.2/mod/mod_authz_owner.html

и не понимаю, как он работает.

Вот у меня есть файл:
http;//my.host.ru/somefolder/somefile.htm
который лежит в
/var/www/localhost/docs/somefolder/somefile.htm

я хочу дать доступ пользователям Мише и Васе, и не дать Коле и Пете. И файл такой не один, а много разных, с разными необходимыми правами.

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

Так что ничего не остаётся, как использовать ACL (например от ext4?). Проблема в том, что я не понимаю - как.



Последнее исправление: StrongDollar (всего исправлений: 2)

Если я правильно понял вопрос, то нужно заставить процессы apache работать с разными uid и gid. Это можно сделать с помощью mpm-itk, и такой процесс apache будет иметь доступ только к тем файлам, к которым имеет доступ конкретный пользователь.

Komintern ★★★★★
()
Ответ на: комментарий от blind_oracle

Или какие ACL имеются в виду? Расширенные аля права NTFS?

ну вот я смотрю на
http://httpd.apache.org/docs/2.2/mod/mod_authz_owner.html

и не понимаю, как он работает.

Вот у меня есть файл:
http://my.host.ru/somefolder/somefile.htm
который лежит в
/var/www/localhost/docs/somefolder/somefile.htm

я хочу дать доступ пользователям Мише и Васе, и не дать Коле и Пете. И файл такой не один, а много разных, с разными необходимыми правами.

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

Так что ничего не остаётся, как использовать ACL (например от ext4?). Проблема в том, что я не понимаю - как.

StrongDollar
() автор топика
Ответ на: комментарий от Komintern

mpm-itk

«позволяет запускать скрипты, выполняемые вебсервером (например php в режиме как модуль apache) с правами пользователя-владельца виртуального хоста»

но мне-то надо не один хост каждому пользователю, а на уровне файлов...

StrongDollar
() автор топика
Ответ на: комментарий от Komintern

нет, мне не подойдет mod_authz_owner, потому что доступ к файлу должен иметь не один пользователь а несколько. По группе на файл делать тоже смысла нет. А с расширенными правами mod_authz_owner не работает (я посмотрел код):

static int check_file_owner(request_rec *r)
{
   ...
   apr_finfo_t finfo; // http://apr.apache.org/docs/apr/0.9/structapr__finfo__t.html
   ...
   status = apr_stat(&finfo, r->filename, APR_FINFO_GROUP, r->pool);
   ...
   status = apr_gid_name_get(&group, finfo.group, r->pool);
   ...
}

под расширенными правами я понимаю вот это:
http://sys-log.bencane.com/2012/05/acl-using-access-control-lists-on-linux/

StrongDollar
() автор топика
Ответ на: комментарий от StrongDollar

кстати говоря, пропатчить чтобы работало как тебе надо - не так и сложно. сам недавно патчил апачевский модуль. точнее дописывал.
а готового боюсь нету того что надо. хотя есть еще mod_auth_external, сам не юзал но выглядит универсально.

Komintern ★★★★★
()
Ответ на: комментарий от StrongDollar

то как мне потом сделать, чтобы проверка доступа к файлам тоже была через kerberos ?

Я хочу обозвать тебя нехорошим - ОЧЕНЬ нехорошим словом. И даже более - множеством слов. Да, они все нехорошие.

1. ACL на файловой системе применимы на уровне процесса, получающего доступ к файлу.

2. Веб-сервер (apache, да) работает под своим отдельным юзером (UID/GID)

3. Все сеансы «аутентификации» которые проводит Apache, приводят ТОЛЬКО К УСТАНОВКЕ СООТВЕТСТВУЮЩЕЙ ПЕРЕМЕННОЙ ОКРУЖЕНИЯ, и ни к чему более. Они никак не транслируются на уровень процесса.

Чтобы решить твою задачу так, как ты хочешь, тебе надо:

1. Запускать апач И ЕГО ВОРКЕРОВ под рутом

2. Написать модуль, который можно будет подключить в цепочку аутентификации так, чтобы он при успешной аутентификации вызывал set[e]uid/set[e]gid внутри воркера

3. Настроить апач так, чтобы после каждого выполнения воркер умирал (например, установит какой-нибудь requestsperchild=1)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Я хочу обозвать тебя нехорошим - ОЧЕНЬ нехорошим словом. И даже более - множеством слов. Да, они все нехорошие.

очень странное желание. тебя мало хвалят? не уважают? хочешь поговорить об этом?

у меня есть другой план:
1) запустить на другой виртуалке XSP
2) прокинуть туда трафик через SSLProxyEngine при помощи ReverseProxy

SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://inter.nal.si.te/
ProxyPassReverse / https://inter.nal.si.te/
CacheDisable *

3) внутри настроить распознавание клиентов по сертификатам:
http://www.mono-project.com/UsingClientCertificatesWithXSP
4) уже на нормальном языке дописать проверку прав на файлы
как-то так:
https://github.com/mono/mono/pull/369
https://github.com/mono/mono/pull/372

StrongDollar
() автор топика
Ответ на: комментарий от StrongDollar

Во-первых, твоя идея бредовая.

Во-вторых, без запуска «чего-то» (в данном случае XSP) под рутом у тебя нихрена работать не будет.

В третьих, «дописать на нормальном языке проверку прав на файлы» можно и модулем апача.

no-dashi ★★★★★
()

имхо для веб-приложений обычно делают виртуальную файловую систему с блэкджэком и своими ACL. То есть файлы лежат в фс, и к ним есть полный доступ у веб-приложения, а уже веб-приложение в базе хранит своего рода иерархию фс, дополнительные метаданные файлов, ACL, историю версий и тд. То есть возможно вам проще будет найти готовый правильный велосипед под свои нужды, чем пилить свой из подручных средств.

af5 ★★★★★
()
Ответ на: комментарий от af5

готовый правильный велосипед под свои нужды

и мне кажется, что готовый велосипед - это samba-шара с kerberos-аутентификацией

StrongDollar
() автор топика
Ответ на: комментарий от StrongDollar

У самбы есть ряд крупных недостатков, в сравнение с таким велосипедом как например Alfresco:
1) Ограничение длины пути, особенно если символы кирилицы (<256 символов при националных кодировках и <128 если UTF8), сие есть багофича нативных ФС и ни как не фиксится
2) В случае перезагрузки файлового сервера, так как документы открыты по сети, некоторый юзерский софт для работы с документами может наглухо зависнуть, что очень напрягает, если количество юзеров больше одного.
3) Версионирования документов у самбы опять же емнип нету

Но это я о своих задачах и предпочтениях

af5 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.