239 votes

Touch ID pour la barre tactile de Mac peut-il authentifier les utilisateurs sudo et les privilèges d'administrateur ?

  • Touch ID pour la barre tactile du MacBook Pro prend-il en charge l'élévation des privilèges d'administrateur dans MacOS ?

  • De manière un peu différente, est-ce que le Touch ID peut donner un accès sudo dans Terminal ?

Je me pose cette question parce que j'envisage d'obtenir un YubiKey qui permet de saisir une chaîne de caractères dans les champs de mot de passe, mais Touch ID pour les Macs pourrait rendre cette fonction inutile.

2 votes

1 votes

@pathikrit - proche mais il semble qu'un module PAM serait une bien meilleure solution qu'un sudo bifurqué. Je n'en ai pas encore vu qui ait été écrit ; je vais peut-être m'y essayer.

2 votes

Les utilisateurs de Tmux doivent configurer pam_reattach . Installer, par exemple, via brew install pam-reattach et ajoutez la ligne auth optional /opt/homebrew/lib/pam/pam_reattach.so (ou /opt/homebrew/lib/... pour les Macs Intel) avant la ligne auth sufficient pam_tid.so . ( via )

364voto

Petros Points 4430

Pour permettre à TouchID sur votre Mac de vous authentifier pour sudo au lieu d'un mot de passe, vous devez procéder comme suit.

  • Terminal ouvert

  • Passez à l'utilisateur Root avec sudo su -

  • Modifier le /etc/pam.d/sudo avec un éditeur de ligne de commande tel que vim o nano

  • Le contenu de ce fichier doit ressembler à l'un des exemples suivants :

    • sudo: auth account password session

      auth       required       pam_opendirectory.so
      account    required       pam_permit.so
      password   required       pam_deny.so
      session    required       pam_permit.so
    • sudo: auth account password session

      auth       sufficient     pam_smartcard.so
      auth       required       pam_opendirectory.so
      account    required       pam_permit.so
      password   required       pam_deny.so
      session    required       pam_permit.so
  • Vous devez ajouter un auth en haut de la page, de sorte qu'elle ressemble maintenant à ceci :

    # sudo: auth account password session
    auth       sufficient     pam_tid.so
    auth       sufficient     pam_smartcard.so
    auth       required       pam_opendirectory.so
    account    required       pam_permit.so
    password   required       pam_deny.so
    session    required       pam_permit.so
  • Sauvegarder le fichier. ( Nota: ce fichier est normalement en lecture seule, de sorte que l'enregistrement de vos modifications peut nécessiter que vous forciez l'enregistrement, par ex. vim vous demandera d'utiliser wq! lors de la sauvegarde)

  • Notez également que pam_smartcard.so peut ne pas être présent sur les anciennes versions de MacOS.

  • Quitter l'utilisateur racine ou démarrer une nouvelle session de terminal.

  • Essayez d'utiliser sudo et vous serez invité à vous authentifier avec TouchID comme indiqué ci-dessous.

    TouchID prompt

  • Si vous cliquez sur "Annuler", vous pouvez simplement saisir votre mot de passe à l'invite du terminal. Si vous cliquez sur "Utiliser le mot de passe", vous pouvez saisir votre mot de passe dans la boîte de dialogue.

  • Si vous vous connectez en SSH à votre ordinateur, il se contentera d'utiliser votre mot de passe, puisque vous ne pouvez pas envoyer vos empreintes digitales TouchID en SSH.

Nota: Voir réponse de l'utilisateur Pierz ci-dessous si vous utilisez iTerm, car il y a un paramètre que vous devez explicitement modifier pour activer cette fonctionnalité.

Nota: Les récentes mises à jour de MacOS peuvent supprimer cette entrée. Si TouchID cesse de fonctionner pour sudo puis vérifiez si l'entrée a été supprimée et ajoutez-la à nouveau, en suivant à nouveau ces instructions.

11 votes

Cela semble fonctionner ! Cela a-t-il des implications en matière de sécurité ?

8 votes

Cela devrait être la réponse acceptée - Ce qui se passe est clair, comment cela se passe, et il n'est pas nécessaire d'installer un logiciel tiers.

0 votes

Existe-t-il un moyen de remplacer toutes les invites de mot de passe par TouchID ? Que ce soit dans le terminal, ou dans les Préférences Système, ou dans le Trousseau, ou pour les installations de paquets ?

89voto

Pierz Points 2729

Si vous utilisez iTerm2 (v3.2.8+), vous avez peut-être constaté que Touch ID ne fonctionne pas avec sudo dans le terminal, bien que vous ayez fait l'option pam_tid.so modification comme ci-dessus, et il fonctionne dans les versions précédentes. Ceci est dû à une fonction avancée qui semble être maintenant activé par défaut - il faut le désactiver ici : iTerm2->Préférences > Avancées > (Allez à la rubrique Session) > Autoriser les sessions à survivre à la déconnexion et à la reconnexion. .

Vous pouvez également utiliser ceci pam_reattach pour conserver la fonction de session et TouchID sudo en même temps.

iTerm preferences

3 votes

Mais si vous voulez garder la fonction de restauration des sessions, vous pouvez essayer ce repo avec un module pam personnalisé.

0 votes

J'ai dû faire cette étape, mais j'ai travaillé juste après avoir assuré No a été fixé dans le cadre. Vous pouvez également rechercher "touch" et l'option apparaîtra.

0 votes

Juste testé : En utilisant pam_reattach il n'est pas nécessaire de modifier les paramètres ou de redémarrer iTerm - tout fonctionne immédiatement ! (Je n'ai pas testé si les sessions "survivent réellement" car je ne sais pas comment, mais je n'ai pas eu besoin de changer les paramètres).

26voto

cosimo Points 1037
  1. TouchID prend en charge l'élévation des privilèges, mais pour l'instant, il ne semble être pris en charge que dans les applications d'Apple. Je pense que les applications tierces devront être mises à jour pour le supporter, malheureusement. Je dois encore souvent taper mon mot de passe.

  2. Ver La réponse de @conorgriffin pour les instructions pour activer TouchID pour sudo.

2 votes

Quelqu'un l'a-t-il fait ? Ça a l'air plutôt effrayant :)

1 votes

@NicCottrell oui, cela fonctionne bien de mon côté.

22voto

Bruno Bronosky Points 541

J'ai créé un simple script qui permet à sudo d'utiliser le module TouchID PAM exactement comme l'explique conorgriffin. Il le fait dans un seul script que vous pouvez copier-coller dans un terminal dans son intégralité ou utiliser le " curl tuyau bash Raccourci " :

curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash

Le script complet :

#!/bin/bash

# curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash
# This script is ready to copy-paste in whole, or just the line above (without the leading #)

# Use TouchID for sudo on modern MacBook Pro machines
# This script adds a single line to the top of the PAM configuration for sudo
# See: https://apple.stackexchange.com/q/259093/41827 for more info.

touchid_sudo(){
  sudo bash -eu <<'EOF'
  file=/etc/pam.d/sudo
  # A backup file will be created with the pattern /etc/pam.d/.sudo.1
  # (where 1 is the number of backups, so that rerunning this doesn't make you lose your original)
  bak=$(dirname $file)/.$(basename $file).$(echo $(ls $(dirname $file)/{,.}$(basename $file)* | wc -l))
  cp $file $bak
  awk -v is_done='pam_tid' -v rule='auth       sufficient     pam_tid.so' '
  {
    # $1 is the first field
    # !~ means "does not match pattern"
    if($1 !~ /^#.*/){
      line_number_not_counting_comments++
    }
    # $0 is the whole line
    if(line_number_not_counting_comments==1 && $0 !~ is_done){
      print rule
    }
    print
  }' > $file < $bak
EOF
}

touchid_sudo

Ce script démontre quelques schémas sympas que j'aime enseigner aux personnes qui découvrent bash ou DevOps.

  1. Créez un fichier de sauvegarde qui est numéroté plutôt que simplement .bak à la fin. (Ça a l'air bizarre, mais ce modèle fonctionne avec tout ce qui se trouve dans la boîte à outils. $file et est réutilisable.
  2. Pour que ce soit sûr de faire curl ... | bash pour tout regrouper dans une fonction et l'appeler sur la dernière ligne. De cette façon, si le téléchargement est interrompu, rien n'est (partiellement) fait.
  3. Passez un appel à sudo bash -eu dans votre script afin que vous n'ayez pas à dire à l'utilisateur de le faire. ( -eu sont des abréviations de errexit et nounset et vous devriez les utiliser !)
  4. Citation unique bash heredoc 'EOF' pour éviter une expansion prématurée de la coquille.
  5. Mise en ligne awk plus lisible.

4 votes

J'apprécie les "modèles cool" que vous avez partagés.

0 votes

Si je peux me permettre, je suggérerais deux changements : 1) utiliser #!/usr/bin/env bash pour supporter le déplacement par Apple de l'exécutable bash, et 2) ajouter 2 > /dev/null jusqu'au dernier ls dans le compteur de noms de fichiers de sauvegarde ; sinon, ls échouera à la première invocation de script (parce qu'aucun fichier de sauvegarde n'existe encore). Sinon, ce sont d'excellentes suggestions. Merci !

1 votes

Merci @MoritzFriedrich ! Vous avez raison sur tous les points et j'ai apporté des modifications.

13voto

0TshEL_n1ck Points 201

Vous pouvez utiliser l'empreinte digitale pour obtenir l'accès sudo dans le terminal ou iTerm, ajoutez simplement auth sufficient pam_tid.so à la première ligne de votre /etc/pam.d/sudo archivo.

6 votes

Il pourrait être intéressant pour d'autres personnes de savoir que la version actuelle d'iTerm (v3.2.8) ne permet pas cette opération lorsqu'une autre option par défaut est définie. Vous devez aller dans Préférences -> Avancé et désactiver Allow sessions to survive logging out and back in : gitlab.com/gnachman/iterm2/issues/7608#note_153123852

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