簡體   English   中英

SQLite3寫入只讀數據庫

[英]Sqlite3 writing into a read-only database

我試圖在Mac的TCC數據庫的系統數據庫中插入一行。 主要是我試圖插入此數據庫的“訪問”表中。

c.execute("INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','%s',%s,1,1,NULL,NULL)" % (client, client_type))

這在我測試過的大多數Mac上都可以正常運行(我正在編寫應在多個Mac上運行的代碼)。 但是有一台Mac,當我運行此命令時,它會與

File "read.py", line 76, in insert_client
c.execute("INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','%s',%s,1,1,NULL,NULL)" % (client, client_type))
sqlite3.OperationalError: attempt to write a readonly database

我該怎么做才能確保它作為可寫數據庫打開。

注意:我閱讀了這個問題及其答案 因此,我認為我應該更改權限。 我擁有.db文件的文件夾是/ Library / Application \\ Support / com.apple.TCC / TCC.db
現在這些是每個文件夾的以下權限
ls -lOe輸出

drwxr-xr-x+ 57 root wheel sunlnk 1938 Feb 17 17:39 Library 0: group:everyone deny delete
drwxr-xr-x 11 root admin sunlnk 374 Feb 21 09:50 Application Support
drwxr-xr-x@ 3 root wheel restricted 102 Feb 27 11:35 com.apple.TCC
-rw-r--r-- 1 root wheel restricted 57344 Feb 27 11:35 TCC.db

現在,我嘗試將所有這些都更改為775,但是在每一個上我都得到:Operation not Permitted。
我究竟做錯了什么? 還有另一種解決方法嗎?

更新

基於http://applehelpwriter.com/2016/09/20/dropbox-hack-blocked-by-apple-in-sierra/ ,看起來“壞”的Mac上裝有Mac OS Sierra,您看到的是Apple故意設計的功能旨在禁止您執行正當操作,即侵入TCC.db並規避安全性。 我不確定是否還有已知的解決方法。


舊答案

我認為麻煩是運行腳本的用戶沒有訪問TCC.db文件和修改這些訪問權限的權限。 用戶可能不是管理員,也無法更改。 或者可能你需要sudo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM