Disabilita i requisiti della password dello screensaver dalla riga di comando


11

Sto cercando di abilitare e disabilitare i requisiti della password dello screensaver dalla riga di comando.

defaults read com.apple.screensaver

mostra una variabile askForPassword impostata su 0 o 1, a seconda che abbia configurato o meno un requisito password nelle Preferenze di Sistema.

defaults write com.apple.screensaver askForPassword 1

e

defaults write com.apple.screensaver askForPassword 0

abilitare e disabilitare l'impostazione della password, o almeno così pensavo.

Quello che trovo invece è che i comandi effettivamente selezionano e deselezionano la casella di controllo in Preferenze di Sistema in Sicurezza, ma non influenzano affatto lo screensaver.

Se abilito la password in Preferenze di Sistema e poi la disabilito utilizzando il secondo comando di scrittura dei valori predefiniti, la casella di controllo in Preferenze di Sistema è deselezionata, ma lo screensaver chiederà comunque una password. Solo selezionando e deselezionando la casella di controllo in Preferenze di Sistema è possibile modificare questo comportamento ora.

E se disabilito la password in Preferenze di Sistema e quindi la abilito utilizzando il primo comando di scrittura dei valori predefiniti, la casella di controllo in Preferenze di Sistema è selezionata, ma lo screensave non chiederà una password. Deselezionando e spuntando la casella di controllo in Preferenze di Sistema solo il comportamento cambia in seguito.

Cosa sta succedendo?

Posso immaginare che questa sia un'impostazione globale e che dovrei modificare al /Library/Preferences/com.apple.screensaverposto del dominio dell'utente. Ma in quel caso, perché c'è un effetto sulla casella di controllo Preferenze di Sistema?


Questo è un po 'sconcertante. Ho visto la lettura / scrittura del file mentre ho attivato l'impostazione "Richiedi password". L'unico file che posso vedere in fase di modifica è com.apple.screensaver. Sto indovinando che un messaggio viene inviato ad alcuni servizi quando questo pulsante viene attivato nella GUI, oltre a scrivere nel file plist. Scommetto che il riavvio del sistema o la disconnessione / accesso potrebbero causare la rilettura del file da parte del servizio, apportando la modifica desiderata.
macaco,

1
Avevo ragione! Disconnettersi e riconnettersi dopo aver modificato il file plist fa riflettere la modifica delle impostazioni. Quindi, sembra che tu abbia bisogno di trovare quale servizio sta controllando il comportamento "richiedi password" e reimpostalo / ricaricalo dopo aver modificato il plist.
macaco,

Sembra che Apple abbia minato il proprio meccanismo di plist.
Andrew J. Brehm,

Ta. Spero che qualcuno lo sappia e risponda qui.
Andrew J. Brehm,

1
È il processo 'loginwindow' che sembra accedere a questo file dopo che è stato scritto da Preferenze di Sistema. Questo ha senso. Sfortunatamente, uccidere il processo di loginwindow ti disconnetterà forzatamente. Continua a scavare!
macaco,

Risposte:


7

Se non sei obbligato a usare le impostazioni predefinite scrivi puoi usare il seguente comando. Interagisce con il sistema operativo come se dovessi utilizzare le Preferenze di Sistema.

TESTATO SU:

  • 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'

NOTA: se il comando viene eseguito all'interno di uno script a cui sono stati assegnati i privilegi di root, non è necessario il sudo .

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

Bello! Riga di comando AppleScript è spesso una buona soluzione a questo tipo di problema.
Daniel

@DanielLawson Grazie, stai attualmente lavorando al 10.7? In genere mi piace pubblicare su quali SO ho testato i miei comandi e purtroppo questa mattina sono bloccato con una vecchia macchina Snow Leopard e non avrò accesso a una macchina 10.7 fino a oggi. Odierei che funzioni su 10.6.xe fallisca su 10.7 :–( Tuttavia, sono abbastanza sicuro che funzionerà perché i piani sono molto simili. So che screensaver.plist di 10.5 è diverso e che sarebbe necessario modificare Comunque, grazie ancora. :–)
E1Salva

1
Ho provato questo su 10.7.5 su OS X Server e non funziona. Lo screensaver richiede ancora una password e la preferenza non è deselezionata.

1
Questo funziona per me il 10.11 (El Capitan). L'ho trovato da questo thread ( github.com/dustinrue/ControlPlane/issues/421 )
GTF

1
Il metodo "osascript" non funziona sul mio Mac High Sierra. Il file ~ / Library / Preferences / com.apple.screensaver.plist non sembra essere influenzato dall'interfaccia GUI sul mio Mac High Sierra.
Kent,

3

Ho riscontrato un problema simile e ho trovato una soluzione dall'utente Guillaume in questo post del forum . Fondamentalmente, è necessario forzare lo screensaver per rileggere la preferenza del requisito della password, che è possibile fare con un programma C:

#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;
}

E compila questo con:

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

Quindi chiamare questo programma immediatamente dopo la chiamata a defaults write


Aggiornamento: su High Sierra (10.13.6) questo viene compilato, ma riporta questo errore: "ld: avviso: file stub basato su testo /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd e file di libreria / Sistema / Libreria /Frameworks//CoreFoundation.framework/CoreFoundation non sono sincronizzati. Tornando al file della libreria per il collegamento. " Non riesce con un errore di segmentazione durante l'esecuzione.
TJ Luoma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.