Pour résumer la solution d'Andy et Glenjamin en une seule pièce :
---
- hosts: localhost
tasks:
- name: install pam_reattach pam module
homebrew:
name: fabianishere/personal/pam_reattach
state: present
register: reattach_result
- name: detect touch id support
shell: pgrep ControlStrip
ignore_errors: true
register: touch_id_result
- name: enable touch id for sudo commands
lineinfile:
path: /etc/pam.d/sudo
line: 'auth sufficient pam_tid.so'
insertbefore: '^auth sufficient pam_smartcard.so$'
become: yes
when: touch_id_result.rc == 0 and touch_id_result.stdout != ''
- name: enable persistent touch id for tmux and iterm
lineinfile:
path: /etc/pam.d/sudo
line: 'auth optional pam_reattach.so'
insertbefore: '^auth sufficient pam_tid.so$'
become: yes
when: reattach_result == 0
Cela peut être exécuté avec seulement ansible-playbook sudo-touchid.yml
où sudo-touchid.yml
c'est le nom que j'ai donné à cette pièce.
La première étape consiste à installer le logiciel de Fabian pam_reattach
qui permet à sudo de fonctionner dans iTerm, tmux, etc. Il n'est pas dans les formules par défaut de Homebrew, donc nous le récupérons de son propre dépôt.
La seconde vérifie si ce Mac possède une barre tactile, sinon nous allons abandonner.
Troisièmement, on regarde si on a déjà ajouté pam_tid.so
à /etc/pam.d/sudo
et seulement s'il y a une barre tactile.
Enfin, nous ajoutons également pam_reattach.so
comme un optional
méthode d'authentification. Selon l'auteur, il pourrait avoir un bug inconnu, et si nous utilisons required
cela pourrait entraîner un lock-out.
2 votes
Regarde ça : github.com/mattrajca/sudo-touchid
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 ligneauth optional /opt/homebrew/lib/pam/pam_reattach.so
(ou/opt/homebrew/lib/...
pour les Macs Intel) avant la ligneauth sufficient pam_tid.so
. ( via )