Comprova integritat, identitat i política local sense alterar el paquet

Quan arriba una aplicació nova per instal·lar a diversos Macs, obrir-la de seguida sembla pràctic. També és una manera eficient de descobrir un problema massa tard: una signatura trencada, un component intern alterat o una política de seguretat que rebutjarà l’app en els equips dels usuaris.
Terminal permet separar aquestes preguntes abans de distribuir res. La idea és revisar tres capes: si el paquet conserva la seva integritat, qui l’ha signat i si la política local de Gatekeeper l’acceptaria. Són comprovacions de lectura; no modifiquen l’app, no eliminen atributs i no requereixen permisos d’administrador.
Parteixo d’una app ja copiada a /Applications. Canvia la ruta si la tens en una carpeta de proves:
APP="/Applications/ClientVPN.app"
Aquesta ordre només crea una variable dins de la sessió actual de zsh. No escriu cap fitxer ni toca l’aplicació. Les cometes són importants: eviten errors quan el nom conté espais.
El primer control valida la signatura completa:
codesign --verify --deep --strict --verbose=2 "$APP"
codesign comprova que els binaris signats, els recursos segellats i els components interns coincideixen amb la signatura. --strict endureix la validació i --deep baixa als elements imbricats, com frameworks, extensions o eines auxiliars. Apple recomana aquest ús recursiu per verificar, mentre que desaconsella aplicar-lo quan se signa una app. Si tot és correcte, la sortida inclou missatges com valid on disk i satisfies its Designated Requirement. (developer.apple.com)
Ara mira la identitat declarada pel paquet:
codesign --display --verbose=4 "$APP"
Aquesta ordre imprimeix dades de la signatura a la sortida d’error estàndard: l’Identifier, el TeamIdentifier, les autoritats del certificat i, segons el paquet, informació sobre requisits i execució reforçada. No verifica per si sola cada recurs; descriu què afirma ser l’app. Compara l’identificador i l’equip amb les dades que el proveïdor t’ha comunicat per un canal fiable. Un nom d’app convincent no constitueix una identitat tècnica.
El tercer pas consulta la decisió de política local:
spctl -a -t exec -vv "$APP"
spctl és la interfície de línia d’ordres del subsistema de política que Gatekeeper utilitza per avaluar programari. L’opció -t exec tracta el paquet com una aplicació executable i -vv amplia el diagnòstic. Una resposta d’acceptació acostuma a mostrar l’origen, com ara una aplicació identificada pel desenvolupador. Aquesta prova és especialment útil en un Mac de validació que reprodueixi la versió de macOS i el perfil de gestió dels equips de destinació. (developer.apple.com)
Cal interpretar el resultat amb criteri. Una signatura vàlida acredita que el contingut verificat no s’ha alterat des de la signatura; no certifica que l’app encaixi amb les polítiques internes, amb les extensions de sistema necessàries ni amb les restriccions del teu MDM. Si Terminal rep un error d’accés a Documents, Escriptori, Descàrregues o volums de xarxa, macOS pot requerir autorització de fitxers per a Terminal. A macOS 10.15 o posterior, aquestes ubicacions estan sotmeses al model de privadesa; l’accés complet al disc s’ha de reservar per a casos justificats. (support.apple.com)
Evita sudo en aquesta revisió. Elevar privilegis pot ocultar un problema real de permisos en el procés de desplegament. Treballa amb una còpia de prova, registra la versió de l’app, l’identificador, l’equip signant i la sortida de les tres comprovacions. Així, la decisió deixa de dependre d’una finestra emergent i queda vinculada a una evidència repetible.
Petit repte final: crea un script que rebi la ruta d’una .app, executi aquestes tres proves i desi un informe amb data, versió de macOS i codis de sortida. Prova’l primer amb TextEdit i després amb una app de proves del teu catàleg.