Страница 1 из 1

Rejik + windows AD groups

Добавлено: Чт авг 13, 2009 11:44
Sas
Хочется странного - рулить rejik'ом из AD

Есть секция
<socialnet>
ban_dir /usr/local/rejik3/banlists/socnet
url http://192.168.0.1/rejik/access_denied.html
work_ip 192.168.0.0/255.255.255.0

хотелось бы просто включать/выключать запрет
помещая/убирая пользователя в определенные группы
в домене примерно как это делается в squid
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="WORK\\internetusers"
тоесть примерно такого
allow_id WORK\\socialnet
Помещаем юзера в группу socialnet он получает доступ к соц сетям, убираем - блокируется

Возможно ли провернуть такое?

Простите за нубский вопрос просто руки не поднимаются проверить самому на живом сервере:)


ЗЫ Спасибо за rejik пользуюсь им уже года 4

Добавлено: Чт авг 13, 2009 12:02
Slava
Я управляю из лдапа следующим образом:
раз в 10 минут генерятся текстовые файлы списки пользователей, принадлежащих нужным группам.
Если списки изменились - перезагружаются режики.
В конфиге режика прописывается доступ к ресурсам в зависимости от наличия пользователя в этих текстовых файлах.

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

Добавлено: Вт окт 13, 2009 15:32
Archy
Slava, не поделитесь готовым решение?Буду очень признателен!

Добавлено: Вт окт 13, 2009 15:48
Slava
Не могу, слишком много приватной инфы о компании в этом скрипте, да и писал его не я.

Если коротко, то:

Код: Выделить всё

#!/usr/bin/perl

use Net::LDAP;
use Net::LDAP::Entry;
use POSIX;

Конектимся

   unless ($ldap = Net::LDAP->new($ldap_host))
   {
    print "Can't connect to ldap server $ldap_host: $@\n";
    exit;
   }

   $mesg = $ldap->bind($ldap_login,password =>$ldap_pass);
   if($mesg->code())
    {
     print "Can't LOGIN to ldap server $ldap_host: ". $mesg->error;
     exit;
    }

Делаем запрос

   $mesg = $ldap->search(
                         base   => $base,
                         filter => $filtr
                        );
   if($mesg->code())
   {
    print "Can't SEARCH in ldap server ($_[1] $_[2]): ". $mesg->error;
    exit;
   }


разбираем результат
$max = $mesg->count;
   for ( $i = 0 ; $i < $max ; $i++ )
   {
    unless($mesg->entry($i)->exists("uid"))
    {
     if ($mesg->entry($i)->dn() eq "ou=Users,dc=rdw,dc=ru"){next;}
     print STDERR "NO UID in ",$mesg->entry($i)->dn(),"\n";
     next;
    }
 $uid=$mesg->entry($i)->get_value("uid");
 print "DOMEN/$uid\n";
  }

Добавлено: Вт окт 13, 2009 16:49
Archy
Большое спасибо!