5 votes

Comment puis-je faire en sorte que macOS demande mon mot de passe une fois par jour, avant Touch ID ?

Mon Mac est configuré avec Touch ID et la plupart du temps je veux ça, mais je veux configurer une politique telle que la première fois que je le réveille après 6 heures du matin, il nécessite mon mot de passe, ou qu'il nécessite mon mot de passe une fois toutes les 24 heures.

Est-ce possible? Si oui, comment?

2voto

Douglas Points 10417

Si vous n'avez pas déjà configuré vos préférences de sécurité pour exiger un mot de passe après une certaine période d'inactivité et/ou un écran de veille, il n'y a vraiment aucun avantage à obliger une connexion au début de la journée - cela a été vulnérable tout ce temps et le verrouiller à 6h00 du matin pour le déverrouiller à nouveau le reste de la journée rend la politique de sécurité inutile.

Mais, si vous souhaitez forcer un événement d'authentification chaque jour à 6h00, vous devrez faire ce qui suit:

  • écrire un script bash qui verrouille l'ordinateur. Il existe deux méthodes...

    • pmset
    • CGSession
  • faire en sorte que ce script s'exécute chaque jour à une heure spécifiée en utilisant launchd

Remarque sur les scripts/commandes terminal

  • Je vous encourage à les tester d'abord avant de les transmettre à launchd. Tapez simplement la/les commande(s) dans Terminal pour voir si elles fonctionnent.

  • Vous devez rendre le script exécutable en utilisant la commande chmod +x sinon cela ne fonctionnera pas du tout.


Utilisation de pmset

En supposant que vous avez activé "Exiger un mot de passe" après une certaine période d'inactivité après avoir verrouillé l'écran ou activé votre économiseur d'écran, vous pouvez utiliser la commande suivante dans un script bash pour mettre votre ordinateur en veille une fois par jour:

pmset sleepnow

Le script peut être enregistré dans ~/Library/Scripts et peut être appelé comme vous le souhaitez. Utilisons sleep1.sh pour cet exemple.

#!/bin/bash
# 
/usr/bin/pmset sleepnow

Exécutez ce script et votre Mac se mettra immédiatement en veille, et si vous avez défini un mot de passe, une fois réveillé, il vous demandera un mot de passe en fonction de l'intervalle de temps que vous avez défini.

Utilisation de CGSession

Cela utilise le mécanisme de "Changement rapide d'utilisateur" pour verrouiller votre bureau. Vous pouvez le tester en émettant la commande suivante:

/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

Lorsque vous exécutez cette commande, votre bureau sera verrouillé et vous serez accueilli par un écran de connexion où vous devez sélectionner un utilisateur (si vous en avez plusieurs) ou saisir un nom d'utilisateur et un mot de passe.

Le script, comme dans l'exemple précédent, peut être enregistré dans ~/Library/Scripts et peut également être appelé comme vous le souhaitez. Utilisons sleep2.sh pour cet exemple.

#!/bin/bash
#
# Obtenir l'identifiant utilisateur
id=$(id -u 

# Mettre le système en veille mais passer à l'utilisateur actuel
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend -switchToUserID $id

Remarque: Si vous prévoyez de le faire pour tous les utilisateurs connectés (si vous avez plusieurs utilisateurs sur votre machine), changez la ligne id comme ceci:

id=$(id -u `whoami`)

Cela garantira que la commande utilise l'identifiant de l'utilisateur actuellement connecté.

Utilisation de launchd pour exécuter ceci tous les jours

Pour que cela s'exécute chaque jour, nous devons avoir un démon qui le déclenche à une heure spécifiée. macOS dispose d'un tel outil appelé launchd. Je donne plus de détails à ce sujet dans le billet Format plist de launchd pour exécuter une commande à un moment spécifique un jour de semaine. Cependant, pour nos besoins ici, nous utiliserons un .plist basique pour lancer ce script chaque matin. J'aime utiliser la convention de nommage de fichier com.user.XXXX.plist Remplacez "XXX" par ce que vous voulez, pour cet exemple, j'utilise com.user.lockmachine.plist.

Assurez-vous également de référencer le script que vous prévoyez d'utiliser, script1.sh ou script2.sh

    Label
    com.user.lockmachine
    ProgramArguments

        /Users//Library/Scripts/script1.sh

    StartCalendarInterval

      Hour
      6
      Minute
      0

Comment souhaitez-vous exécuter ce démon?

L'emplacement du script est important. Consultez le billet lié pour plus de détails, mais décidez si vous voulez que ce soit juste pour vous ou pour tous les utilisateurs. Voici un résumé rapide:

  • Juste pour vous - mettez-le dans ~/Library/LaunchAgents
  • Pour tous les utilisateurs - mettez-le dans /Library/LaunchAgents

Puis à partir du répertoire où vous avez placé le nouveau .plist, chargez-le avec launchctl

sudo lauchctl load com.user.lockmachine.plist

Authentifiez-vous!

C'est terminé. Une fois par jour à 6h du matin, votre machine sera forcée de passer en veille ou de changer de session (selon le script que vous avez sélectionné) où vous serez obligé de vous authentifier. Il est inutile de le faire à la connexion ou au démarrage car si vous êtes si préoccupé par la sécurité, vous n'auriez pas activé la connexion automatique contournant l'authentification.

2voto

AverageHelper Points 131

Après quelques recherches, j'ai appris que macOS dispose d'un utilitaire appelé bioutil qui pourrait faire ce que vous voulez.

Pour désactiver TouchID après 24 heures, vous pouvez exécuter cette commande d'une ligne :

sudo bioutil -ws -o 86400  # demande un mot de passe après 24 heures

Pour désactiver TouchID manuellement pour la nuit, vous pouvez exécuter une commande pour désactiver TouchID pour le déverrouillage, et une autre pour le réactiver. D'après mon expérience, cela devrait amener macOS à demander un mot de passe une fois au moment du déverrouillage avant de réactiver TouchID pour les déverrouillages ultérieurs.

Les commandes pour demander un mot de passe manuellement pour TouchID sont les suivantes :

sudo bioutil -ws -u 0  # désactive TouchID pour le déverrouillage
sudo bioutil -ws -u 1  # active TouchID pour le déverrouillage

Vous pouvez écrire un script shell pour le faire à votre place. Consultez man bioutil dans le terminal pour voir plus de choses que vous pouvez faire avec!

En bonus : macOS Monterey dispose d'une application Raccourcis que vous pouvez utiliser pour créer un élément dans la barre de menus pour exécuter ceci.

0voto

WGroleau Points 3272

MacOS dispose de paramètres pour le faire s'éteindre/redémarrer selon un horaire. Si¹ Touch ID est implémenté comme sur iOS, alors le mot de passe est toujours requis après un redémarrage.

Donc, si vous le configurez pour redémarrer à quatre heures du matin, …

¹Je dis "si" car mon ordinateur portable n'a pas Touch ID

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X