[おしらせ]このBLOGは更新を終了しています。

何かあれば
この記事にコメントをつけてください。
定期的に投稿しないと削除されてしまうのでメンテナンスの投稿はたまにあります

| | コメント (4)

[Mac Admin]TCC.dbを操作する【その1】TCC (Transparency Consent Control)の基本情報

Transparency Consent Control Data Base
TCC.dbを操作します。


目的
TCC.dbを操作することで、WACOMのペンタブや
Microsoft Teamsでの画面共有の設定を速やかに行う


TCC.dbは
ローカルドメインとユーザードメインの2箇所に存在します。
ローカルドメイン
/Library/Application Support/com.apple.TCC/TCC.db
ユーザードメイン
/Users/ユーザー名/Library/Application Support/com.apple.TCC/TCC.db


TCC.dbはデータベースですので
操作には『sqlite3』を利用します。
/usr/bin/sqlite3


リセットツールとして
『tccutil』が用意されています
/usr/bin/tccutil

 

 


留意事項
OSのバージョンによって設定項目数が異なります。
ここでは10.15で説明します。

|

[Mac Admin]TCC.dbを操作する【その2】コントロールパネルのアンカー

いきなり脱線ですが
管理ユーザーが多い場合はこのような配慮が必要になります
コントロールパネルをアンカー指定で開く

Screen_capture_20201123_13_09_57

 

ユーザーに『セキュリティとプライバシー』のシステム環境設定を操作させる場合に
操作先を指定して開いておいてあげる場合

 

Screen_capture_20201123_13_18_48

 


--セキュリティとプライバシーのコントロールパネルを開く(最後に閉じた画面で)
try
set theCommand to ("open \"x-apple.systempreferences:com.apple.preference.security\"") as text
do shell script theCommand
end try
---カメラをアンカーにして開く
try
set theCommand to ("open \"x-apple.systempreferences:com.apple.preference.security?Privacy_Camera\"") as text
do shell script theCommand
end try

 

『セキュリティとプライバシー』のアンカーは以下
Privacy_Reminders
Privacy_SystemServices
Privacy_Calendars
Privacy_Assistive
Privacy_LocationServices
Privacy_Contacts
Privacy_Accessibility
Privacy_Camera
Privacy_AllFiles
Privacy_Microphone
General
Advanced
Firewall
FDE
Privacy

 

 

アンカー名はこのように取得できる


try
set theComand to ("open \"x-apple.systempreferences:com.apple.preference.security\"") as text
do shell script theComand
end try

delay 5

tell application "System Preferences"
set theAnchors to get name of anchors of current pane
end tell

log theAnchors

theAnchors

 

この方法で開けるシステム環境設定はこちらの一覧を参照してください

 


システム環境設定の一覧
com.apple.ClassroomSettings
com.apple.Localization
com.apple.preference.datetime
com.apple.preference.desktopscreeneffect
com.apple.preference.digihub.discs
com.apple.preference.displays
com.apple.preference.dock
com.apple.preference.energysaver
com.apple.preference.expose
com.apple.preference.general
com.apple.preference.ink
com.apple.preference.keyboard
com.apple.preference.mouse
com.apple.preference.network
com.apple.preference.notifications
com.apple.preference.printfax
com.apple.preference.screentime
com.apple.preference.security
com.apple.preference.sidecar
com.apple.preference.sound
com.apple.preference.speech
com.apple.preference.spotlight
com.apple.preference.startupdisk
com.apple.preference.trackpad
com.apple.preference.universalaccess
com.apple.preferences.AppleIDPrefPane
com.apple.preferences.appstore
com.apple.preferences.Bluetooth
com.apple.preferences.configurationprofiles
com.apple.preferences.extensions
com.apple.preferences.FamilySharingPrefPane
com.apple.preferences.icloud
com.apple.preferences.internetaccounts
com.apple.preferences.parentalcontrols
com.apple.preferences.password
com.apple.preferences.sharing
com.apple.preferences.softwareupdate
com.apple.preferences.users
com.apple.preferences.wallet
com.apple.prefpanel.fibrechannel
com.apple.prefs.backup
com.apple.Xsan

|

[Mac Admin]TCC.dbを操作する【その3】tccutil

tccutil
/usr/bin/tccutil
TCC(Transparency Consent Control)のユーティリティ
早い話が『TCCのリセットツール』

 

全リセット(オプションAllのAは大文字lは小文字)
/usr/bin/sudo /usr/bin/tccutil reset All
特定のサービスのみリセット
/usr/bin/sudo /usr/bin/tccutil reset サービス名
特定のアプリの全部リセット
/usr/bin/sudo /usr/bin/tccutil reset All アプリ名
特定のアプリの特定のサービスのみリセット
/usr/bin/sudo /usr/bin/tccutil reset サービス名 アプリ名

 

どんな時に使うか
■うっかりセキュリティ警告画面で『拒否』を選んじゃったとき(逆の『許可』の時もそう)
■環境移行しながらデバイスが変わった時
■各種ドライバーがバージョンアップして動作が不安定になった時

 

個別のアンカーのリセットは以下のように行う
/usr/bin/sudo /usr/bin/tccutil reset Microphone
/usr/bin/sudo /usr/bin/tccutil reset Camera
/usr/bin/sudo /usr/bin/tccutil reset Accessibility
/usr/bin/sudo /usr/bin/tccutil reset ListenEvent
/usr/bin/sudo /usr/bin/tccutil reset ScreenCapture
/usr/bin/sudo /usr/bin/tccutil reset SystemPolicyAllFiles

 

サービス名の一覧

Location Services
Contacts
Calendars
Reminders
Photos
Camera
Accessibility
Microphone
Speech Recognition
Input Monitoring
Full Disk Access
Files & Folders
Screen Recording
Automation
Analytics
Advertising

 

 

 

 

----tccutilのGeneral Commands Manual 内容は以下
NAME
tccutil -- manage the privacy database

 

SYNOPSIS
tccutil command service [bundle_id]

 

DESCRIPTION
The tccutil command manages the privacy database, which stores decisions
the user has made about whether apps may access personal data.

 

One command is current supported:

 

reset Reset all decisions for the specified service, causing apps to
prompt again the next time they access the service. If a bundle
identifier is specified, the service will be reset for that bun-
dle only.

 

EXAMPLES
To reset all decisions about whether apps may access the address book:

 

tccutil reset AddressBook
tccutil reset All com.apple.Terminal

|

[Mac Admin]TCC.dbを操作する【その4】Bundle identifierを取得する

TCC.dbに各種アプリケーションからのアクセスを許可するには
『Bundle identifier』バンドルIDで指定します。

 

AppleScriptだと

id of application "アプリケーション名"
例:id of application "Terminal" 

get bundle identifier of (info for (path to application "アプリケーション名"))
例:get bundle identifier of (info for (path to application "Terminal"))で
取得できる

 

コマンドだと
mdls -name kMDItemCFBundleIdentifier -r "UNIXパス"
例:mdls -name kMDItemCFBundleIdentifier -r "/System/Applications/Utilities/Terminal.app"
とか
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /アプリケーションまでのUNIXパス/Contents/Info.plist
例:/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Safari.app/Contents/Info.plist

 

等で取得します。
手動で一度TCCに登録してから…も良いかもしれません。

 

|

[Mac Admin]TCC.dbを操作する【その5】TCC.dbの中身をみてみましょう

TCC.dbは
ローカルドメインとユーザードメインの2箇所に存在します。
ローカルドメイン /Library/Application Support/com.apple.TCC/TCC.db
ユーザードメイン /Users/ユーザー名/Library/Application Support/com.apple.TCC/TCC.db


GUIアプリを利用したい場合は
DB Browser for SQLiteが良いでしょう(LINK
コマンドでも参照出来ます
/usr/bin/sqlite3


ユーザードメインのTCC.dbをDB Browser for SQLiteで開いてみると
Screen_capture_20201123_19_56_22


コマンドの場合は
ユーザードメインのTCC.dbを開く
/usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db
コマンドを順番に
.show  設定を見る
.tables  テーブル一覧を見る(accessがあるのをみてください)
.mode line (ラインモードに変更)
select * from access; (accessの一覧を出力します)
.quit (sqlite3を終了)


実際のログはこんな感じ
% /usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db

SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .show

echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: /Users/ユーザー名/Library/Application Support/com.apple.TCC/TCC.db

sqlite> .tables

access active_policy expired
access_overrides admin policies

sqlite> .mode line
sqlite> select * from access;

service = kTCCServiceCamera
client = com.tinyspeck.slackmacgap
client_type = 0
allowed = 1
prompt_count = 1
csreq =
policy_id =
indirect_object_identifier_type =
indirect_object_identifier = UNUSED
indirect_object_code_identity =
flags = 0
last_modified = 1606114806

sqlite> .quit %


colseparator: "|" 値の区切り文字は『パイプ』
rowseparator: "\n" 改行コードはUNIX改行
各テーブルで12項目の設定を確認できます(OSのバージョンによって項目数は異なります)
service
client
client_type
allowed
prompt_count
csreq
policy_id
indirect_object_identifier_type
indirect_object_identifier
indirect_object_code_identity
flags
last_modified


格納されている値では
client_type = 0 これは数字のゼロが値
policy_id =    この場合はNULL ヌル 何も入っていないとなります。


これで
だいたい、内容と設定すべき値等がわかってきました

|

[Mac Admin]TCC.dbを操作する【その6】ローカルドメインとユーザードメイン

TCC.dbは
ローカルドメインとユーザードメインの2箇所に存在します。
ローカルドメイン(デバイス依存)
/Library/Application Support/com.apple.TCC/TCC.db
ユーザードメイン(ユーザー依存)
/Users/ユーザー名/Library/Application Support/com.apple.TCC/TCC.db
概ね以下のような感じですが…
Screen_capture_20201123_20_51_56


まず、どっちに、どの項目が設定されているか?みましょう

 

コマンド
ローカルドメイン
/usr/bin/sudo /usr/bin/sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
ユーザードメイン
/usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'


戻り値

ローカルドメイン

例:kTCCServiceAccessibility|com.microsoft.edgemac|0|1|1||||UNUSED||0|1606061326
ユーザードメイン
例:kTCCServiceMicrophone|com.microsoft.edgemac|0|1|1| |||UNUSED||0|1606127842


戻り値は区切り文字『|』パイプで区切られて、左から
service
client
client_type
allowed
prompt_count
csreq
policy_id
indirect_object_identifier_type
indirect_object_identifier
indirect_object_code_identity
flags
last_modified

並んでいます。


例1
allowed=1はこの項目が『有効』ですから
allowedを0に変更すれば『無効』となります

 

例2
client=com.microsoft.edgemac(Bundle identifierでエッジ)になっていますので
ここをcom.apple.Safariに変更すれば、エッジの設定をサファリにも適応できます。

 

例3
値が無い場合は、設定値は『NULL』をとして戻します。

 

例4:
UNUSEDやBundle identifierは『'値はここ'』シングルクオトで囲ってテキストとして戻します。

 


サービス名一覧 kTCCServiceAll kTCCServiceAddressBook kTCCServiceCalendar kTCCServiceReminders kTCCServiceTwitter kTCCServiceFacebook kTCCServiceSinaWeibo kTCCServiceLiverpool kTCCServiceUbiquity kTCCServiceTencentWeibo kTCCServiceShareKit kTCCServicePhotos kTCCServicePhotosAdd kTCCServiceMicrophone kTCCServiceCamera kTCCServiceWillow kTCCServiceMediaLibrary kTCCServiceSiri kTCCServiceAppleEvents kTCCServiceLinkedIn kTCCServiceAccessibility kTCCServicePostEvent kTCCServiceLocation kTCCServiceSystemPolicyAllFiles kTCCServiceSystemPolicySysAdminFiles kTCCServiceSystemPolicyDeveloperFile

|

【Fonts】シヤチハタフォント(文字もじ MOJI の世界)

記事

https://moji.or.jp/2020/11/17/

直リンク

https://moji.or.jp/wp-content/uploads/2020/11/2020-09_magazine_blog.pdf

|

【App】draw.ioメニューが日本語化してる…

ワンポイントでフロー書いたりするのに使っている『draw.io
一部メニューとかが日本語化されていた。ちなみに今のバージョンは13.9.9

PowerPointやkeynoteでは面倒な図形も
ちょい、ちょいと簡単です。

Screen_capture_20201123_14_07_28

|

【Google Chrome】Google Software Update

 


 


 


/Users/ユーザー名/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Helpers


 


Google Chromeのアップデート関連


 


ksinstall
ksfetch
ksdiagnostics
ksadmin

GoogleSoftwareUpdateDaemon
Google Software Update.app
crashpad_handler


 


スクリーンタイムが要求してきたら許可しても問題無い
自分で定期的にクロームを更新している場合は、『許可しない』でも大丈夫


 

|

Vectornator: Design Software

Screen-capture-20201122-215706

https://apps.apple.com/jp/app/vectornator-vector-design/id1219074514

|

«【Paint】ArtRage6