Touch ID Touch per Mac Touch Bar autentica sudo utenti e privilegi di amministratore?

30
  • Touch ID per la Touch Bar di MacBook Pro 2016 supporta l'elevazione dei privilegi di amministratore in macOS?

  • Un po 'diversamente, il Touch ID può dare l'accesso sudo nel terminale?

Suppongo che il primo possa essere possibile, ma probabilmente non il secondo poiché dipende dall'input della stringa.

Mi chiedo perché sto prendendo in considerazione l'idea di ottenere un YubiKey che può fare input di stringa nei campi della password, ma Touch ID per Mac può renderlo inutile.

    
posta Winterflags 28.10.2016 - 16:11
fonte

5 risposte

12

1) TouchID supporta i privilegi di aumento, ma al momento sembra essere supportato solo nelle app di Apple. La mia ipotesi è che le app di terze parti dovranno essere aggiornate per supportarlo, sfortunatamente. Continuo a digitare molto la mia password.

2) Vedi la risposta di @orgorgriffin per le istruzioni per abilitare TouchID per sudo

    
risposta data 29.11.2016 - 16:46
fonte
36

Per consentire a TouchID sul tuo Mac di autenticarti per sudo di accesso invece di una password devi fare quanto segue.

  • apri Terminale
  • passa all'utente root con sudo su -
  • modifica il file /etc/pam.d/sudo con un editor della riga di comando come vim o nano
  • Il contenuto di questo file dovrebbe assomigliare a questo

    # 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
    
  • devi aggiungere una riga auth aggiuntiva in alto, in modo che assomigli ora a questo:

    # sudo: auth account password session
    auth       sufficient     pam_tid.so
    auth       required       pam_opendirectory.so
    account    required       pam_permit.so
    password   required       pam_deny.so
    session    required       pam_permit.so
    
  • salva il file ( Nota: questo file è in genere di sola lettura, quindi il salvataggio delle modifiche potrebbe richiedere il forzamento del salvataggio, ad esempio vim richiederà l'utilizzo di wq! durante il salvataggio)
  • esci dall'utente root o avvia una nuova sessione terminale
  • prova a utilizzare sudo e ti verrà chiesto di autenticarti con TouchID come mostrato di seguito
  • sefaiclicsu"Annulla", puoi inserire la tua password al prompt del terminale, se fai clic su "Usa password" puoi inserire la password nella finestra di dialogo.
  • se si usa SSH nel proprio computer, verrà utilizzato solo la password, poiché non è possibile inviare le impronte digitali TouchID su SSH
risposta data 20.11.2017 - 10:12
fonte
3

Puoi utilizzare l'impronta digitale per ottenere l'accesso sudo nel terminale o in iTerm, basta aggiungere auth sufficient pam_tid.so alla prima riga al tuo file /etc/pam.d/sudo .

    
risposta data 18.11.2017 - 17:26
fonte
0

Ho creato un semplice script che consente a sudo di utilizzare il modulo TouchID PAM esattamente come spiega conorgriffin. Lo fa in un singolo script che puoi copiare e incollare su un terminale nella sua interezza oppure utilizzare la scorciatoia " curl pipe bash ":

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

Lo script completo :

#!/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

Questo script mostra alcuni modelli interessanti che adoro insegnare alle persone che sono nuove a bash o DevOps.

  1. Crea un file di backup numerato anziché semplicemente .bak alla fine. (Sembra nodoso, ma quel modello funziona con qualunque cosa sia in $file ed è riusabile.
  2. Per rendere sicuro di fare curl ... | bash , avvolgere tutto in una funzione e chiamarlo sull'ultima riga. In questo modo se il download viene interrotto, nulla viene (parzialmente) fatto.
  3. Metti una chiamata a sudo bash -eu nel tuo script in modo da non dire all'utente di farlo. ( -eu è l'abbreviazione di errexit e nounset e dovresti utilizzarli!)
  4. virgolette singole bash heredoc 'EOF' per impedire l'espansione prematura della shell.
  5. Rendi in linea awk più leggibile.
risposta data 10.12.2018 - 08:21
fonte
0

Ho creato le seguenti attività ansibili per abilitare touch id per i comandi sudo se il tuo computer lo supporta:

- 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 != ''
    
risposta data 07.01.2019 - 05:28
fonte

Leggi altre domande sui tag