15 votes

MacOS : Liste des applications autorisées pour un accès complet au disque

Existe-t-il une commande Terminal pour afficher une liste de tous les MacOS autorisés et non autorisés qui ont demandé un accès complet ?

Je cherche la liste qui est affichée dans les préférences système Sécurité et confidentialité Accès complet au disque, mais par la ligne de commande.

10voto

Carl Walsh Points 223

Construire sur La réponse de @d4 la base de données sqlite a la réponse pour laquelle la permission est accordée. Le site service La colonne sera kTCCServiceSystemPolicyAllFiles pour le Full Disk Access.

Donc la question :

sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db \
  'select client from access where auth_value and service = "kTCCServiceSystemPolicyAllFiles"'

énumérera les applications et les binaires qui sont autorisés à avoir un accès complet au disque, par exemple :

/usr/libexec/atrun
/usr/sbin/sshd
com.googlecode.iterm2

(Réponse mise à jour sur la base des réponses de @Motti Shneor, merci ! Sur leur réponse ils notent que auth_value est un int et non pas un bool, mais l WHERE le filtre fonctionne toujours).


Si vous êtes intéressé, vous pouvez inverser la requête en ... where NOT auth_value and service = ... et cela va lister les applications qui sont non vérifié dans la boîte de dialogue des politiques.


Sur les anciennes versions de MacOS (avant 11.6), l'option auth_value La colonne a été nommée allowed donc vous devrez peut-être ajuster la requête.


Si vous obtenez l'erreur Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": authorization denied et toute autre opération sur le fichier TCC.db tous échouent, votre application de terminal lui-même ne dispose pas de l'autorisation d'accès complet au disque nécessaire pour lire le fichier de la base de données. En d'autres termes, je ne peux pas exécuter la commande à partir du vscode mais elle fonctionne à partir d'iTerm parce que c'est ainsi que mes autorisations sont configurées. Ce problème est traité dans La réponse de rdamazio .

6voto

rdamazio Points 61

Les requêtes sqlite mentionnées fonctionnent, par exemple :

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'

L'astuce, cependant, est que vous avez besoin d'un accès complet au disque pour accéder à cette base de données SQLite, donc selon l'endroit où vous essayez de le faire, c'est un problème de poule et d'œuf. À des fins de test, vous pouvez donner à votre terminal un accès complet au disque, puis vous pourrez exécuter la commande.

0 votes

De toute façon, comment donnez-vous à votre terminal un accès complet au disque ?

1 votes

@Michael Préférences système Sécurité et confidentialité Confidentialité Accès intégral au disque

5voto

da4 Points 4796

Les applications qui ont demandé et obtenu les permissions Sécurité > Confidentialité peuvent être lues via :

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'

Cependant, cela ne précise pas quelles autorisations ont été accordées.

Il y a aussi :

defaults read ~/Library/Preferences/com.apple.universalaccessAuthWarning.plist

mais cela n'indiquera que si une application donnée a été approuvée ou refusée.

Taccy est un petit utilitaire qui répertorie les autorisations qu'une application va demander, même si elle n'a pas encore été lancée :

https://eclecticlight.co/taccy-signet-precize-alifix-utiutility-alisma/

0 votes

Merci. A la première ligne de commande, je reçois le message d'erreur suivant : Error : unable to open database "/Library/Application Support/com.apple.TCC/TCC.db" : unable to open database file Au lieu de la deuxième commande, je vois une application listée, mais je sais que j'en ai plus d'une.

2 votes

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access' ne semble pas fonctionner pour moi non plus. sudo ls "/Library/Application Support/com.apple.TCC" donne également ls: com.apple.TCC: Operation not permitted mais le répertoire est bien là

0 votes

@da4 Savez-vous s'il existe un moyen de vérifier par programme quelles applications ont accès à Automation ? Et existe-t-il un moyen d'accorder ces autorisations de manière programmatique lorsque l'accès intégral au disque est activé ?

2voto

Pablo Bianchi Points 10158

Fabio Viola utilise cette commande :

sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'UPDATE access SET allowed = "1";'

La valeur 1 correspond à l'autorisation d'accès et la valeur 0 au refus d'accès. J'espère que cela pourra fonctionner.

1 votes

! !! Cela ne répond pas à la question de l'OP. C'est littéralement la même chose que de faire défiler la boîte de dialogue et de cocher tout ce qui n'est pas coché. Si votre application n'est pas dans la liste, cela ne servira à rien.

1voto

awy Points 500

La base de données

"/Library/Application Support/com.apple.TCC/TCC.db"

est protégé par SIP sur Mojave et ne peut pas être ouvert par la commande donnée dans ce document. réponse sauf si vous donnez un accès complet au disque à l'application Terminal elle-même comme indiqué dans cette réponse .

J'ai copié le fichier dans un dossier de test et je l'ai ensuite ouvert en utilisant une application GUI : Navigateur de BD pour sqlite.app . Vous pouvez également utiliser d'autres applications si vous le souhaitez.

Non affilié à l'application.

0 votes

Si vous pouvez "copier le fichier" hors du dossier protégé par le SIP, vous pourrez probablement le lire avec des autorisations de "lecture seule" également... vous ne devriez pas pouvoir le lire, mais seulement le modifier.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X