Deaktivieren Sie die Kennwortanforderung für den Bildschirmschoner über die Befehlszeile

11

Ich versuche, die Anforderung des Bildschirmschoner-Kennworts über die Befehlszeile zu aktivieren und zu deaktivieren.

defaults read com.apple.screensaver

zeigt eine Variable askForPassword an, die entweder auf 0 oder 1 gesetzt ist, je nachdem, ob ich eine Kennwortanforderung in den Systemeinstellungen konfiguriert habe oder nicht.

defaults write com.apple.screensaver askForPassword 1

und

defaults write com.apple.screensaver askForPassword 0

Aktivieren und Deaktivieren der Passworteinstellung, dachte ich.

Stattdessen stelle ich fest, dass die Befehle das Kontrollkästchen in den Systemeinstellungen unter Sicherheit zwar aktivieren und deaktivieren, den Bildschirmschoner jedoch überhaupt nicht beeinflussen.

Wenn ich das Kennwort in den Systemeinstellungen aktiviere und es dann mit dem zweiten Standardschreibbefehl deaktiviere, ist das Kontrollkästchen in den Systemeinstellungen deaktiviert, aber der Bildschirmschoner fragt weiterhin nach einem Kennwort. Nur das Aktivieren und Deaktivieren des Kontrollkästchens in den Systemeinstellungen kann dieses Verhalten jetzt ändern.

Wenn ich das Kennwort in den Systemeinstellungen deaktiviere und es dann mit dem ersten Standardschreibbefehl aktiviere, ist das Kontrollkästchen in den Systemeinstellungen aktiviert, aber der Bildschirmspeicher fragt nicht nach einem Kennwort. Nur das Deaktivieren und Aktivieren des Kontrollkästchens in den Systemeinstellungen ändert das Verhalten anschließend.

Was ist los?

Ich kann mir vorstellen, dass dies eine globale Einstellung ist und ich /Library/Preferences/com.apple.screensaveranstelle der Benutzerdomäne ändern sollte . Warum wirkt sich dies in diesem Fall auf das Kontrollkästchen Systemeinstellungen aus?

Andrew J. Brehm
quelle
Das ist etwas verwirrend. Ich habe das Lesen / Schreiben von Dateien beobachtet, während ich die Einstellung "Nach Passwort fragen" umgeschaltet habe. Die einzige Datei, deren Änderung ich sehen kann, ist com.apple.screensaver. Ich vermute, dass eine Nachricht an einen Dienst gesendet wird, wenn diese Schaltfläche in der GUI umgeschaltet wird und in die Plist-Datei geschrieben wird. Ich würde wetten, dass ein Neustart des Systems oder das Abmelden / Anmelden dazu führen könnte, dass die Datei von diesem Dienst erneut gelesen wird und die gewünschte Änderung vorgenommen wird.
Macaco
1
Ich lag richtig! Wenn Sie sich nach dem Ändern der Plist-Datei abmelden und dann wieder anmelden, wird die Änderung der Einstellungen übernommen. Es sieht also so aus, als müssten Sie herausfinden, welcher Dienst das Verhalten "Nach Passwort fragen" steuert, und es zurücksetzen / neu laden, nachdem Sie die Liste geändert haben.
Macaco
Sieht so aus, als würde Apple seinen eigenen Plist-Mechanismus untergraben.
Andrew J. Brehm
Ta. Ich hoffe, jemand wird das wissen und hier antworten.
Andrew J. Brehm
1
Es ist der 'Loginwindow'-Prozess, der auf diese Datei zuzugreifen scheint, nachdem sie von den Systemeinstellungen geschrieben wurde. Was Sinn macht. Wenn Sie den Anmeldefensterprozess beenden, werden Sie leider zwangsweise abgemeldet. Grabe weiter!
Macaco

Antworten:

7

Wenn Sie nicht gezwungen sind, Standardeinstellungen zu verwenden , können Sie den folgenden Befehl verwenden. Es interagiert mit dem Betriebssystem genauso, als ob Sie die Systemeinstellungen verwenden würden.

GETESTET AUF:

  • 10.5.x.
  • 10.6.x
  • 10.7.x.
  • 10.8.x.
  • 10.9.x.

sudo osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'

HINWEIS: Wenn der Befehl in einem Skript ausgeführt wird, dem Root-Berechtigungen erteilt wurden, benötigen Sie den sudo nicht .

osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'
E1Suave
quelle
Nett! Befehlszeile AppleScript ist oft eine gute Lösung für diese Art von Problem.
Daniel
@ DanielLawson Danke, arbeitest du gerade an 10.7? Im Allgemeinen poste ich gerne, auf welchen Betriebssystemen ich meine Befehle getestet habe, und leider stecke ich heute Morgen mit einer alten Snow Leopard-Maschine fest und habe erst später heute Zugriff auf eine 10.7-Maschine. Ich würde es hassen, wenn es unter 10.6.x funktioniert und unter 10.7 fehlschlägt :–( Ich bin jedoch ziemlich sicher, dass dies funktionieren wird, da die Listen sehr ähnlich sind. Ich weiß, dass die Bildschirmschoner-Liste von 10.5 anders ist und einige Anpassungen erforderlich wären
Trotzdem
1
Ich habe dies unter 10.7.5 unter OS X Server getestet und es funktioniert nicht. Der Bildschirmschoner benötigt weiterhin ein Passwort und die Einstellung ist nicht deaktiviert.
1
Dies funktioniert bei mir am 10.11. (El Capitan). Fand es aus diesem Thread ( github.com/dustinrue/ControlPlane/issues/421 )
GTF
1
Die "osascript" -Methode funktioniert auf meinem High Sierra Mac nicht. Die Datei ~ / Library / Preferences / com.apple.screensaver.plist scheint vom GUI-Schalter auf meinem High Sierra Mac nicht betroffen zu sein.
Kent
3

Ich bin auf ein ähnliches Problem gestoßen und habe in diesem Forumsbeitrag eine Lösung von Benutzer Guillaume gefunden . Grundsätzlich müssen Sie den Bildschirmschoner zwingen, die Kennwortanforderungen erneut zu lesen, was Sie mit einem C-Programm tun können:

#include <CoreFoundation/CoreFoundation.h>

int main(int argc, char ** argv)
{
    CFMessagePortRef port = CFMessagePortCreateRemote(NULL, CFSTR("com.apple.loginwindow.notify"));
    CFMessagePortSendRequest(port, 500, 0, 0, 0, 0, 0);
    CFRelease(port);
    return 0;
}

Und kompiliere dies mit:

cc -o /tmp/anywhereyouwantit/notif notif.c -framework CoreFoundation

Rufen Sie dieses Programm dann sofort nach Ihrem Aufruf an auf defaults write

Chris C.
quelle
Update: In High Sierra (10.13.6) wird dies kompiliert, meldet jedoch diesen Fehler: "ld: Warnung: textbasierte Stub-Datei /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd und Bibliotheksdatei / System / Library /Frameworks//CoreFoundation.framework/CoreFoundation sind nicht synchron. Zum Verknüpfen wird auf die Bibliotheksdatei zurückgegriffen. " Es schlägt mit einem Segmentierungsfehler fehl, wenn es ausgeführt wird.
TJ Luoma