¿Puede Touch ID para Mac Touch Bar autenticar a los usuarios de sudo y los privilegios de administrador?

27
  • ¿Touch ID para la MacBook Pro 2016 Touch Bar es compatible con elevar los privilegios de administrador en macOS?

  • De manera algo diferente, ¿puede la ID de toque dar acceso a sudo en la Terminal?

Supongo que lo primero puede ser posible, pero probablemente no lo último, ya que depende de la entrada de la cadena.

Me pregunto esto porque estoy considerando obtener una YubiKey que puede ingresar cadenas a los campos de contraseña, pero Touch ID para Mac puede hazlo innecesario.

    
pregunta Winterflags 28.10.2016 - 16:11

4 respuestas

12

1) TouchID soporta elevar privilegios, pero a partir de ahora, solo parece ser compatible con las aplicaciones de Apple. Mi conjetura es que las aplicaciones de terceros deberán actualizarse para admitirlo, desafortunadamente. Todavía termino escribiendo mucho mi contraseña.

2) Consulte respuesta de @ conorgriffin para obtener instrucciones sobre cómo habilitar TouchID para sudo

    
respondido por el swrobel 29.11.2016 - 16:46
34

Para permitir que TouchID en tu Mac te autentique para sudo access en lugar de una contraseña, debes hacer lo siguiente.

  • abrir Terminal
  • cambia al usuario root con sudo su -
  • edite el archivo /etc/pam.d/sudo con un editor de línea de comandos como vim o nano
  • El contenido de este archivo debería tener este aspecto

    # 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
    
  • necesitas agregar una línea auth adicional en la parte superior para que ahora tenga este aspecto:

    # 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
    
  • guarde el archivo ( Nota: este archivo normalmente es de solo lectura, por lo que guardar sus cambios puede requerir que lo guarde, por ejemplo, vim requerirá que use wq! al guardar)
  • salga del usuario root o inicie una nueva sesión de terminal
  • intente usar sudo y se le solicitará que se autentique con TouchID como se muestra a continuación
  • si hace clic en 'Cancelar', solo puede ingresar su contraseña en el indicador del terminal, si hace clic en 'Usar contraseña' puede ingresar su contraseña en el cuadro de diálogo.
  • Si ingresa SSH en su máquina, solo podrá utilizar su contraseña, ya que no podrá enviar sus huellas digitales de TouchID a través de SSH.
respondido por el conorgriffin 20.11.2017 - 10:12
3

Puedes usar la huella digital para obtener acceso a sudo en el terminal o iTerm, solo agrega auth sufficient pam_tid.so a la primera línea de tu archivo /etc/pam.d/sudo .

    
respondido por el 0TshEL_n1ck 18.11.2017 - 17:26
0

He creado un script simple que permite que sudo use el módulo TouchID PAM exactamente como lo explica conorgriffin. Lo hace en un solo script que puede copiar y pegar en una terminal en su totalidad o usar el acceso directo " curl pipe bash ":

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

El 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

Este script muestra algunos patrones geniales que me encanta enseñar a las personas que son nuevas en bash o DevOps.

  1. Cree un archivo de copia de seguridad que esté numerado en lugar de simplemente .bak al final. (Parece retorcido, pero ese patrón funciona con cualquier cosa que esté en $file y es reutilizable.
  2. Para que sea seguro hacer curl ... | bash , envuelva todo en una función y llámelo en la última línea. De esa manera, si se interrumpe la descarga, no se hace (parcialmente) nada.
  3. Ponga una llamada a sudo bash -eu en su script para que no tenga que decirle al usuario que lo haga. ( -eu es la abreviatura de errexit y nounset ¡y deberías usarlos!)
  4. Bases de comillas simples bash heredoc 'EOF' para evitar la expansión prematura de la concha.
  5. Hacer que awk en línea sea más legible.
respondido por el Bruno Bronosky 10.12.2018 - 08:21

Lea otras preguntas en las etiquetas