Der Mac, der Sie anmeldet und nichts zeigt
Ein Kunde öffnet seinen Mac im Browser. Die Verbindung klappt. Benutzername und Passwort werden akzeptiert. Dann ist der Bildschirm schwarz. Kein Fehler, kein Verbindungsabbruch. Schwarz, mit einem Mauszeiger, der sich bewegt.
Jedes Log sagt, die Maschine sei in Ordnung. Der Dienst für die Bildschirmfreigabe läuft. Das Konto authentifiziert sich. Die Sitzung ist entsperrt. Festplatte, CPU und Arbeitsspeicher sind normal. Nirgends wird ein Problem gemeldet.
Das hat uns mehrere Tage gekostet. Hier steht, was es wirklich war. Und warum die naheliegenden Tests dafür schlimmer als nutzlos sind.
Alles Naheliegende ist falsch
Bei einem headless Mac mit schwarzem Bildschirm gibt es die üblichen Verdächtigen. Wir sind sie alle durchgegangen.
- Kein Display angeschlossen. Der übliche Rat ist ein HDMI-Dummy-Stecker. Wir haben welche gekauft. Keine Änderung.
- Auflösung. Ein headless Mac kann mit einer Größe starten, die manche Clients nicht mögen. Daran lag es nicht.
- Die Bildschirmsperre. Eine gesperrte Sitzung kann schwarz liefern. Die Sitzung war entsperrt.
- Das Display selbst. Wir haben einen echten Monitor an einen echten Mac mini angeschlossen. Auch der physische Bildschirm war schwarz.
Dieser letzte Punkt lenkte die Suche um. Die Maschine scheiterte nicht daran, ein Bild an einen entfernten Client zu senden. Es gab gar kein Bild.
Laufen heißt nicht erlaubt sein
Unser Provisioning-Skript schaltet die Bildschirmfreigabe auf die einzige Weise ein, die ohne Menschen vor Ort funktioniert:
launchctl enable system/com.apple.screensharing launchctl bootstrap system /System/Library/LaunchDaemons/com.apple.screensharing.plist
Das startet den Dienst. Seit macOS 14 verweigert Apples eigenes kickstart -activate den Betrieb ohne Bildschirm. Also bleibt nur dieser Weg.
Den Dienst zu starten ist aber nicht dasselbe, wie ihm das Recht zur Bildschirmaufnahme zu geben. Bildschirmaufnahme ist ein TCC-Recht. macOS vergibt es auf genau zwei Wegen. Entweder schaltet ein Mensch die Bildschirmfreigabe in den Systemeinstellungen ein und authentifiziert sich. Oder MDM verteilt ein PPPC-Profil.
Ohne dieses Recht läuft der Dienst trotzdem. Er lauscht weiter auf Port 5900. Er akzeptiert weiter Ihr Passwort. Er darf Ihnen nur nichts zeigen.
macOS sagt das sogar, wenn Sie die richtige Frage stellen:
$ 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.
Warum wir es nicht früher gefunden haben
Dieser Teil ist es wert, weitergegeben zu werden. Das Problem war nicht, dass die Antwort versteckt war. Jede billige Prüfung sagte uns, alles sei in Ordnung.
screencapture über SSH schlägt immer fehl. In einer SSH-Sitzung verweigert TCC den Aufruf, ob das Recht vergeben ist oder nicht. Eine kaputte Maschine lässt sich damit nicht von einer funktionierenden unterscheiden. Jedes Ergebnis war für uns also nur Rauschen.
Die kickstart-Prüfung besteht, wenn ihr Rechte fehlen. Ohne ausreichende Rechte gibt sie gar nichts aus. Code, der leere Ausgabe als fehlende Warnung deutet, liest das als Erfolg. Unserer tat das.
Beide Prüfungen haben eine Eigenschaft gemeinsam: Ihre Ausgabe bei einem Fehler gleicht ihrer Ausgabe bei Erfolg. So eine Prüfung ist kein schwacher Beleg. Sie ist gar kein Beleg, nur als Beruhigung verkleidet.
Das Bild messen
Der einzig verlässliche Test ist das, was der Kunde sieht. Wir verbinden uns als echter VNC-Client, holen ein Rechteck aus dem Framebuffer und messen es. Ein schwarzer Desktop besteht aus zwei Farben mit fast null Helligkeit. Ein funktionierender nicht.
desktop : Mac mini 1920x1080 32bpp depth24 sampled : 273768 pixels from 1 rect(s) mean brightness: 36.31% distinct colours: 93828 RESULT: REAL PICTURE
Dreiundneunzigtausend verschiedene Farben sind ein Desktop. Zwei sind ein Fehler. Da muss nichts gedeutet werden, und kein Exit-Code kann falsch gelesen werden. Das läuft jetzt auf jeder Maschine, bevor ein Kunde sie bekommt.
Die Lösung und was sie kostet
Auf einer Maschine dauert die Lösung zehn Sekunden. Öffnen Sie Systemeinstellungen, Allgemein, Teilen. Schalten Sie die Bildschirmfreigabe aus und wieder ein. Dabei wird ein Administratorpasswort abgefragt, und genau diese Authentifizierung ist der Punkt. Meist sieht der Schalter schon eingeschaltet aus, weil das Skript den Dienst gestartet hat. Erst das Umschalten vergibt das Recht.
Das Recht gilt systemweit. Es übersteht also das Zurücksetzen der Maschine zwischen Kunden. Das haben wir geprüft: Wir haben eine Maschine zurückgesetzt und erneut getestet.
Der eigentliche Preis: Es braucht einmal einen Menschen an der Maschine. Das ist der einzige manuelle Schritt in einem sonst geskripteten Ablauf. Für eine ganze Flotte ist die Antwort ein MDM-Konfigurationsprofil, das das Recht vorab vergibt. Das ist die richtige Lösung. Und es ist das Einzige, was Sie auf einem noch nicht registrierten Mac nicht per Skript umgehen können.
Wenn Sie Macs automatisieren
Zwei Dinge lohnen sich mitzunehmen. Nur eines davon betrifft die Bildschirmaufnahme.
Erstens hat macOS eine Art von Zustand, an die kein Skript herankommt. TCC-Rechte sind bewusst hinter einem Menschen an der Tastatur oder einem MDM-Profil verschlossen. Geht Ihre Automatisierung davon aus, alles konfigurieren zu können, erzeugt sie irgendwann eine Maschine, die eingerichtet aussieht und es nicht ist.
Zweitens etwas Allgemeineres. Bevor Sie eine Prüfung schreiben, fragen Sie, was sie ausgibt, wenn die Sache kaputt ist. Gleicht das der Ausgabe, wenn die Sache funktioniert, ist die Prüfung wertlos. Sie kostet Sie mehr Zeit als gar keine Prüfung. Wir hatten zwei davon. Deshalb hat das Tage gedauert statt eines Nachmittags.
Rechnen Sie selbst nach mit dem Kostenrechner oder mieten Sie einen Runner.