ID-kaarditarkvara Ubuntu guest kasutajaga
Sissejuhatus
Ubuntu on muutunud üsna populaarseks Linuxi operatsioonisüsteemiks, mida kasutatakse tihti avalikes internetipunktides, raamatukogudes, koolides ja muudes avalikes arvutites. Toiminguteks avalikus (või sõbra) arvutis on hea kasutada külalise (guest) kontot, mis salvestab kogu sessiooni info ja muud kasutaja andmed ainult ajutiselt ja ei vaja sisselogimiseks kasutajanime ega parooli. Probleemiks on osutunud aga ID-kaardi tarkvara mitte toimimine ning sellest lähtuvalt ID-kaardiga tehtavate toimingute sooritamine külalise konto all.
Probleemi olemus
Nimelt ei luba Ubuntu 14.04 ja 16.04 operatsioonisüsteemides kasutatav kerneli turvamoodul AppArmor juurdepääsu /run/pcscd/pcscd.comm failile. Kui tavaliselt määratakse õigusi kasutajatele, siis AppArmor võimaldab süsteemiadministraatoril määrata failide avamise, lugemise ja kirjutamise õigusi erinevate programmide jaoks. Juurdepääsu blokeerimine tähendab aga seda, et PC-SC Lite (mis võimaldab kaardilugejal ja arvutil suhelda) ja selle daemon pcscd ei hakka korrektselt tööle.
Selle kohta on 13.06.2014 esitatud Ubuntu arendusmeeskonnale bug report ent siiani pole muudatust operatsioonisüsteemi tasandil sisse toodud. Samuti on 14.05.2014 edastatud veateade ID-kaarditarkvara tehnilisele toele (pöördumise pileti number ja pealkiri: [INC112258]: ID-kaardi tarkvara külalise kasutaja all ei tööta (Linux)), kuid ka ID-kaardi tarkvarasse pole antud muudatus jõudnud.
Lahendus
Kuna AppArmor töötab läbi erinevate profiilide, mis operatsioonisüsteemi käivitumisel sisse laetakse, on võimalik õigusi anda vastavat profiili muutes. Antud juhul on probleemiks Ubuntus vaikimisi kasutatava kuvahalduri lightdm külalise profiil. Lisades "/run/pcscd/pcscd.comm rw," rea faili nimega /etc/apparmor.d/lightdm-guest-session lõppu, on võimalik ID-kaardi tarkvara serveritega suhelda.
Võimalik on see muudatus teha käsurealt, sisestades näiteks:
sudo echo "/run/pcscd/pcscd.comm rw," >> /etc/apparmor.d/lightdm-guest-session
Skript
#!/bin/bash
#Sript kontrollib, kas parameeter ''--allow-guests'' on lisatud
#siis kontrollib muudetava faili olemasolu ning seejärel lisab
#vajaliku rea juurkasutaja õigustes
if [ $1 == "--allow-guests" ]
then
file="/etc/apparmor.d/lightdm-guest-session"
if [ -f "$file" ]
then
echo "/run/pcscd/pcscd.comm rw," | sudo tee -a /etc/apparmor.d/lightdm-guest-session
fi
fi