Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sqlite3写入只读数据库_Python_Macos_Sqlite - Fatal编程技术网

Python Sqlite3写入只读数据库

Python Sqlite3写入只读数据库,python,macos,sqlite,Python,Macos,Sqlite,我试图在Mac的系统数据库中插入一行,即TCC数据库。主要是我试图插入这个数据库中的“access”表 c.execute("INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','%s',%s,1,1,NULL,NULL)" % (client, client_type)) 这在我测试过的大多数Mac电脑上都能正常工作(我正在编写可以在多台Mac电脑上工作的代码)。但是有一个mac,当我运行这个命令时,它会返回 Fil

我试图在Mac的系统数据库中插入一行,即TCC数据库。主要是我试图插入这个数据库中的“access”表

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
现在,我尝试将所有这些命令chmod到775,但在每个命令上我都得到:不允许操作。

我做错了什么?还有其他方法可以解决这个问题吗?

更新

基于这一点,看起来“坏”的Mac上有Mac OS Sierra,你看到的是苹果故意设计的一个功能,旨在禁止你做你正在做的事情,即入侵TCC.db并规避安全。我不确定是否还有已知的解决办法


旧答案


我认为问题在于运行脚本的用户没有访问TCC.db文件和修改这些访问权限的权限。可能该用户不是管理员,因此无法对其进行更改。或者您可能需要
sudo

使用sudo运行什么?如果您运行脚本,并且脚本没有显式修改访问权限,这并不奇怪
ls
显示文件由用户“wheel”拥有,而用户“wheel”可能不是您(请参见),当前的访问规则是只有用户可以编辑文件,即使是“root”组也不能。如果要以其他用户身份编辑该文件,应首先在sudo下更改accecss权限,然后再对其进行编辑。注意:我不确定手动编辑这样的文件是一个好主意。你确定没有API吗?关于编辑部分,我已经在其他机器上安全成功地完成了。我也读了你提供给我的链接。那么,我现在应该使用
chgrp
吗?如果是,在什么方面?如文件或目录中所示。我确信
chmod
无法工作,因为我尝试了,但失败了。请再次检查:您尝试了
sudo chmod
,但未能修改访问权限?是的,我确实键入了
sudo chmod 775 path
这是一个惊喜。您能否将
ls-lOe
的结果添加到您的问题中?