← ब्लॉग

वह Mac जो लॉग इन तो करता है, पर कुछ नहीं दिखाता

20 सितंबर 2026 · 7 मिनट में पढ़ें

एक ग्राहक ब्राउज़र में अपना Mac खोलता है। कनेक्शन बन जाता है। यूज़रनेम और पासवर्ड मान लिए जाते हैं। फिर स्क्रीन काली रहती है। न कोई एरर, न डिस्कनेक्ट। बस काली स्क्रीन, और उस पर चलता माउस कर्सर।

हर लॉग कहता है कि मशीन ठीक है। Screen Sharing सर्विस चल रही है। अकाउंट ऑथेंटिकेट होता है। सेशन अनलॉक है। डिस्क, CPU और मेमोरी सामान्य हैं। कहीं भी कोई समस्या नहीं दिखती।

इसमें हमारे कई दिन गए। यहाँ बताया है कि असल में क्या था। और यह भी कि इसे जाँचने के आसान तरीके बेकार से भी बदतर क्यों हैं।

हर आसान जवाब गलत निकला

काली स्क्रीन वाले हेडलेस Mac के लिए संदिग्धों की एक जानी-पहचानी सूची होती है। हमने सब जाँचे।

  • कोई डिस्प्ले नहीं जुड़ा। आम सलाह है डमी HDMI प्लग लगाने की। हमने ख़रीदे। कोई बदलाव नहीं।
  • रिज़ॉल्यूशन। हेडलेस Mac ऐसे साइज़ पर चालू हो सकता है जो कुछ क्लाइंट को पसंद नहीं। यह वजह नहीं थी।
  • स्क्रीन लॉक। लॉक सेशन काली स्क्रीन दिखा सकता है। सेशन अनलॉक था।
  • ख़ुद डिस्प्ले। हमने एक असली Mac mini पर असली मॉनिटर लगाया। फ़िज़िकल स्क्रीन भी काली थी।

इसी आख़िरी जाँच ने खोज की दिशा बदली। मशीन रिमोट क्लाइंट को तस्वीर भेजने में फ़ेल नहीं हो रही थी। तस्वीर थी ही नहीं।

चलना और अनुमति होना एक बात नहीं

हमारी प्रोविज़निंग स्क्रिप्ट Screen Sharing को उसी इकलौते तरीके से चालू करती है जो बिना इंसान के काम करता है:

launchctl enable system/com.apple.screensharing
launchctl bootstrap system   /System/Library/LaunchDaemons/com.apple.screensharing.plist

इससे सर्विस शुरू हो जाती है। macOS 14 से Apple का अपना kickstart -activate हेडलेस चलने से मना करता है। इसलिए बस यही तरीका बचता है।

पर सर्विस शुरू करना और उसे स्क्रीन रिकॉर्ड करने की अनुमति देना एक बात नहीं है। स्क्रीन रिकॉर्डिंग एक TCC प्रिविलेज है। macOS इसे ठीक दो तरीकों से देता है। पहला, कोई इंसान System Settings में Screen Sharing चालू करे और ऑथेंटिकेट करे। दूसरा, MDM एक PPPC प्रोफ़ाइल भेजे।

इस अनुमति के बिना भी सर्विस चलती रहती है। वह अब भी पोर्ट 5900 पर सुनती है। वह अब भी आपका पासवर्ड मानती है। बस उसके पास आपको दिखाने लायक कुछ नहीं होता जिसकी उसे अनुमति हो।

अगर आप सही सवाल पूछें, तो macOS यह बता देता है:

$ sudo .../ARDAgent.app/Contents/Resources/kickstart     -configure -access -on -users runner -privs -all

Screen recording might be disabled. Screen Sharing or Remote
Management must be enabled from System Settings or via MDM.

हमें यह पहले क्यों नहीं मिला

यही हिस्सा आगे बताने लायक है। समस्या यह नहीं थी कि जवाब छिपा था। समस्या यह थी कि जाँच का हर सस्ता तरीका कहता रहा कि सब ठीक है।

SSH पर screencapture हमेशा फ़ेल होता है। इसे SSH सेशन में चलाएँ, तो TCC इसे रोक देता है, चाहे प्रिविलेज मिली हो या नहीं। यह ख़राब मशीन और ठीक मशीन में फ़र्क नहीं कर सकता। इसलिए इसका हर नतीजा हमारे लिए बेमतलब था।

kickstart वाली जाँच तब पास होती है जब उसके पास प्रिविलेज न हो। पर्याप्त अधिकार न हों, तो यह कुछ भी प्रिंट नहीं करती। जो कोड ख़ाली आउटपुट को "कोई चेतावनी नहीं" मानता है, वह इसे सफलता समझता है। हमारा कोड भी यही करता था।

दोनों जाँचों में एक बात समान है: फ़ेल होने पर उनका आउटपुट वही है जो सफल होने पर। ऐसी जाँच कमज़ोर सबूत नहीं है। वह कोई सबूत ही नहीं है, बस तसल्ली का दिखावा है।

तस्वीर को मापें

भरोसे लायक इकलौती जाँच वही चीज़ है जो ग्राहक देखता है। हम असली VNC क्लाइंट की तरह कनेक्ट करते हैं, फ़्रेमबफ़र का एक आयत खींचते हैं, और उसे मापते हैं। काले डेस्कटॉप में लगभग शून्य चमक पर दो रंग होते हैं। काम करने वाले में ऐसा नहीं होता।

desktop        : Mac mini  1920x1080  32bpp depth24
sampled        : 273768 pixels from 1 rect(s)
mean brightness: 36.31%
distinct colours: 93828
RESULT: REAL PICTURE

तिरानवे हज़ार अलग रंग मतलब डेस्कटॉप है। दो रंग मतलब फ़ेल। इसमें व्याख्या की ज़रूरत नहीं, और गलत पढ़ने को कोई एग्ज़िट कोड नहीं। अब यह जाँच हर मशीन पर चलती है, किसी ग्राहक के पास जाने से पहले।

फ़िक्स, और उसकी कीमत

एक मशीन पर फ़िक्स दस सेकंड का है। System Settings, General, Sharing खोलें। Screen Sharing बंद करें। फिर चालू करें। यह एडमिनिस्ट्रेटर पासवर्ड माँगता है, और वही ऑथेंटिकेशन असली बात है। स्विच आम तौर पर पहले से चालू दिखता है, क्योंकि स्क्रिप्ट ने सर्विस शुरू की थी। फिर भी उसे बंद करके चालू करने से ही प्रिविलेज मिलती है।

यह अनुमति सिस्टम लेवल की है, इसलिए ग्राहकों के बीच मशीन मिटाने पर भी बनी रहती है। हमने एक यूनिट मिटाकर फिर से जाँचा और इसकी पुष्टि की।

असली कीमत यह है कि इसके लिए एक बार मशीन के पास किसी इंसान का होना ज़रूरी है। बाकी पूरी प्रक्रिया स्क्रिप्ट से होती है, यही अकेला मैनुअल स्टेप है। फ़्लीट के स्तर पर इसका जवाब MDM कॉन्फ़िगरेशन प्रोफ़ाइल है, जो पहले से ही प्रिविलेज दे देती है। यही सही फ़िक्स है। जिस Mac को आपने अभी एनरोल नहीं किया, उस पर यही एक चीज़ है जिसे स्क्रिप्ट से टाला नहीं जा सकता।

अगर आप Mac ऑटोमेट करते हैं

यहाँ से दो बातें सीखने लायक हैं, और उनमें से सिर्फ़ एक स्क्रीन रिकॉर्डिंग के बारे में है।

पहली यह कि macOS में कुछ स्टेट ऐसी है जहाँ स्क्रिप्ट नहीं पहुँच सकती। TCC प्रिविलेज जानबूझकर कीबोर्ड पर बैठे इंसान या MDM प्रोफ़ाइल के पीछे रखी गई हैं। अगर आपका ऑटोमेशन मानता है कि वह सब कुछ कॉन्फ़िगर कर सकता है, तो एक दिन वह ऐसी मशीन बनाएगा जो तैयार दिखती है पर होती नहीं।

दूसरी बात ज़्यादा सामान्य है। कोई जाँच लिखने से पहले पूछें कि चीज़ ख़राब होने पर वह क्या प्रिंट करती है। अगर वह वही है जो चीज़ ठीक होने पर प्रिंट होता है, तो जाँच बेकार है। वह आपका उससे ज़्यादा समय लेगी जितना कोई जाँच न होने पर जाता। हमारे पास ऐसी दो जाँचें थीं। इन्हीं की वजह से इसमें एक दोपहर की जगह कई दिन लगे।

अपना हिसाब खुद लगाएँ: कैलकुलेटर देखें, या एक runner लीज़ करें।