Astuce Catalina : valider les commandes sudo dans le terminal avec une Apple Watch

Nicolas Furno |

Avec macOS Catalina, l’Apple Watch peut remplacer le mot de passe de votre session dans encore plus de cas qu’auparavant. La montre peut toujours servir à déverrouiller le Mac, mais elle peut également débloquer les préférences systèmes et même être utilisées dans des apps, comme des gestionnaires de mots de passe. Partout où Touch ID pouvait servir sur les Mac équipés du capteur d’empreintes, l’Apple Watch peut prendre le relai.

Partout, y compris dans le terminal où, en modifiant un fichier système, on pouvait utiliser Touch ID pour les commandes qui nécessitent sudo et donc le mot de passe de session ? Oui, mais la procédure n’est plus aussi simple qu’avant, il faut compiler un outil supplémentaire, en plus de la modification du fichier système. Néanmoins, cela ne devrait pas vous faire peur si vous utilisez le terminal de macOS au quotidien et cela fonctionne extrêmement bien.

La commande sudo utilisée dans le terminal envoie une requête à l’Apple Watch en guise d’alternative au mot de passe. En bas à droite, voici ce que la montre affiche et il suffit de cliquer deux fois sur le bouton latéral pour valider.

Voici la procédure à suivre pour autoriser les commandes sudo sur votre Mac dans le terminal1 de macOS Catalina :

  • Cloner le projet PAM WatchID : git clone https://github.com/biscuitehh/pam-watchid.git ;
  • Ouvrir le dossier et compiler l’app : cd pam-watchid && sudo make install ;
  • Modifier le fichier système /etc/pam.d/sudo avec les droits administrateurs : sudo nano /etc/pam.d/sudo ;
  • Ajouter en haut du fichier cette ligne supplémentaire, sans supprimer le reste du contenu : auth sufficient pam_watchid.so "reason=execute a command as root" ;
  • Enregistrer les changements avec ctrlX puis la touche Y et ouvrir une nouvelle session de terminal pour confirmer que cela fonctionne.

Rappelons que cette fonction n’est pas aussi sécurisée que Touch ID, mais Apple a prévu plusieurs garde-fous pour éviter les abus. La montre ne pourra valider une opération que si elle est à proximité immédiate du Mac, et que si elle est elle-même déverrouillée, c’est-à-dire portée au poignet en continu depuis la dernière saisie du code ou bien depuis le dernier déverrouillage de l’iPhone associé en fonction de vos réglages. Si vous vous éloignez de votre ordinateur, ou bien si vous retirez la montre de votre poignet, la fonction sera automatiquement désactivée.


  1. Dans n’importe quel terminal en fait : vous bénéficierez de cette fonction dans l’app Terminal fournie par Apple, mais aussi dans les apps tierces, comme iTerm.  ↩


avatar Ded77 | 

J’aimerais pouvoir débloquer le trousseau avec mon montre lorsque Safari veut pré remplir un mot de passe mais il faut d’abord rentrer son mot de passe admin.
Possible ? Merci 😊

avatar Nicolas Furno | 

@Ded77

Ce n'est pas possible sans intervention d'Apple. S'ils veulent proposer la fonction, ils devront mettre à jour Safari et peut-être d'autres éléments du système, mais on n'y a pas accès.

C'est l'avantage du terminal en comparaison, c'est plus souple. :-)

avatar Ded77 | 

@nicolasf

Arf, merci pour la réponse 😉

avatar SkeletonGamer | 

Ça marche nickel ! Merci :D

avatar tnicolas02 | 

Encore faudrait-il déjà que le déverrouillage du mac (mini 2018) avec l’apple watch refonctionne de nouveau ! Depuis la dernière version de Catalina ça ne fonctionne plus !

avatar Nicolas Furno | 

@tnicolas02

Moi non plus, mais ça n'est pas forcément lié à cette autre fonction de Catalina. En tout cas, de mon côté je n'ai plus de déverrouillage du Mac, mais je peux toujours accéder aux préférences et utiliser cette astuce avec sudo avec ma montre.

avatar laurenzobiato | 

@tnicolas02

T’inquiète chez moi non plus ça marche pas ça 😞

avatar tnicolas02 | 

Je confirme, ça concerne juste le déverrouillage de la session; et la dernière beta sortie avant Noël ne résous pas le problème

avatar amine2233 | 

Si vous avez un problème de ce style ":0: error: unable to load standard library for target 'x86_64-apple-macosx10.15'" vous devez changer le fichier Makefile,

Rajoutez cette ligne en-dessous TARGET
> SDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk

Changez la command qui est en-dessous de "all:" en ceci
> swiftc watchid-pam-extension.swift -o $(LIBRARY_NAME) -sdk $(SDK) -emit-library

Maintenant faites un petit coup de save
Lancez la commande "sudo make install"
Ensuite suivez la suite du tutoriel dans l'article

Voila!

avatar Gazous | 

Fonctionne parfaitement ! Merci !

avatar thewindwaker | 

Attention n'utiliser pas le repo en faisant le make install. Vous ne savez absolument pas d'ou vient le code et quand il pourra être modifié.
C'est une manipulation assez dangereuse.

De plus la seule modification du fichier `/etc/pam.d/sudo` suffit. Le reste est inutile.

@edition: vous pouvez vérifier de votre coté et modifier l'article? C'est étonnant de votre part de ne pas avoir vérifié cela en premier lieu

CONNEXION UTILISATEUR