KI generiertes Symbolbild für einen Fingerabdruck und Sicherheit.

MacOS: «sudo» mit TouchID authentifizieren

Jede Person, die Mac OS nicht nur für Grafik- oder Videobearbeitung nutzt, sondern auch aktiv im Terminal arbeitet, weiss, wie wichtig das Terminal ist.

Was ist «sudo»?

Egal ob Linux oder MacOS: Um einen Befehl mit Administrationsrechten auszuführen, wird gerne das Tool «sudo» benutzt. So kann man z. B. mit folgendem Befehl seinen Mac herunterfahren:

sudo shutdown
Zsh

Etwas nervend ist, dass man bei jedem «sudo» Befehl sein Benutzerpasswort eingeben muss. Obwohl die Macbooks ja alle TouchID mitbringen, wurde der Fingerabdrucksensor leider nicht als sudo-Authentifizierungsmethode eingerichtet.

TouchID für sudo einrichten

Glücklicherweise kann man diese Einrichtung selber vornehmen. Eigentlich wollte ich daraus ein komplettes Tagesprojekt machen. Merkte dann aber sehr schnell, das das gar nicht nötig ist.

MacOS nutzt für das Verwalten von Authentifizierungen PAM (Pluggable Authentication Modules). Und ja, auch Linux nutzt PAM für denselben Einsatzzweck.

Da ich in der Vergangenheit sehr viel mit PAM unter Linux gearbeitet habe und mich selbst gefühlt als Linux-PAM-Experte bezeichnen würde, war die Konfiguration unter MacOS tatsächlich kein Hexenwerk mehr.

Das verwendete PAM bei MacOS ist zwar nicht absolut identisch mit dem PAM bei Linux, aber die Unterschiede sind minimal.

Lange Rede, kurzer Sinn: Ihr könnt mit dem Texteditor nano die Datei «/etc/pam.d/sudo» bearbeiten und müsst dort die nachfolgende Zeile hinzufügen:

auth       sufficient     pam_tid.so
Plaintext

Konkret öffnet ihr dazu die Terminal App und gebt folgenden Befehl ein:

sudo nano /etc/pam.d/sudo
Zsh

Danach müsst ihr euer Passwort eingeben und die im Bildschirmfoto markierte Zeile hinzufügen.

Bildschirmfoto vom Terminal mit dem Texteditor nano der die die Date sudo geöffnet hat.

Was bedeutet diese Zeile?

  • auth: Dieses Steuerwort legt den Typ des Moduls fest. In diesem Fall handelt es sich um ein Authentifizierungsmodul.
  • sufficient: Dieses Steuerwort gibt an, dass, wenn dieses Modul erfolgreich ist, keine weiteren Module (sofern vorhanden) in dieser Kette aufgerufen werden müssen, um die Authentifizierung als erfolgreich zu betrachten. Wenn es jedoch fehlschlägt, wird die Authentifizierung nicht sofort als fehlgeschlagen betrachtet; es wird versucht, mit den nächsten Modulen fortzufahren.
  • pam_tid.so: Dies ist das eigentliche PAM-Modul, das aufgerufen wird. Das Modul pam_tid.so ist spezifisch für macOS und wird verwendet, um die Touch ID-Authentifizierung zu unterstützen.

Fazit

Das Terminal stellt für viele Mac-Nutzer, die über die bloße Grafik- und Videobearbeitung hinausgehen, ein essentielles Werkzeug dar. Dabei bietet «sudo» eine leistungsstarke Möglichkeit, Befehle mit erhöhten Rechten auszuführen, sowohl auf MacOS als auch auf Linux.

Es ist zwar anfangs etwas umständlich, ständig das Passwort einzugeben, aber mit der Integration von TouchID kann dieser Schritt komfortabler gestaltet werden. Dank PAM, das sowohl von MacOS als auch von Linux verwendet wird, können Anwender die Touch ID-Authentifizierung selbst einrichten.


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

4 Antworten zu «MacOS: «sudo» mit TouchID authentifizieren»

  1. Avatar von Peter
    Peter

    Sehr gut erklärt, vielen Dank. Was ist der nano und geht es auch mit MacOS mitgelieferten Editoren?

    1. Avatar von Samuel

      Salü Peter

      «nano» ist ein Texteditor für die Kommandozeile. Es ist ein OpenSource Projekt das es schon seit 1999 gibt und bis heute aktiv entwickelt wird.

      Die meisten Linux-Distributionen haben «nano» vorinstalliert, und nutzen ihn auf der Kommandozeile (Terminal) als Standard Editor. Auch unter Mac OS war er lange vorinstalliert.

      Inzwischen wurde er (ich habe keine Ahnung warum) durch den «pico» Texteditor ersetzt -> der funktional aber sehr ähnlich ist. Wenn du im Terminal auf deinem Mac «nano» eingibst öffnet sich automatisch der Pico-Editor.

      Daher die Befehle oben sollten 1:1 auf dem Mac funktionieren ohne das du was zusätzlich installieren brauchst.

  2. Avatar von Tim

    Vielen Dank – hat super funktioniert!

  3. Avatar von Thrawnium
    Thrawnium

    Vielen Dank für den Beitrag, bei macOS Sonoma geht dies sogar noch einfacher, da man nur einmal eine Datei bearbeiten muss, und nicht mehr nach jedem macOS Update.

    Ich habe heute schnell ein kleines Script dafür geschrieben (keine Garantie, dass es einwandfrei funktioniert ;-))

    #!/bin/zsh

    #################################################################################################################
    ### In this script, Touch ID authentication is added when using «sudo» in the terminal.
    ### This makes it no longer necessary to type in the password «blindly».
    ###
    ### as of macos sonoma this script does not have to be executed with every update.
    ### A new file is created at Sonoma, which is not changed at an update.
    ###
    ### All infos:
    ### https://www.ifun.de/mac-terminal-tipp-touch-id-fuer-sudo-befehle-einrichten-163052/
    ### https://support.apple.com/en-us/HT213893
    ### https://rueegger.me/2023/09/22/macos-sudo-mit-touchid-authentifizieren/
    ###
    #################################################################################################################

    # set variable
    deviceBuildVersion=$(sw_vers -productVersion | cut -d. -f1)
    timeStamp=$( date ‹+%Y-%m-%d-%H-%M-%S› )

    echo «the device has macOS $deviceBuildVersion installed »

    # set the function
    undermacOSSOnoma() {
    # check if backup file exists
    if [[ ! -d /Library/Application\ Support/COMPANY/Backups/sudotouchid ]]; then
    echo «Backups folder (/Library/Application Support/COMPANY/Backups/sudotouchid) does not exist. Folder is created»
    mkdir /Library/Application\ Support/COMPANY/Backups/sudotouchid
    fi

    # create backup from /etc/pam.d/sudo
    echo «Backup is created»
    cp /etc/pam.d/sudo /Library/Application\ Support/COMPANY/Backups/sudotouchid/sudo_touchid_$timeStamp

    # create sudo file with touchid authentication
    echo «sudo file with touchid is created»
    cat < «/etc/pam.d/sudo»
    # 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
    EOF
    }

    highermacOSSOnoma() {
    # create sudo_local file with touchid authentication
    echo «sudo_local file with touchid is created»
    cat < «/etc/pam.d/sudo_local»
    # sudo_local: local config file which survives system update and is included for sudo
    # uncomment following line to enable Touch ID for sudo
    auth sufficient pam_tid.so
    EOF
    }

    # check macOS version
    if [[ $deviceBuildVersion -le «13» ]]; then
    echo «macos $deviceBuildVersion is under macOS Sonoma»
    undermacOSSOnoma
    else
    echo «macos $deviceBuildVersion is equal to or higher than macOS Sonoma»
    highermacOSSOnoma
    fi

    exit 0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Weitere Einträge