197 votos

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

  • ¿Es compatible Touch ID para la Touch Bar del MacBook Pro con la elevación de privilegios de administrador en macOS?

  • De otra manera, ¿el Touch ID puede dar acceso a sudo en Terminal?

Me lo pregunto porque estoy pensando en adquirir un YubiKey que puede hacer la entrada de cadenas en los campos de contraseña, pero Touch ID para Macs puede hacerlo innecesario.

350voto

Petros Puntos 4430

Para permitir que TouchID en su Mac lo autentique para sudo acceso en lugar de una contraseña debe hacer lo siguiente.

  • Terminal abierta

  • Cambia al usuario Root con sudo su -

  • Editar el /etc/pam.d/sudo con un editor de línea de comandos como vim o nano

  • El contenido de este archivo debe parecerse a uno de los siguientes ejemplos:

    • 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
  • Es necesario añadir un auth línea a la parte superior para que ahora se vea así:

    # 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
  • Guarda el archivo. ( Nota: este archivo es normalmente de sólo lectura, por lo que para guardar los cambios puede ser necesario forzar el guardado, por ejemplo vim requerirá el uso de wq! al guardar)

  • También hay que tener en cuenta que pam_smartcard.so puede no estar presente en las versiones más antiguas de MacOS.

  • Salir del usuario root o iniciar una nueva sesión de terminal.

  • Intenta utilizar sudo y se te pedirá que te autentiques con TouchID como se muestra a continuación.

    TouchID prompt

  • Si hace clic en "Cancelar", sólo tiene que introducir su contraseña en el indicador del terminal. Si hace clic en 'Usar contraseña', puede introducir su contraseña en el cuadro de diálogo.

  • Si te conectas por SSH a tu máquina, volverá a utilizar tu contraseña, ya que no puedes enviar tus huellas dactilares de TouchID por SSH.

Nota: Ver respuesta del usuario Pierz a continuación si estás usando iTerm, ya que hay una configuración que debes cambiar explícitamente para activar esta función.

Nota: Las actualizaciones recientes de MacOS pueden eliminar la entrada. Si TouchID deja de funcionar para sudo entonces comprueba si la entrada fue eliminada y vuelve a añadirla, siguiendo de nuevo estas instrucciones.

83voto

AisIceEyes Puntos 8

Si estás usando iTerm2 (v3.2.8+) puede que hayas visto que Touch ID no funciona con sudo en la terminal a pesar de haber hecho el pam_tid.so modificación como la anterior, y que funciona en las versiones anteriores. Esto se debe a una función avanzada que parece estar ahora activado por defecto - esto necesita ser desactivado aquí: iTerm2->Preferencias > Avanzadas > (Ir a la rúbrica Sesión) > Permitir que las sesiones sobrevivan al cierre y al regreso de la sesión .

También puede utilizar esto pam_reattach para mantener la función de sesión y TouchID sudo al mismo tiempo.

iTerm preferences

26voto

cosimo Puntos 1037
  1. TouchID permite elevar los privilegios, pero por ahora sólo parece ser compatible con las propias aplicaciones de Apple. Supongo que las aplicaciones de terceros tendrán que ser actualizadas para soportarlo, desafortunadamente. Todavía termino escribiendo mi contraseña muchas veces.

  2. Ver Respuesta de @conorgriffin para obtener instrucciones para habilitar TouchID para sudo.

21voto

fishhead Puntos 126

He creado un sencillo script que permite a sudo utilizar el módulo PAM de TouchID exactamente como explica conorgriffin. Lo hace en un solo script que puedes copiar-pegar en una terminal en su totalidad o usar el " curl tubo 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 demuestra algunos patrones geniales que me encanta enseñar a la gente que es nueva en bash o DevOps.

  1. Crear un archivo de copia de seguridad numerado en lugar de simplemente .bak en el extremo. (Se ve nudoso, pero ese patrón funciona con lo que hay en $file y es reutilizable.
  2. Para que sea seguro hacer curl ... | bash Envuelve todo en una función y llámala en la última línea. Así, si la descarga se interrumpe, no se hace nada (parcialmente).
  3. Llama a sudo bash -eu en su script para no tener que decirle al usuario que lo haga. ( -eu son la abreviatura de errexit y nounset y deberías usarlos)
  4. Cita única bash heredoc 'EOF' para evitar la expansión prematura de la cáscara.
  5. Hacer en línea awk más legible.

12voto

gonthalo Puntos 542

Puedes utilizar la huella digital para obtener acceso a sudo en la terminal o en iTerm, sólo tienes que añadir auth sufficient pam_tid.so a la primera línea de su /etc/pam.d/sudo archivo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X