2017-02-27 124 views
0

我想在Mac,TCC數據庫中插入一行到系統數據庫中。主要是我試圖插入到這個數據庫的'訪問'表。Sqlite3寫入一個只讀數據庫

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 

我該怎麼做才能確保它作爲可寫數據庫打開。我想讀this question and its answer。所以我想我應該改變我的權限。在我所.db文件夾是/庫/應用程序\支持/ 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 
[email protected] 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 

現在我嘗試chmod所有這些到775,但他們每一個我得到:操作不允許。
我在做什麼錯?還有另一種解決這個問題的方法嗎?

回答

1

更新

http://applehelpwriter.com/2016/09/20/dropbox-hack-blocked-by-apple-in-sierra/基礎,它看起來像「壞」的Mac安裝了Mac OS塞拉利昂它,你看到的是蘋果故意功能,旨在從正是你正在做的,即黑客禁止你納入TCC.db並規避安全。我不確定是否還有已知的解決方法。


老回答

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

+0

如果我用sudo運行它,也會出現同樣的錯誤。 – ShdwKnght333

+0

你用sudo跑什麼?如果您運行腳本並且您的腳本沒有明確修改訪問權限 - 那就不足爲奇了。 'ls'表明文件由用戶「wheel」擁有,這可能不是你(參見http://superuser.com/questions/191955/what-is-the-wheel-user-in-os-x)目前的訪問規則是隻能編輯文件,即使是「root」組也不能。如果您想以其他用戶的身份編輯文件,則應首先在sudo下更改accecss權限,然後對其進行編輯。注意:我不確定編輯這樣的文件manualy是一個好主意。你確定沒有API嗎? – SergGr

+0

關於編輯部分,我已經在其他機器上安全成功地完成了它。我還讀了你提供給我的鏈接。那麼我現在應該使用'chgrp',如果是的話呢?就像在文件或目錄中一樣。我確信'chmod'不會工作,因爲我試過了,失敗了。 – ShdwKnght333