CVT FI

RSS

Novinky, zajímavosti a změny v provozu počítačů, počítačové sítě, prezentační a další techniky na FI MU. Další informace jsou dostupné v Technických informacích na webu fakulty.

Pro hlášení problémů prosím kontaktujte příslušnou sekci CVT FI.

Informace o aktuálních problémech naleznete na stránce o výpadcích.

Blog owners: FI:unix@fi, FI:CVT FI
Blog owners: FI:unix@fi, FI:CVT FI
Right to read: anyone on the Internet
Right to post comments: anyone logged in the IS
10. 5.
2022

K riešeniu Firefox is already running

  • RSS
Interesting | 7 | 7
Mgr. Tomáš Szaniszlo (CVT FI MU), učo 359894
unix

V tomto príspevku si priblížime ako sme riešili problém Firefox is already running, o ktorom sme písali v marcovom prehľade noviniek.

Vo fakultnom prostredí je dôležitou vlastnosťou mať rovnaké pracovné prostredie, nech si sadnete na ľubovoľný počítač (s rovnakým OS). Preto sú linuxové domovské adresáre uložené centrálne na NFS serveri home.fi.muni.cz (v praxi server Anxur) a z neho sprístupňované na jednotlivé linuxové stroje. Medzi jednu z nevýhod tohto prístupu však patrí napríklad to, že ak si zabudnete na niektorom stroji spustený Firefox a skúsite ho spustiť inde, dostanete správu Firefox is already running.

Close Firefox

Pre vyriešenie tohto problému je potrebné odhaliť, na ktorom stroji je Firefox spustený, čo sa nezisťuje úplne priamočiaro (inak než kontrolou všetkých Nýmf a na nich spustených procesov). Situáciu sme sa pokúsili vylepšiť vytvorením wrapper skriptu pre Firefox (v /usr/local/bin/), ktorý ešte pred jeho spustením zistí (na základe stavu/obsahu súborového systému), či Firefox beží niekde inde. Toto samo o sebe vyžadovalo istú dávku detektívnej práce, ktorú v tomto príspevku pre zaujímavosť priblížime.

Bolo viac-menej jasné, že sa treba zamerať na adresár s profilom v ~/.mozilla/firefox/. Dávnejší pôvodný plán detekcie prítomnosti súborov s lock či parentlock sa ukázal byť nespoľahlivý. Tiež sa nám v tomto adresári nepodarilo nájsť v žiadnom súbore reťazec nymfeNN.

Skúsili sme teda ešte využiť užitočný nástroj inotifywait, pomocou ktorého je možné sledovať udalosti VFS v podstrome súborového systému. Táto cesta však tiež neukázala žiadny súbor, ktorý by sa vytvoril počas štartu Firefoxu a existoval by len počas jeho behu (a v prípade násilného ukončenia Firefoxu by i tak nebola táto detekcia spoľahlivá). Vo výpise súborov, s ktorými Firefox pracuje, sa však objavili databázy SQLite a vďaka tomu zasvietil kúsok nádeje. Tie má totiž prehliadač otvorené v exkluzívnom režime a toto by z jeho podstaty malo byť možné detegovať pokusom o otvorenie ďalším nástrojom. Na toto sa hodí nástroj sqlite3, pomocou ktorého by sme spravili nejakú operáciu, napríklad výpis tabuliek: .tables.

Po chvíľke experimentovania sa ukázalo, že naše hľadanie bolo úspešné a niektorú z otvorených databáz (záložky, cookies, …) je možné otvoriť práve vtedy, keď Firefox nebeží, a zároveň i tvrdé ukončenie Firefoxu (napríklad signálom SIGKILL) zámok uvoľní.

Cesta k obaľovaciemu skriptu teda získala celkom jasné kontúry a zostalo už len napísať detekciu východzieho profilu a nejaké upozorňovanie (pomocou Zenity) v prípade detekcie problému. Na konci skriptu sa však Firefox aj tak vždy spustí – to pre prípad, že by sme mali v našej detekcii chybu, aby sme v takom prípade úplne neznemožnili jeho fungovanie. To je aj v súlade s cieľom čo najväčšej transparentnosti skriptu. Spustenie Firefoxu by sa malo správať prakticky rovnako ako keby tam obaľovací skript nebol:

  • Proces skriptu sa vďaka exec nahradí Firefoxom, takže pôvodný proces shellu bežať nezostane.
  • Skript odovzdá prípadné parametre, s ktorými bol volaný, skutočnému Firefoxu.
  • Skript sa snaží byť čo najrýchlejší, aby nespôsoboval citeľné zdržanie.

Čo robiť v prípade problému sme už mali vymyslené: otvoriť si v inom konkurenčnom prehliadači mapu miestností, kde je na konci dostupný prehľad aktívnych sedení na fakultných strojoch.

To sme však v medzičase ešte vylepšili: aby ste nemuseli chodiť do prehliadača a prihlasovať sa, aktívne prihlásenia zobrazí priamo upozorňujúce okno. Tieto informácie sú v stručnej podobe dostupné z Fadmina. Tieto informácie nechceme sprístupňovať neautentizovane: jednak sa z autentizácie berie fakultný login, pre ktorý sa údaje vypisujú, a jednak úplne nechceme takto (verejne) sprístupňovať prehľad aktuálnych prihlásení. Za normálnych okolností by sme síce veľmi nemali možnosť ako prihlásenie zabezpečiť, ale v tento moment prichádza veľmi vhodne na scénu možnosť bezheslového prihlasovania na Fadmina z Nýmf, ktorú sme nasadili v januári tohto roka. V praxi jeho použitie (napríklad nástrojom curl) nasledovné: curl --negotiate -u: https://fadmin.fi.muni.cz/auth/sys/my_pc_sessions.mpl. To je možné vďaka tomu, že pri prihlásení v grafickom sedení na Nymfe sa sprístupnia lístky Kerbera, ktoré následne umožňujú autentizáciu voči ďalším naším službám, ktoré to poskytujú (napríklad bezheslové prihlásenie na Aisu; lístok Kerbera sa nevytvorí napríklad pri prihlásení cez SSH kľúč, ale v takej situácii Firefox používať nepotrebujete).

Naša detekcia s doplňujúcimi informáciami

Záujemcovia o ešte konkrétnejšie detaily si iste skripty nájdu a ďalšie technické detaily môžu preskúmať sami.

Záverom dodáme, že tento problém je v istom zmysle špecifický pre Firefox: Google Chrome má síce rovnaký problém, ale zároveň aspoň v chybovej správe zobrazí informáciu o tom, na ktorom stroji je daný profil používaný.

Not read yet0 commentspermalink
« Nový výpočtový server Aura (27. 4. 2022 14:30) | Jak jsme byli bez napájení » (31. 5. 2022 11:22)

No comments have been posted yet.