Jagamise monteerimine Tunnelblickist ilma root-kasutajana töötamata
Püsivalt avatud AppleScript saab jälgida ühte Tunnelblicki profiili ja monteerida SMB-jagamise sisselogitud kasutajana, ilma root-konksu või paroolita sudota.
VPN-klient vajab võrgu ümberseadistamiseks privilegeeritud abi ja seda tõsiasja rakendatakse liiga laialt kõigele selle ümber. Skript, mis monteerib failijagamise, ei vaja root’i, sest jagamine kuulub sisselogitud kasutaja sessioonile ja selle kasutaja mandaatidele. Monteerimise privilegeeritud teelt väljaviimine kaotab vajaduse sudo-reeglite, root-konksude ja kaasasolevate rakenduste muutmise järele. Alles jääb väike püsivalt avatud applet, mis jälgib ühte profiili ja teeb ühe katse.
Miks see kuulub kasutajasessiooni
Monteeritud köide on selle monteerinud sessiooni omadus. Teise kasutaja sessioon ei näe seda ja root’ile kuuluv monteering käitub teisiti kui Finderi loodu. Monteeringu jätmine kasutajasessiooni säilitab selle semantika.
Privilegeeritud abilised on olemas nende osade jaoks, mis neid tõesti vajavad: tunneliliidese loomine, marsruutide muutmine, resolveri uuendamine. SMB-jagamise monteerimine ei ole üks neist osadest. Selle kohtlemine nii, nagu oleks, sunnib valima paroolita sudo ja root-skripti vahel, mis töötab, kui kedagi kohal ei ole. Mõlemad on suuremad riskid, kui probleem õigustab, ja kasutajasessiooni lähenemine väldib selle valiku täielikult.
Tunnelbicki enda ühenduskonksud ei ole siin asendus, sest need töötavad väljaspool töölauasessiooni ja nende järjekord kliendi skriptide suhtes ei ole määratletud. Olekut kasutaja-appletist küsida on väiksem mehhanism vähemate eeldustega.
Tõesta esmalt käsitsi, et jagamine töötab
Automatiseerimine ei saa pakkuda marsruuti, õigust ega kontot, mida ei ole olemas. Ühenda VPN käsitsi ja ava jagamine Finderis enne, kui kirjutad ükskõik millise skripti. Kui see ebaõnnestub, ebaõnnestub skript segasemal viisil.
Kirjuta üles kolm väärtust, mida skript kasutab: profiili nimi täpselt nii, nagu Tunnelblick selle loetleb, jagamise URL ja köitenimi, mida Finder pärast monteerimist näitab. Köitenimi on oluline, sest olemasoleva monteeringu kontroll kasutab seda, ja ainult nime kontrollimine on mugavusvalve, mitte tõestus serveri identiteedi kohta. Kasuta nime, mis on masinas unikaalne. Seejärel kinnita, et server üldse vastab.
smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs
Esimene käsk tõestab, et server vastab, teine, et profiili nimi laheneb, ja kolmas näitab, kuidas õnnestunud monteering välja näeb. Jäädvusta kõik kolm enne, kui midagi automatiseerid.
Loe profiili olekut Tunnelblickist
Tunnelblick teeb oma konfiguratsioonid ja nende olekud AppleScripti kaudu kättesaadavaks, ja see on ainus konks, mida see kujundus vajab. Olek, millest hoolid, on just selle profiili kohta teatatud string, mitte rakenduse kohalolek.
Küsitlemisel on tagajärjed, mida tasub nimetada. Intervallist lühem taastamine võib märkamatult mööduda ja applet ei näe üleminekut üldse. See on monteerimisvalve jaoks vastuvõetav ja vastuvõetamatu kõige jaoks, mis peab reageerima igale sündmusele. Kui vajad sündmuste täpsust, on see vale mehhanism, mitte mehhanism, mis vajab lühemat taimerit. Vali intervall seda kompromissi silmas pidades.
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
Ekspordi see rakendusena valikuga püsida avatud ja käivita see seejärel sisselogitud sessioonis, mitte sudo kaudu.
Monteeri üks kord ja lõpeta siis proovimine
Proovitud lipp on see, mis hoiab ära, et sellest saab mandaate arvav tsükkel. Kui applet on proovinud, ootab see ühenduse oleku muutumist enne uut katset.
See käitumine on tahtlik. Jagamine, mis monteerimisest keeldub, keeldub tavaliselt põhjusel, mida kordamine parandada ei suuda, ja korduvad katsed muudavad ühe küsimuse nende vooguks. Lipp lähtestatakse, kui profiil lahkub ühendatud olekust, nii et tõeline taastamine annab täpselt ühe uue katse. Appleti sulgemine ja uuesti käivitamine lähtestab selle samuti ja see on käsitsi sekkumine. Kumbki tee ei varja ebaõnnestumist; mõlemad jätavad selle Finderis nähtavaks.
Skript ei kanna parooli ja nii peaks see jääma. Lase monteerimistoimingul küsida ja lase võtmehoidlal teha seda, mida organisatsioon toetab. Mandaadi URL-i põimimine muudab mugavusskripti saladuseks, mida tuleb roteerida.
Mida abiline ei suuda
Kolm piiri tasub appleti kõrvale kirjutada. See ei suuda hõivatud köidet pärast võrgu tõrget välja visata, see ei suuda tagada, et DNS ja server on valmis, kui olek ütleb ühendatud, ja see ei reageeri igale taastamisele.
Esimene piir loeb praktikas kõige rohkem. Jagamine, mille server kaob, jätab köite, mis näeb välja monteerituna ja blokeerib juurdepääsul, ja viisakas parandus on failitoimingud lõpetada ning enne plaanitud lahtiühendamist välja visata. Teine selgitab enamikku ebaõnnestunud esimestest katsetest: tunnel on üleval, samal ajal kui resolver ei ole järele jõudnud, nii et oota ja monteeri siis üks kord käsitsi, et kinnitada. Kolmas on varasem küsitlemiskompromiss, mitte parandamist vajav viga.
Järelevalveta masina või hallatava flotilli jaoks on see kujundus vale kuju. Kasuta administraatorile kuuluvat monteerimispoliitikat, mitte ära laienda töölaua-appletit privilegeeritud teenuseks.