我遇到了与SQLite数据库权限相关的奇怪错误。
我输入bash
rm -f test.db
sqlite3 test.db 'CREATE TABLE t (qwe, qqq)'
chmod 666 test.db
sudo -u another-user sqlite3 test.db 'INSERT INTO t VALUES (4, 2)'
打印
错误:无法打开数据库文件
如果我将test.db
文件的所有者更改为another-user
,则会打印相同内容。
但是,如果我试图代表root或我插入记录,那就没有了
错误,并且已成功插入。
有什么麻烦?
getfacl test.db
的输出如下
# file: test.db # owner: mymedia # group: mymedia user::rw- group::rw- other::rw-
AppArmor没有与SQLite相关的配置文件,禁用了SeLinux。我曾是 在Ubuntu 16.04上进行实验。 SQLite的版本是3.11.0。
答案 0 :(得分:1)
这里的问题似乎不是文件权限,而是目录。检查放置数据库文件的目录是否具有another-user
的适当权限。