Portál AbcLinuxu, 6. května 2025 11:46
policy { .... special_access { if ("%{Realm}" == 'core') { if ("%{sql:SELECT special_priv FROM table WHERE username = '%{User-Name}'}" != '1') { reject } } } ... }Definovanou politiku pak uplatnis v ramci authorizacni sekce.
authorize { ... special_access ... }
where.... and nasid='%{NAS-Identifier}'
(1) policy special_access { (1) if ("%{Realm}" == 'core') { (1) ERROR: Failed retrieving values required to evaluate condition (1) } # policy special_access = ok (1) } # authorize = okA pritom v logu Mysql se vubec neukazuje, ze by se ten SELECT pokusil provest. Tak nevim. V sites-enabled/default v sekci "authorize" mam odkomentovano jak "sql", tak to svoje "special_access", ktery vypada nasledovne:
special_access { if ("%{Realm}" == 'core') { if ("%{sql: SELECT access FROM special_access WHERE username = '%{User-Name}'}" != 'core') { reject } } }Jdu se zkusit poprat s tim Vasim resenim.
| username | attribute | op | value | | franta | Mikrotik-Group | = | read |Jenze co kdyz chci, aby mel franta "read" pristup do mikrotiku s realmem "core", ale "write" pristup do mikrotiku s realmem "edge"? Jako nejjednodussi se mi jevi moznost, ze kdyz v sekci "authorize" nactu z databaze, ze franta ma do "edge" mikrotiku povoleny pristup "write", tak nejakym prikazem odeslu "Mikrotik-Group = write" Diky moc
special_access { if ("%{Mikrotik-Realm}" == 'edge') { if ("%{sql: SELECT access FROM special_access WHERE username = '%{User-Name}'}" != 'edge') { reject } update reply { &Mikrotik-Group = "write" } } }Ted jeste musim prijit na to, jak to opravneni nenastavovat rucne, ale vycist ho z databaze
ATTRIBUTE User-Group 3001 stringPotom vysledna "policy" muze vypadat takto:
special_access { if ("%{Mikrotik-Realm}" == 'edge') { if ("%{sql: SELECT realm FROM special_access WHERE username = '%{User-Name}'}" != 'edge') { reject } else { update reply { &User-Group = "%{sql:SELECT group from special_access where username = '%{User-Name}' LIMIT 1}" &Mikrotik-Group = "%{reply:User-Group}" } } } }Zatim je to takove neucesane, ale funguje to. Diky za vas cas a mejte se
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.