Portál AbcLinuxu, 23. prosince 2025 07:47
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 = ok
A 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.