L’Access Server ignora l’script post_auth que heu editat al disc
Editar el fitxer post_auth al disc no fa res: l’Access Server executa la còpia de la seva base de dades de configuració. Seguiu el camí de decisió i les ordres sacli.
Un mac.py editat que no canvia res és el primer símptoma habitual. El fitxer del disc no és el que executa l’Access Server; el servei d’autenticació carrega l’script des de la base de dades de configuració del servidor, i aquesta còpia emmagatzemada és la que decideix un inici de sessió. Fins que no se substitueixi el valor desat, cada prova només demostra que l’script antic encara funciona.
Tres condicions decideixen la feina: si el valor es va arribar a desar a la base de dades de configuració, si es va ordenar al servei que el recarregués, i si el codi que heu canviat realment s’executa a cada connexió. Cadascuna té un símptoma diferent, i arreglar la incorrecta malbarata una finestra de manteniment.
El fitxer és una font, no la còpia en execució
L’Access Server guarda l’script post-auth sota la clau auth.module.post_auth_script. Editar el fitxer actualitza la vostra còpia de treball i res més. El dimoni llegeix el valor desat, així que l’edició queda invisible fins que esborreu l’entrada antiga i poseu el fitxer nou al seu lloc. Aquest valor desat és l’única còpia que consulta el servei d’autenticació.
Llegiu-lo abans de canviar-lo. Si ja coincideix amb el fitxer que heu editat, el problema no és l’emmagatzematge i podeu passar a la qüestió de l’abast. Si mostra una versió més antiga, l’edició no ha arribat al servei.
./sacli -k auth.module.post_auth_script ConfigGetSubstituïu la còpia desada i després apliqueu-la
Esborrar abans d’escriure no és decoració. ConfigPut amb --value_file substitueix el valor en un sol pas, i ConfigDel primer fa impossible que quedi una entrada antiga o corrupta. Guardeu una còpia de l’script de treball fora del directori d’scripts abans de començar.
./sacli -k auth.module.post_auth_script ConfigDel
# store the file, then apply it
./sacli -k auth.module.post_auth_script --value_file=/root/post_auth.py ConfigPut
./sacli startsacli start aplica la configuració canviada als serveis interns, i això és el que fa que el nou script entri en vigor. No és el mateix que reiniciar tota la màquina o el dimoni, i no s’hauria de substituir per això llevat que el canvi que feu ho requereixi.
Feu servir un camí absolut per al fitxer de valor i confirmeu que root el pot llegir. Un camí que es resol des del vostre shell però no des del compte del servei produeix un valor desat que sembla correcte a ConfigGet i falla al primer inici de sessió. Comproveu el resultat desat un cop més després de sacli start, no abans.
Abast del mòdul o per connexió: on ha d’anar la consulta
Python executa les sentències de nivell de mòdul una vegada, quan es carrega l’script. Per tant, una consulta a la base de dades escrita a la part superior del fitxer llegeix la taula en el moment de la càrrega i conserva aquesta resposta per a cada connexió posterior. Aquesta és la segona raó per la qual una edició sembla que no fa res: el codi s’executa, però no quan ho espereu.
Poseu la consulta dins del gestor post_auth perquè s’executi a cada autenticació. Manteniu la signatura documentada, ajusteu el resultat d’autenticació que rep el gestor i retorneu aquest mateix objecte en lloc d’un nombre solt.
Manteniu també la gestió de la connexió dins del gestor. Una connexió oberta en importar es pot tancar pel servidor abans que hi entri el primer usuari, i l’error resultant sembla una credencial rebutjada més que un script trencat.
Dos camins de rebuig, un propietari
Si la decisió és una consulta local, el gestor de Python és el propietari del resultat. Si és una comprovació HTTP externa, deixeu que l’estat de sortida de l’ordre porti la resposta: un embolcall que surt amb un codi diferent de zero rebutja l’inici de sessió, i l’estat de l’última ordre es converteix en l’estat de l’script sense cap exit explícit.
Manteniu el secret fora de la llista de processos. Un fitxer llegible per root o un valor d’entorn passat pel servei és més segur que un argument que qualsevol usuari local pot llegir des de ps. Fixeu el punt final en una variable abans de la crida, perquè una errata falli en temps de configuració i no durant l’inici de sessió d’algú. Roteu aquest secret igual que qualsevol altra credencial.
Trieu un sol propietari per comprovació. Un script que consulta la base de dades i crida un servei HTTP necessita una regla de precedència declarada per al cas que els dos discrepin, o el motiu de rebuig del registre no coincidirà amb el que s’ha dit a l’usuari.
Apliqueu-ho sense bloquejar l’administrador
Dues salvaguardes fan el canvi reversible: un segon compte d’administrador que no depèn de l’script, i una còpia bona coneguda guardada fora del directori d’scripts. Apliqueu el canvi en una finestra de manteniment, i després observeu un inici de sessió de prova i un rebuig deliberat abans de desconnectar-vos. Si el registre mostra un error de sintaxi en lloc d’una decisió d’autenticació, l’script desat està trencat i tots els inicis de sessió fallaran.
Dues condicions diuen espereu: no podeu llegir el fitxer de valor com a root, o no teniu cap segona via a la interfície d’administració. Totes dues converteixen un canvi petit en un bloqueig, i cap de les dues val la pena provar-la en un servidor de producció al final del dia. La documentació d’Access Server cobreix la interfície post-auth i els seus camps suportats.