【问题标题】:Sqlite3 writing into a read-only databaseSqlite3 写入只读数据库
【发布时间】:2017-07-17 16:04:00
【问题描述】:

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

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,但在每一个上我都得到:不允许操作。
我究竟做错了什么?还有其他方法可以解决这个问题吗?

【问题讨论】:

    标签: python macos sqlite


    【解决方案1】:

    更新

    基于http://applehelpwriter.com/2016/09/20/dropbox-hack-blocked-by-apple-in-sierra/,看起来“坏”的 Mac 上安装了 Mac OS Sierra,而您看到的是 Apple 故意设计的功能,旨在禁止您执行您正在做的事情,即侵入 TCC.db 并绕过安全。我不确定是否还有已知的解决方法。


    旧答案

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

    【讨论】:

    • 你用 sudo 运行什么?如果你运行你的脚本并且你的脚本没有明确地修改访问权限——那就不足为奇了。 ls 表明该文件归用户“wheel”所有,这可能不是您(参见superuser.com/questions/191955/what-is-the-wheel-user-in-os-x),当前的访问规则是只有可以编辑文件,即使“root”组也不能。如果你想以其他用户的身份编辑文件,你首先应该在 sudo 下更改访问权限,然后编辑它。注意:我不确定手动编辑这样的文件是个好主意。你确定没有 API 吗?
    • 关于编辑部分,我已经在其他机器上安全成功地完成了。我还阅读了您提供给我的链接。那么我现在应该使用chgrp 吗?如果是的话,应该用什么?就像在文件或它所在的目录中一样。我确信chmod 不会工作,因为我尝试过但失败了。
    • 复查一下:你试过sudo chmod 修改访问权限失败?
    • 是的,我确实输入了sudo chmod 775 path
    • 这是一个惊喜。您可以将ls -lOe 的结果添加到您的问题中吗?
    猜你喜欢
    • 2017-09-27
    • 2017-04-03
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多