İş oturum açılışında çalışır, günlük istemcinin başladığını gösterir, ama tünel hiç kalkmaz. Ya da kalkar ve birkaç saniye sonra kaybolur. Her iki durumda da özellik listesi muhtemelen doğruydu. launchd işi kabul ettiğinde iki söz verdi: bir süreci denetleyecek ve o süreç çalışmaya devam edecek. VPN her ikisine de ihtiyaç duyar ve doğru bir XML dosyası hiçbirini sağlamaz.

Geçerli bir özellik listesi çalışan bir hizmet değildir

plutil -lint yapıyı denetler. İkili dosyanın var olup olmadığını, argümanların bu istemci sürümü tarafından desteklenip desteklenmediğini veya işin kimlik bilgilerinin erişilebilir olduğu bir bağlamda başlayıp başlamadığını söyleyemez. Bunlar anlamsal sorulardır ve launchd sorunu gibi görünen arızaların çoğunu açıklarlar.

plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn

İşin yüklendiğini varsaymak yerine ikinci komutun çıktısını okuyun. Son çıkış durumunu ve hizmetin çalışıp çalışmadığını bildirir; bu, profile dokunmadan önce "hiç başlamadı" ile "başladı ve öldü" durumlarını ayırır.

Aracılar kullanıcı oturumunu devralır, arka plan programları devralmaz

Apple'ın launchd belgeleri kullanıcı başına aracıları sistem arka plan programlarından ayırır. Aracı, oturum açmış kullanıcının bağlamında, o kullanıcının anahtarlığı ve ortamıyla çalışır. Arka plan programı o oturum olmadan çalışır ve bir işi sistem dizinine taşımak kullanıcının etkileşimli kimlik bilgilerini yeniden oluşturmaz.

Tasarımı belirleyen bu ayrımdır. Bağlantı bir kişinin oturum açmasını veya bir MFA istemini onaylamasını gerektiriyorsa, desteklenen düzen oturum açıldıktan sonra çalışan kullanıcı oturumu işi. Kimse oturum açmadan çalışması gerekiyorsa, istemcinin kendi yenileme ve iptal süreciyle onaylanmış gözetimsiz bir kimliğe ihtiyacı vardır. Yanlış satırı seçmek, temiz başlayan ve ilk kimlik doğrulama adımında başarısız olan bir iş üretir.

Bu farkı argüman dizisindeki bir parolayla veya sertifika denetimlerini kapatarak örtmeyin. İkisi de bir kimlik doğrulama gereksinimini okunabilir bir dosyada kalıcı bir sırra dönüştürür ve ikincisi tünelin yanıt veren her şeyi doğruladığı anlamına gelir.

Gözetim yalnızca süreç önde kaldığında işe yarar

Kendini arka plan programına dönüştüren bir istemci denetimi hemen launchd'a geri verir ve gözetleyici artık sona ermiş bir süreci izler. Tünel ayakta olabilir, ama launchd işin başarısız olduğunu düşünür ve yeniden başlatma politikası amaçlamadığınız bir şey yapar.

İstemcinin belgelenmiş ön plan veya hizmet modunu kullanın. Ürünün kendine ait desteklenen bir başlatma özelliği varsa, o özellik önde nasıl kalınacağını ve ağ yığınına nasıl devredileceğini zaten bilir; özel bir iş ayrı bir tasarımdır, onun iyileştirmesi değil.

İşe benzersiz bir etiket, amaçlanan çalıştırılabilir dosyayı ve bilinçli bir argüman dizisi verin. Dizi bir kabuk komut satırı değildir, bu yüzden boru hatları ve yönlendirmeler orada çalışmaz ve tırnak davranışı farklıdır. Yöneticinin terminalinde başarılı olan bir komut en fazla ön kontroldür.

Kimlik bilgileri istem olmadan çalışmalıdır

Gözetimsiz çalışma kimlik bilgisi sorununu ortadan kaldırmak yerine taşır. Birinin kimliğe sahip olması, ne kadar yaşayacağına karar vermesi ve nasıl değiştirildiğini belgelemesi gerekir. Son kullanma izlemesi olmayan bir sertifika, takvimde tarihi olan bir kesintiye dönüşür.

Sırları argümanlardan ve işin standart çıktısından uzak tutun. İstemci korumalı bir depodan kimlik bilgisi okumayı destekliyorsa o yolu kullanın ve işin yürütme bağlamının depoya ulaşabildiğini doğrulayın. root olarak çalışan bir arka plan programı genellikle oturum açma anahtarlığındaki bir öğeyi okuyamaz ve bu yalnızca sistem bağlamında ortaya çıkan türden bir ayrıntıdır.

Hazır olmanın ne demek olduğunu tanımlayın, sonra orada test edin

Başarılı bir başlatma sürecin başladığını kanıtlar. Ağın ayakta olduğunu, ağ geçidinin kimliği kabul ettiğini veya özel uygulamanın erişilebilir olduğunu kanıtlamaz. Başka bir şey tünele bağlıysa, işin başlama zamanını değil bağlantıyı yansıtan bir hazır olma sinyaline ihtiyacı vardır.

Yeniden denemeler sınırlı olmalı ve eksik bir ağı reddedilen bir kimlik bilgisinden ayırmalıdır. Her hatada yeniden başlatmak süresi geçmiş bir sertifikayı onaramaz ve gerçeğini gizleyen aynı denemelerle dolu bir günlük üretir.

İşi gerçekten çalışacağı bağlamda kabul edin: açılışta ağ yok, normal bir oturum açma, uykudan uyanma ve kontrollü bir durdurma. Ardından iş etiketini, istemci sürümünü ve profil revizyonunu birlikte kaydedin, böylece sonraki kişi bir zamanlar çalışmış bir dosya yerine atfedilebilir bir hizmeti devralır.

İlgili makaleler