Změna priority pam modulu
Následují příklad řeší situaci, kdy je potřeba prostřednictvím Puppetu změnit řádek v textovém souboru. V tomto konkrétním případě snížení priority pam modulu, který ověřuje heslo přes Kerberos.
Konfigurační soubory pro pam moduly nelze upravovat přímo v adresáři /etc/pam.d , neboť jeho obsah se generuje prostřednictvím utility pam-auth-update podle konfiguračních souborů v adresáři /usr/share/pam-configs . Proto musí být součástí konfigurace typ exec, který lze volat po případné změně konfigurace pam modulu.
|
Jak vypadá obsah konfiguračního souboru pam modulu je v následujícím ukázkovém kódu zřejmé parametru content u typu file, který na straně agenta vytvoří soubor /usr/share/pam-configs/scripts
na jehož základě se v pam modulech generuje nastavení, které zajišťuje spuštění skriptů z adresáře /etc/pam-scripts
.
Součástí tohoto konfiguračního souboru je parametr Priority, který rozhoduje o pořadí modulů. Jelikož se skript pam_script_ses_open
má spouštět až po úspěšné autorizaci uživatele a pam_script_ses_close
před odhlášením uživatele, má nastavenu prioritu velmi nízkou (10).
Priorita autorizačních modulů je vyšší:
- lokální autorizace má výchozí prioritu 256
- autorizace přes ldap má prioritu 128
- autorizace přes krb5 má výchozí prioritu 704
Z těchto hodnot je zřejmé, že nejprve se systém pokusí autorizovat před Kerberos, pak přes ldap a nakonec lokálně. Za určitých okolností však může být autorizace přes Kerberos problematická, protože vyžaduje konektivitu přes UDP port. Není-li konektivita přes UDP k dispozici, přejde systém na další autorizační mechanismus až po uplynutí určitého intervalu. Aby uživatel zbytečně nečekal, je proto lepší změnit pořadí autorizačních mechanismů úpravou hodnoty parametru Priority ve výchozím konfiguračním souboru /usr/share/pam-configs/krb5
.
K úpravě konfiguračního souboru se využívá editor ed, který pracuje přímo s konfiguračním souborem a zároveň se dá dobře skriptovat. |
Aby se typ exec nespouštěl při každém průchodu, ale pouze tehdy, nebude-li hodnota Priority jiná než 128, musí být jeho součástí parametr onlyif. Jeho součástí je podmínka, která vrací hodnotu false pouze pokud příkaz grep v uvedeném konfiguračním souboru nenajde řetězec 'Priority: 128'
V případě že se tak stane, dojde k editaci souboru a po ní se postará parametr notify o zavolání příkazu pam-auth-update, který přegeneruje soubory v adresáři /etc/pam.d
. Parametr require zajistí, potřebné soubory a utility v systému existovaly ještě aby před spuštěním příkazu k editaci.