[RISOLTO] Pacchetto per abilitare Touch ID con sudo su macOS

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Risposta
bastien30
Messaggi: 38
Registrazione: 8 marzo 2024 - 15:21

28 novembre 2024 - 14:09

Buongiorno,

Ecco il pacchetto che ho creato per poter convalidare le richieste sudo con Touch ID su macOS.

Ho basato il mio lavoro su questo articolo: https://www.macg.co/macos/2023/08/macos ... -id-138763

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *
import re

template_file = r'/etc/pam.d/sudo_local.template'
target_file = r'/etc/pam.d/sudo_local'

enabled_pattern = r'^auth\ *sufficient\ *pam\_tid\.so$'
disabled_pattern = r'^#auth\ *sufficient\ *pam\_tid\.so$'

def is_sudo_tid_enabled():
    if not isfile(target_file):
        error(r'File %s does  not exists !' % target_file)
    else:
        with open(target_file) as f:
            for line in f:
                if re.match(enabled_pattern, line):
                    return True
                elif re.match(disabled_pattern, line):
                    return False
    return "NOTMATCHING"

def enable_sudo_tid():
    file_to_rewrite = []
    with open(target_file) as f:
        for line in f:
            if re.match(disabled_pattern, line):
                file_to_rewrite.append(line[1:])
            else:
                file_to_rewrite.append(line)
    with open(target_file, r'w') as f:
        f.writelines(file_to_rewrite)

def disable_sudo_tid():
    file_to_rewrite = []
    with open(target_file) as f:
        for line in f:
            if re.match(enabled_pattern, line):
                file_to_rewrite.append(r'#' + line)
            else:
                file_to_rewrite.append(line)
    with open(target_file, r'w') as f:
        f.writelines(file_to_rewrite)

def install():
    if not isfile(target_file):
        filecopyto(template_file, target_file)

    # Check if already enabled
    check = is_sudo_tid_enabled()
    if check == r'NOTMATCHING':
        error(r'Error matching pattern in %s file' % target_file)
    else:
        if check:
            print(r'TouchID support for sudo is already enabled.')
        else:
            print(r'Enabling TouchID support for sudo...')
            enable_sudo_tid()

def uninstall():
    print(r'Disabling TouchID support for sudo...')
    disable_sudo_tid()
Risposta