SQLite3随机改变文件权限和所有者

SQLite3随机改变文件权限和所有者

我使用 sqlite3 作为 PHP 应用程序。我使用的函数来自 PHP 内置的 Sqlite3 包。

我不进行正常的 CRUD 操作,包括重新启动 DB 进行测试。这包括删除表和重新插入虚拟数据。

DB 文件的文件权限为sudo chmod a+rwsudo chown $USER:www-data

这一切都很好。

但每天至少一次,我会收到无写入错误。当我查看数据库时,权限和所有权发生了变化。

用户和组更改为$USER:$USER,文件权限更改为-rw-r--r--

什么可能导致这种行为?

操作系统:Debian 12

答案1

当 sqlite3 操作数据库时,它会创建一个副本,更新副本,然后删除原始副本并将副本重命名为原始副本。

发生这种情况时,权限将重置为默认值。您可以通过以下方式更改默认值:

  • 要设置默认组,请更改父目录的组并使该组粘贴sudo chmod g+s ..如果您不存在,则替换为父目录的名称)。这将导致在该目录中创建的所有文件继承该目录的组。
  • 要设置默认组写入权限,请更改 umask。您可能需要 umask 000 或 umask 002(当前可能是 022)。这可能需要在 php 进程开始时(或启动之前)完成。

相关内容