sqlite3写入仅读取数据库



我试图将一行插入TCC数据库Mac的系统数据库中。主要是我试图将此数据库中的"访问"表插入。

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,但是在每个我都得到:操作不允许。
我究竟做错了什么?还有另一种解决此问题的方法吗?

update

基于http://applehelpwriter.com/2016/09/20/dropbox-hack-blocked-by-apple-in-sierra/,看起来" Bad" Mac Mac上有Mac OS Sierra,以及您的内容See是Apple故意的功能,旨在禁止您确切地做的事情,即入侵tcc.db并规避安全性。我不确定是否还有已知的解决方法。


旧答案

我认为问题是,运行脚本的用户没有访问tcc.db文件并修改这些访问权限的权限。用户可能不是管理员,无论如何都不能更改它。或可能您需要sudo

最新更新