Désactiver l'exigence de mot de passe de l'économiseur d'écran à partir de la ligne de commande

11

J'essaie d'activer et de désactiver l'exigence de mot de passe de l'économiseur d'écran depuis la ligne de commande.

defaults read com.apple.screensaver

affiche une variable askForPassword définie sur 0 ou 1, selon que j'ai configuré une exigence de mot de passe dans les Préférences Système ou non.

defaults write com.apple.screensaver askForPassword 1

et

defaults write com.apple.screensaver askForPassword 0

activer et désactiver le paramètre de mot de passe, du moins je le pensais.

Ce que je trouve à la place, c'est que les commandes vérifient et décochent la case à cocher dans les Préférences Système sous Sécurité mais n'affectent pas du tout l'économiseur d'écran.

Si j'active le mot de passe dans les Préférences Système, puis le désactive à l'aide de la deuxième commande d'écriture par défaut, la case à cocher dans les Préférences Système n'est pas cochée, mais l'économiseur d'écran demandera toujours un mot de passe. Seule l'activation et la désactivation de la case à cocher dans les Préférences Système peuvent désormais modifier ce comportement.

Et si je désactive le mot de passe dans les Préférences Système et que je l'active à l'aide de la première commande d'écriture par défaut, la case à cocher dans les Préférences Système est cochée, mais l'écran de veille ne demandera pas de mot de passe. Ne décocher et cocher que la case à cocher dans les Préférences Système modifie le comportement par la suite.

Que se passe-t-il?

Je peux imaginer qu'il s'agit d'un paramètre global et que je devrais modifier à la /Library/Preferences/com.apple.screensaverplace du domaine utilisateur. Mais dans ce cas, pourquoi y a-t-il un effet sur la case à cocher Préférences Système?

Andrew J. Brehm
la source
C'est un peu déroutant. J'ai regardé le fichier lire / écrire tout en basculant le paramètre «demander un mot de passe». Le seul fichier que je peux voir en cours de modification est com.apple.screensaver. Je suppose qu'un message est envoyé à un service lorsque ce bouton est basculé dans l'interface graphique ainsi que l'écriture dans le fichier plist. Je parierais que le redémarrage du système ou la déconnexion / la connexion pourrait entraîner la relecture du fichier par ledit service, apportant la modification souhaitée.
macaco
1
J'avais raison! La déconnexion puis la reconnexion après avoir modifié le fichier plist entraîne la modification des paramètres. Il semble donc que vous ayez besoin de trouver quel service contrôle le comportement de «demande de mot de passe» et de le réinitialiser / recharger après avoir modifié le plist.
macaco
On dirait qu'Apple sape leur propre mécanisme de plist.
Andrew J.Brehm
Ta. J'espère que quelqu'un le saura et répondra ici.
Andrew J.Brehm
1
C'est le processus «loginwindow» qui semble accéder à ce fichier après avoir été écrit par les Préférences Système. Ce qui est logique. Malheureusement, la suppression du processus loginwindow vous déconnectera de force. Continue à creuser!
macaco

Réponses:

7

Si vous n'êtes pas obligé d'utiliser l' écriture par défaut, vous pouvez utiliser la commande suivante. Il interagit avec le système d'exploitation de la même manière que si vous utilisiez les Préférences Système.

TESTÉ SUR:

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

REMARQUE: Si la commande est exécutée à l'intérieur d'un script qui a reçu les privilèges root, vous n'aurez pas besoin du sudo .

osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'
E1Suave
la source
Agréable! La ligne de commande AppleScript est souvent une bonne solution à ce type de problème.
Daniel
@DanielLawson Merci, travaillez-vous actuellement sur 10.7? J'aime généralement poster sur quel OS j'ai testé mes commandes et malheureusement ce matin je suis coincé avec une vieille machine Snow Leopard et je n'aurai accès à une machine 10.7 que plus tard dans la journée. Je détesterais qu'il fonctionne sur 10.6.x et échoue sur 10.7 :–( Cependant, je suis assez certain que cela fonctionnera car les listes sont très similaires. Je sais que screensaver.plist de 10.5 est différent et quelques ajustements seraient nécessaires Quoi qu'il en soit, merci encore. :–)
E1Suave
1
J'ai testé cela sur 10.7.5 sur OS X Server et cela ne fonctionne pas. L'économiseur d'écran nécessite toujours un mot de passe et la préférence n'est pas décochée.
1
Cela fonctionne pour moi le 10.11 (El Capitan). Trouvé à partir de ce fil ( github.com/dustinrue/ControlPlane/issues/421 )
GTF
1
La méthode "osascript" ne fonctionne pas sur mon High Sierra Mac. Le fichier ~ / Library / Preferences / com.apple.screensaver.plist ne semble pas être affecté par le commutateur GUI sur mon High Sierra Mac.
Kent
3

J'ai rencontré un problème similaire et j'ai trouvé une solution de l'utilisateur Guillaume sur ce post de forum . Fondamentalement, vous devez forcer l'économiseur d'écran à relire la préférence d'exigence de mot de passe, ce que vous pouvez faire avec un programme 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;
}

Et compilez ceci avec:

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

Appelez ensuite ce programme immédiatement après votre appel au defaults write

Chris C
la source
Mise à jour: sur High Sierra (10.13.6), cela se compile, mais signale cette erreur: "ld: avertissement: fichier de remplacement basé sur du texte /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd et fichier de bibliothèque / System / Library /Frameworks//CoreFoundation.framework/CoreFoundation n'est pas synchronisé. Revenir au fichier de bibliothèque pour la liaison. " Il échoue avec un défaut de segmentation lors de l'exécution.
TJ Luoma