In diel keppelje fanút Tunnelblick sûnder as root te draaien
In AppleScript dat iepen bliuwt kin ien Tunnelblick-profyl besjen en in SMB-diel as de oanmelde brûker keppelje, sûnder root-hook of sudo sûnder wachtwurd.
De VPN-klant hat foarrjochte help nedich om netwurkynstellingen te feroarjen, en dat feit wurdt te breed tapast op alles deromhinne. In skript dat in bestândiel keppellet hat gjin root nedich, want it diel heart by de sesje fan de oanmelde brûker en by de ynskriuwgegevens fan dy brûker. It keppeljen bûten it foarrjochte paad weihelje smyt de needsaak foar sudo-regels, root-hooks en oanpassingen oan mei-levere applikaasjes fuort. Wat oerbliuwt is in lyts applet dat iepen bliuwt, ien profyl besjocht en ien poging docht.
Wêrom’t dit yn de brûkerssesje heart
In keppele volume is in eigenskip fan de sesje dy’t it keppele hat. In sesje fan in oare brûker sjocht it net, en in keppeling dy’t fan root is, hâldt him oars as dy’t Finder makke hat. It keppeljen yn de brûkerssesje hâlde bewarret dy semantyk.
Foarrjochte helpers besteane foar de dielen dy’t se echt nedich hawwe: in tunnelinterface meitsje, rûtes feroarje, de resolver bywurkje. In SMB-diel keppelje is net ien fan dy dielen. It behannelje as wie it dat wol, twingt in kar tusken sudo sûnder wachtwurd en in root-skript dat draait wylst der nimmen oanwêzich is. Beide binne gruttere risiko’s as it probleem rjochtfeardiget, en de oanpak fia de brûkerssesje mijt dy kar hielendal.
De eigen ferbininghooks fan Tunnelblick binne hjir gjin ferfanging, want se draaie bûten de burosesje en har oardering foar de skripten fan de klant oer is net definiearre. De tastân pollje fanút in brûkersapplet is in lytser meganisme mei minder oannames.
Bewiis earst mei de hân dat it diel wurket
Automatisearring kin gjin rûte, gjin tastimming en gjin akkount leverje dat net bestiet. Ferbyn de VPN mei de hân en iepenje it diel yn Finder foardat jo in skript skriuwe. As dat mislearret, sil it skript op in betiizjender wize mislearje.
Skriuw de trije wearden op dy’t it skript brûke sil: de profylnamme krekt sa’t Tunnelblick dy listet, de diel-URL en de volumennamme dy’t Finder nei it keppeljen sjen lit. De volumennamme is fan belang om’t de kontrôle foar in besteande keppeling dy brûkt, en in kontrôle op allinnich de namme is in gemaksward, gjin bewiis fan ’e identiteit fan ’e tsjinner. Brûk in namme dy’t unyk is op ’e masine. Befêstigje dêrnei dat de tsjinner hielendal antwurdet.
smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs
It earste kommando bewiist dat de tsjinner antwurdet, it twadde bewiist dat de profylnamme oplost, en it tredde lit sjen hoe’t in slagge keppeling der útsjocht. Fêstlizje alle trije foardat jo eat automatisearje.
Lês de profyltastân út Tunnelblick
Tunnelblick stelt syn konfiguraasjes en har tastannen beskikber fia AppleScript, en dat is de iennichste hook dy’t dit ûntwerp nedich hat. De tastân dêr’t it om giet is de tekenrige dy’t foar dat iene profyl rapportearre wurdt, net de oanwêzigens fan ’e applikaasje.
Polling hat gefolgen dy’t it neamen wurdich binne. In werferbining koarter as it ynterval kin ûnopmurken foarby gean, en it applet sjocht de oergong hielendal net. Dat is akseptabel foar in keppelwacht en net akseptabel foar eat dat op elk evenemint reagearje moat. At jo evenemintsbetrouberens nedich hawwe, is dit it ferkearde meganisme yn stee fan in meganisme dat in koartere timer nedich hat. Kies it ynterval mei dy ôfwaging yn ’t achterhoofd.
property attempted : false
on idle
set profileName to "Office"
set shareURL to "smb://files.corp.example/OfficeTeam"
set volName to "OfficeTeam"
tell application "Tunnelblick" to set vpnState to state of first configuration whose name is profileName
if vpnState is not "CONNECTED" then
set attempted to false
return 20
end if
tell application "Finder" to set mounted to (exists disk volName)
if (not mounted) and (not attempted) then
set attempted to true
try
mount volume shareURL
end try
end if
return 20
end idle
Eksportearje it as in applikaasje mei de opsje om iepen te bliuwen, en start it dan yn ’e oanmelde sesje yn stee fan fia sudo.
Keppelje ien kear en hâld dan op mei besykjen
De besocht-flagge is wat foarkomt dat dit in lus wurdt dy’t ynskriuwgegevens riedt. Sadree’t it applet besocht hat, wachtet it oant de ferbiningstastân feroaret foardat it wer besiket.
Dat gedrach is opsetlik. In diel dat it keppeljen wegeret, wegeret it meast om in reden dy’t in nije poging net oplosse kin, en werhelle pogingen meitsje fan ien fraach in stream dêrfan. De flagge wurdt weromset as it profyl de ferbûne tastân ferlit, sadat in echte werferbining krekt ien nije poging opsmyt. It applet sluten en wer starten set him ek werom, en dat is de hânmjittige oerride. Gjin fan beide paden ferberget in mislearring; beide litte dy yn Finder sjen.
It skript befettet gjin wachtwurd, en dat moat sa bliuwe. Lit de keppelbewurking om ynfier freegje, en lit de kaaihâlder dwaan wat de organisaasje stipet. In ynskriuwgegevens yn in URL opnimmen makket fan in gemaksskript in geheim dat rotearre wurde moat.
Wat de helper net kin
Trije beheinings binne it wurdich om njonken it applet te skriuwen. It kin in beset volume net útsmite nei in netwurkflater, it kin net garandearje dat DNS en de tsjinner klear binne as de tastân ferbûn seit, en it reagearret net op elke werferbining.
De earste beheining jildt yn ’e praktyk it meast. In diel wêrfan’t de tsjinner ferdwynt, lit in volume efter dat keppele liket en by tagong blokket, en de freonlike oplossing is bestânsbewurkingen ôfmeitsje en útsmite foar in plande ôfkoppeling. De twadde ferklearret de measte mislearre earste pogingen: de tunnel stiet wylst de resolver noch net by is, dus wachtsje en keppelje dan ien kear mei de hân om it te befêstigjen. De tredde is de polling-ôfwaging fan earder yn stee fan in bug om te patchen.
Foar in ûnbewaakte masine of in beheard float is dit ûntwerp de ferkearde foarm. Brûk in keppelbelied dat fan de administrateur is yn stee fan in buroapplet út te wreidzjen ta in foarrjochte tsjinst.