我正在尝试在Mac,TCC数据库中的系统数据库中插入一行。主要是我试图插入“访问”#39;此数据库中的表。
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文件的文件夹是/ 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
现在我尝试将所有这些chmod到775但是我得到的每一个:操作不允许。
我究竟做错了什么?还有另一种解决方法吗?
答案 0 :(得分:2)
<强>更新强>
基于http://applehelpwriter.com/2016/09/20/dropbox-hack-blocked-by-apple-in-sierra/看起来好像&#34;坏&#34; Mac上有Mac OS Sierra,你看到的是Apple的一个故意功能,旨在禁止你正是你正在做的事情,即攻击TCC.db并规避安全性。我不确定是否还有已知的解决方法。
旧答案
我认为问题在于运行脚本的用户没有权限访问TCC.db文件并修改这些访问权限。可能用户不是管理员,无论如何都无法改变它。或者您可能需要sudo