Mac-VPN by it opstarten: launchd hâldt tafersjoch op ’e taak, net op ’e tunnel
In skjinne plist bewissiget neat oer ynloggegevens of gereedheid. Pas de taak oan by syn sesje, hâld de klant op ’e foargrûn en test yn dat ferbân.
De taak rint by it oanmelden, it logboek lit de klant starte, en de tunnel komt nea omheech. Of hy komt omheech en ferdwynt in pear sekonden letter. Yn beide gefallen wie de eigenskipslist wierskynlik yn oarder. launchd die twa beloften doe’t er de taak oannaam: hy sil tafersjoch hâlde op in proses, en dat proses sil trochrinne. De VPN hat beide nedich, en in kloppend XML-bestân leveret gjin fan beide.
In jildige eigenskipslist is gjin wurkjende tsjinst
plutil -lint kontrolearret de struktuer. It kin jo net fertelle oft de binêre bestiet, oft de arguminten troch dizze klantferzje stipe wurde, of oft de taak start yn in ferbân wêryn’t de ynloggegevens beskikber binne. Dat binne semantyske fragen, en se ferklearje de measte flaters dy’t op launchd-problemen lykje.
plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn
Lês de útfier fan it twadde kommando ynstee fan oan te nimmen dat de taak laden is. It meldt de lêste útgeanstastân en oft de tsjinst rint, wat “nea start” fan “start en stoarn” ûnderskiedt foardat jo it profyl oanreitsje.
Aginten ervje in brûkerssesje, daemons net
Apple syn launchd-dokumintaasje skiedt aginten per brûker fan systeemdaemons. In agint rint yn it ferbân fan ’e oanmelde brûker, mei dy syn kaaikebân en omjouwing. In daemon rint sûnder dy sesje, en it ferpleatsen fan in taak nei in systeemmap makket de ynteraktive ynloggegevens fan ’e brûker net op ’e nij.
Dat ûnderskie beslút it ûntwerp. As de ferbining freget dat in persoan oanmeldt of in MFA-fersyk goedkart, is de stipe regeling in taak yn ’e brûkerssesje dy’t nei it oanmelden rint. As it wurkje moat sûnder dat immen oanmeld is, hat de klant in goedkarde ûnbewekke identiteit nedich mei syn eigen fernijings- en weromropproses. De ferkearde rige kieze leveret in taak op dy’t skjin start en by de earste autentikaasjestap mislearret.
Ferklearje it ferskil net mei in wachtwurd yn ’e argumintarray of troch sertifikaatkontrôles út te setten. Beide meitsje fan in autentikaasjefereaske in permanint geheim yn in lêsber bestân, en it twadde betsjut dat de tunnel alles autentisearret dat antwurdet.
Tafersjoch wurket allinnich as it proses foaroan bliuwt
In klant dy’t himsels daemonisearret jout de kontrôle fuortendaliks werom oan launchd, en de tafersjochhâlder sjocht dan in proses dat al ôfsluten is. De tunnel kin omheech wêze, mar launchd tinkt dat de taak mislearre is, en syn werstartbelied sil eat dwaan dat jo net bedoelden.
Brûk de dokumintearre foargrûn- of tsjinstmodus fan ’e klant. As it produkt in eigen stipe startfunksje hat, wit dy al hoe’t men yn ’e foargrûn bliuwt en hoe’t men oerdraacht oan ’e netwurkstapel; in oanpaste taak is in apart ûntwerp, net in ferbettering dêrfan.
Jou de taak in unike label, it bedoelde útfierbere bestân en in bewuste argumintarray. In array is gjin shell-kommandorigel, dus pipen en omliedingen wurkje dêr net, en oanhellingstekens gedrage har oars. In kommando dat slagget yn ’e terminal fan in administrator is op syn bêst in foarôfgeande kontrôle.
Ynloggegevens moatte sûnder freger wurkje
Ûnbewekke operaasje ferpleatst it probleem fan ’e ynloggegevens ynstee fan it fuort te heljen. Immen moat de identiteit besitte, beslute hoe lang dy libbet en dokumintearje hoe’t dy ferfongen wurdt. In sertifikaat sûnder ferfaldatumtafersjoch wurdt in ûnderbrekking mei in datum op ’e kalender.
Hâld geheimen bûten arguminten en bûten de standertútfier fan ’e taak. As de klant it lêzen fan in ynloggegevens út in beskerme opslach stipet, brûk dy wei, en kontrolearje dat it útfieringsferbân fan ’e taak de opslach berikke kin. In daemon dy’t as root rint kin normaalwei gjin elemint fan ’e oanmeldkaaikebân lêze, en dat is it soarte detail dat allinnich yn it systeemferbân opkomt.
Bepaal wat gereed betsjut, en test it dêr
In slagge lansearring bewissiget dat it proses begûn is. It bewissiget net dat it netwurk omheech is, dat de gateway de identiteit akseptearre hat of dat de partikuliere applikaasje berikber is. As eat oars fan ’e tunnel ôfhinget, hat it in gereedheidssinjaal nedich dat de ferbining wjerspegelet, net de starttiid fan ’e taak.
Werheljen moatte beheind wêze en in ûntbrekkend netwurk fan in wegere ynloggegevens ûnderskiede. Werstart by elke mislearring kin in ferfallen sertifikaat net reparearje en produsearret in logboek fol identike besykjen dat de echte ferberget.
Akseptearje de taak yn it ferbân wêryn’t er echt rinne sil: gjin netwurk by it opstarten, in normale oanmelding, in wekker wurden út sliep en in kontrolearre stop. Skriuw dan it taaklabel, de klantferzje en de profylrevisje byinoar, sadat de folgjende persoan in taskriuwbere tsjinst ervet ynstee fan in bestân dat ea wurke.