Welcome! Log In Create A New Profile

Advanced

Re: динамический dav methods $DAV;

Maxim Dounin
April 14, 2015 05:44PM
Hello!

On Tue, Apr 14, 2015 at 03:38:11PM -0400, itcod wrote:

> "Реальнее - использовать средства контроля доступа, см. выше."
>
> Максим спасибо.
> Из всех перечисленных вами средств похоже только limit_except по описанию
> может раздельно влиять
> на методы применяемые в WEBDAV (DELETE, MKCOL, COPY, MOVE, OPTIONS,
> PROPFIND)

Вам кажется. Контроль доступа в зависимости от метода можно
делать, помимо limit_except, ещё как минимум с помощью директив
модуля rewrite:

if ($request_method = POST) {
return 403;
}

Не говоря уже о выгрузке логики доступа в скриптовые языки (perl,
тот же lua) или вообще на бекенды с помощью auth_request.

> Задача тривиальна при изменении переменной (она изменяется из программы lua)
> разрешить или блокировать метод GET. Создал для проверки конструкцию
>
> set $limit_get all;
> limit_except GET {
> deny $limit_get all;
> }
> Получил ошибку:
> nginx: [emerg] invalid parameter "limit_get" ....
>
> Вывод1. Средство контроля не знает переменных и не может в зависимости от
> внешних условий (прав пользователя) заблокировать/разблокировать метод.

Ваша проблема в том, что вы упорно пытаетесь использовать
переменные там, где они не поддерживаются. Повторю: переменные
поддерживают только некоторые директивы nginx'а. BTW, если в
какой-либо директиве можно использовать переменные - это явно
указано в документации.

> Вывод2. Перечисленные вами средства контроля не решают задачи динамической
> установки доступных пользователю(имя:пароль) методов (прав доступа).

См. выше, вам кажется.

> Я пока не вижу способа запретить ему создавать каталоги или стирать файлы
> если он зашёл в папку.... и это приводит нас к однопользовательской системе
> алядос... может я чего то не вижу ? может где то есть эта возможность
> динамически управлять методами(правами). Всё таки хочется сделать
> простенькую полноценную систему управления доступом к файлам в webdav...

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

Тривиальный авторизатор на auth_basic, требующий от всех
пользователей ввода логина/пароля, и разрешающий некоторым из них
методы, отличные от GET, делается как-то так:

server {
listen 80;
server_name dav.example.com;

location / {
auth_basic "restricted site";
auth_basic_user_file /path/to/users;

dav_methods PUT DELETE;

limit_except GET {
auth_basic "restricted site";
auth_basic_user_file /path/to/admins;
}

...
}
}

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Re: динамический dav methods $DAV;

Maxim Dounin April 14, 2015 08:26AM

Re: динамический dav methods $DAV;

itcod April 14, 2015 10:18AM

Re: динамический dav methods $DAV;

itcod April 14, 2015 10:27AM

Re: динамический dav methods $DAV;

Maxim Dounin April 14, 2015 01:54PM

Re: динамический dav methods $DAV;

Maxim Dounin April 14, 2015 02:02PM

Re: динамический dav methods $DAV;

itcod April 14, 2015 03:38PM

Re: динамический dav methods $DAV;

itcod April 14, 2015 03:47PM

Re: динамический dav methods $DAV;

itcod April 14, 2015 04:01PM

Re: динамический dav methods $DAV;

Maxim Dounin April 14, 2015 05:44PM

Re: динамический dav methods $DAV;

itcod April 15, 2015 02:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 283
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready