Tunnelblick’ten root olarak çalışmadan paylaşım bağlama
Açık kalan bir AppleScript tek bir Tunnelblick profilini izleyip SMB paylaşımını oturum açmış kullanıcı olarak bağlayabilir; root kancası veya parolasız sudo gerekmez.
VPN istemcisi ağı yeniden yapılandırmak için ayrıcalıklı yardıma ihtiyaç duyar ve bu gerçek çevresindeki her şeye fazla geniş uygulanır. Bir dosya paylaşımını bağlayan betiğin root’a ihtiyacı yoktur, çünkü paylaşım oturum açmış kullanıcının oturumuna ve o kullanıcının kimlik bilgilerine aittir. Bağlamayı ayrıcalıklı yoldan çıkarmak sudo kurallarına, root kancalarına ve birlikte gelen uygulamalarda değişiklik yapma ihtiyacını ortadan kaldırır. Geriye kalan, açık kalan, tek bir profili izleyen ve tek bir deneme yapan küçük bir applet’tir.
Bunun neden kullanıcı oturumuna ait olduğu
Bağlanmış bir birim, onu bağlayan oturumun bir özelliğidir. Başka bir kullanıcının oturumu onu görmez ve root’a ait bir bağlama, Finder’ın oluşturduğundan farklı davranır. Bağlamayı kullanıcı oturumunda tutmak bu anlamı korur.
Ayrıcalıklı yardımcılar, gerçekten ihtiyaç duyan parçalar için vardır: tünel arayüzü oluşturmak, rotaları değiştirmek, çözümleyiciyi güncellemek. SMB paylaşımı bağlamak bu parçalardan biri değildir. Öyleymiş gibi davranmak, parolasız sudo ile kimsenin bulunmadığı bir anda çalışan root betiği arasında seçim yapmaya zorlar. İkisi de sorunun haklı çıkardığından daha büyük risklerdir ve kullanıcı oturumu yaklaşımı bu seçimi tamamen ortadan kaldırır.
Tunnelblick’in kendi bağlantı kancaları burada yerine geçmez, çünkü masaüstü oturumunun dışında çalışırlar ve istemcinin betiklerine göre sıraları tanımlı değildir. Durumu bir kullanıcı applet’inden sorgulamak, daha az varsayım içeren daha küçük bir mekanizmadır.
Önce paylaşımın çalıştığını elle kanıtlayın
Otomasyon var olmayan bir rotayı, izni veya hesabı sağlayamaz. Herhangi bir betik yazmadan önce VPN’e elle bağlanın ve paylaşımı Finder’da açın. Bu başarısız olursa betik daha kafa karıştırıcı bir şekilde başarısız olur.
Betiğin kullanacağı üç değeri not edin: profil adını Tunnelblick’in listelediği şekliyle, paylaşım URL’sini ve bağlamadan sonra Finder’ın gösterdiği birim adını. Birim adı önemlidir çünkü mevcut bir bağlamanın denetimi onu kullanır ve yalnızca ada dayanan denetim bir kolaylık korumasıdır, sunucu kimliğinin kanıtı değildir. Makinede benzersiz bir ad kullanın. Ardından sunucunun hiç değilse yanıt verdiğini doğrulayın.
smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs
İlk komut sunucunun yanıt verdiğini, ikincisi profil adının çözümlendiğini kanıtlar, üçüncüsü başarılı bir bağlamanın nasıl göründüğünü gösterir. Herhangi bir şeyi otomatikleştirmeden önce üçünü de kaydedin.
Profil durumunu Tunnelblick’ten okuyun
Tunnelblick yapılandırmalarını ve durumlarını AppleScript üzerinden sunar ve bu tasarımın ihtiyaç duyduğu tek kanca budur. Önemli olan durum, tam o profil için bildirilen dizedir, uygulamanın varlığı değil.
Sorgulamanın belirtilmeye değer sonuçları vardır. Aralıktan kısa bir yeniden bağlanma fark edilmeden geçebilir ve applet geçişi hiç görmez. Bu bir bağlama koruması için kabul edilebilir, her olaya tepki vermesi gereken bir şey için kabul edilemez. Olay sadakati gerekiyorsa bu yanlış mekanizmadır, daha kısa bir zamanlayıcı gerektiren bir mekanizma değil. Aralığı bu ödünleşimi göz önünde tutarak seçin.
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
Açık kalma seçeneğiyle uygulama olarak dışa aktarın, ardından sudo yerine oturum açmış oturumda başlatın.
Bir kez bağlayın, sonra denemeyi bırakın
Denendi bayrağı bunun kimlik bilgilerini tahmin eden bir döngüye dönüşmesini engelleyen şeydir. Applet denedikten sonra, yeniden denemeden önce bağlantı durumunun değişmesini bekler.
Bu davranış bilinçlidir. Bağlamayı reddeden bir paylaşım bunu genellikle yeni bir denemenin düzeltemeyeceği bir nedenle reddeder ve tekrarlanan denemeler bir istemi bir istem akışına dönüştürür. Bayrak, profil bağlı durumdan çıktığında sıfırlanır, böylece gerçek bir yeniden bağlanma tam olarak bir yeni deneme üretir. Applet’ten çıkıp yeniden başlatmak da onu sıfırlar ve bu elle yapılan müdahaledir. İki yolun hiçbiri bir arızayı gizlemez; ikisi de onu Finder’da görünür bırakır.
Betik hiçbir parola taşımaz ve böyle kalmalıdır. Bağlama işleminin sormasına izin verin ve anahtar zincirinin kuruluşun desteklediğini yapmasına bırakın. Bir kimlik bilgisini URL’ye gömmek, bir kolaylık betiğini döndürülmesi gereken bir sırra dönüştürür.
Yardımcının yapamadıkları
Applet’in yanına yazılmaya değer üç sınır var. Bir ağ arızasından sonra meşgul bir birimi çıkaramaz, durum bağlı dediğinde DNS ve sunucunun hazır olduğunu garanti edemez ve her yeniden bağlanmaya tepki vermez.
İlk sınır pratikte en çok önem taşıyanıdır. Sunucusu kaybolan bir paylaşım, bağlı görünen ve erişimde bloklanan bir birim bırakır ve kibar düzeltme, dosya işlemlerini bitirip planlı bir bağlantı kesintisinden önce birimi çıkarmaktır. İkincisi başarısız ilk denemelerin çoğunu açıklar: tünel ayaktadır ama çözümleyici henüz yetişmemiştir, bu yüzden bekleyin ve sonra doğrulamak için bir kez elle bağlayın. Üçüncüsü daha önceki sorgulama ödünleşimidir, düzeltilecek bir hata değil.
Gözetimsiz bir makine veya yönetilen bir filo için bu tasarım yanlış biçimdedir. Bir masaüstü applet’ini ayrıcalıklı bir hizmete genişletmek yerine yöneticiye ait bir bağlama ilkesi kullanın.