Tunnelblick-тен желілік қалтаны root ретінде істемей қосу
Ашық қалатын AppleScript бір Tunnelblick профилін бақылап, SMB қалтасын жүйеге кірген пайдаланушы ретінде қоса алады, root ілгегі мен құпиясөзсіз sudo-сыз.
VPN клиентіне желіні қайта конфигурациялау үшін артықшылықты көмек қажет, және бұл факт айналасындағының бәріне тым кең қолданылады. Файлдық қалтаны қосатын скриптке root қажет емес, өйткені қалта жүйеге кірген пайдаланушының сессиясына және оның тіркелгі деректеріне тиесілі. Қосуды артықшылықты жолдан шығару sudo ережелеріне, root ілгектеріне және жинақталған қолданбаларды өзгертуге деген қажеттілікті жояды. Қалғаны — ашық қалатын, бір профильді бақылайтын және бір әрекет жасайтын шағын applet.
Бұл неге пайдаланушы сессиясына жатады
Қосылған том — оны қосқан сессияның қасиеті. Басқа пайдаланушының сессиясы оны көрмейді, ал root-қа тиесілі қосу Finder жасағанынан өзгеше әрекет етеді. Қосуды пайдаланушы сессиясында ұстау осы семантиканы сақтайды.
Артықшылықты көмекшілер шынымен қажет бөліктер үшін бар: туннель интерфейсін құру, маршруттарды өзгерту, шешушіні жаңарту. SMB қалтасын қосу сол бөліктердің бірі емес. Оған солай қарау құпиясөзсіз sudo мен ешкім жоқ кезде іске қосылатын root скриптінің арасында таңдауға мәжбүрлейді. Екеуі де мәселенің ақтайтынынан үлкен тәуекел, ал пайдаланушы сессиясы арқылы тәсіл бұл таңдаудан толық құтылады.
Tunnelblick-тің өз қосылу ілгектері мұнда балама емес, өйткені олар жұмыс үстелі сессиясынан тыс орындалады және олардың клиент скрипттеріне қатысты реті анықталмаған. Күйді пайдаланушы applet-інен сұрау — азырақ болжаммен жұмыс істейтін шағын механизм.
Алдымен қалтаның жұмыс істейтінін қолмен дәлелдеңіз
Автоматтандыру жоқ маршрутты, рұқсатты немесе тіркелгіні бере алмайды. Кез келген скрипт жазбас бұрын VPN-ға қолмен қосылып, қалтаны Finder-де ашыңыз. Егер бұл сәтсіз болса, скрипт одан да түсініксіз түрде сәтсіз болады.
Скрипт қолданатын үш мәнді жазып алыңыз: профиль атауын Tunnelblick тізімдегендей дәл, қалтаның URL-ін және қосудан кейін Finder көрсететін том атауын. Том атауы маңызды, өйткені бар қосуды тексеру оны пайдаланады, ал тек атауға негізделген тексеру — қолайлық қорғанысы, сервердің жеке басының дәлелі емес. Машинада бірегей атау қолданыңыз. Содан кейін сервердің жалпы жауап беретінін растаңыз.
smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs
Бірінші пәрмен сервердің жауап беретінін, екіншісі профиль атауының шешілетінін дәлелдейді, ал үшіншісі сәтті қосудың қандай болатынын көрсетеді. Бірдеңені автоматтандырмас бұрын үшеуін де жазып алыңыз.
Профиль күйін Tunnelblick-тен оқыңыз
Tunnelblick өз конфигурацияларын және олардың күйлерін AppleScript арқылы ұсынады, және бұл жобаға қажет жалғыз ілгек. Маңызды күй — дәл сол профиль үшін хабарланатын жол, қолданбаның болуы емес.
Сұраудың айтуға тұрарлық салдары бар. Интервалдан қысқа қайта қосылу байқалмай өтуі мүмкін, ал applet ауысуды мүлде көрмейді. Бұл қосуды қорғау үшін қолайлы және әр оқиғаға әрекет етуі керек кез келген нәрсе үшін қолайсыз. Егер оқиғалар дәлдігі қажет болса, бұл дұрыс емес механизм, ал қысқарақ таймер қажет механизм емес. Интервалды осы ымыраны ескере отырып таңдаңыз.
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
Оны ашық қалу мүмкіндігімен қолданба ретінде экспорттап, содан кейін sudo арқылы емес, жүйеге кірген сессияда іске қосыңыз.
Бір рет қосыңыз, содан кейін әрекеттен бас тартыңыз
Әрекет жасалды жалаушасы бұның тіркелгі деректерін болжайтын циклге айналуына жол бермейді. applet әрекет жасағаннан кейін қайталамас бұрын қосылу күйінің өзгеруін күтеді.
Бұл мінез әдейі. Қосуды қабылдамайтын қалта әдетте оны жаңа әрекет түзете алмайтын себеппен қабылдамайды, ал қайталама әрекеттер бір сұранысты олардың ағынына айналдырады. Жалауша профиль қосылған күйден шыққанда қалпына келтіріледі, сондықтан шынайы қайта қосылу дәл бір жаңа әрекет береді. applet-тен шығып, қайта іске қосу да оны қалпына келтіреді, және бұл қолмен айналып өту. Екі жолдың ешқайсысы сәтсіздікті жасырмайды; екеуі де оны Finder-де көрінетін етіп қалдырады.
Скрипт ешқандай құпиясөз тасымайды, және солай қалуы керек. Қосу операциясына сұрауға рұқсат етіңіз, ал кілт шоғырына ұйым қолдайтынды жасауға мүмкіндік беріңіз. Тіркелгі дерегін URL-ге кірістіру ыңғайлылық скриптін айналдыру қажет құпияға айналдырады.
Көмекші не істей алмайды
Үш шектеу applet-тің жанына жазуға тұрарлық. Ол желі ақауынан кейін бос емес томды шығара алмайды, күй қосылған дегенде DNS мен сервердің дайын екеніне кепілдік бере алмайды және әр қайта қосылуға әрекет етпейді.
Бірінші шектеу практикада ең маңызды. Сервері жоғалатын қалта қосылған болып көрінетін және қатынау кезінде бөгейтін том қалдырады, ал сыпайы түзету — файлдық операцияларды аяқтап, жоспарланған ажырату алдында оны шығару. Екіншісі сәтсіз алғашқы әрекеттердің көбін түсіндіреді: туннель тұр, ал шешуші әлі үлгермеген, сондықтан күте тұрып, растау үшін бір рет қолмен қосыңыз. Үшіншісі — бұрын айтылған сұрау ымырасы, түзетуді қажет ететін қате емес.
Қадағалаусыз машина немесе басқарылатын парк үшін бұл дизайн дұрыс емес пішінде. Жұмыс үстелінің applet-ін артықшылықты қызметке кеңейтудің орнына әкімшіге тиесілі қосу саясатын қолданыңыз.