2017-02-27 87 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

相关问题