You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SQLite的WAL、SHM文件设置全局可写权限

解决方案

方案1:使用SQLite官方权限配置参数(兼容3.31.0及以上版本)

SQLite从3.31.0版本开始新增了journal_file_permissions配置项,可以直接指定WAL、SHM文件的创建权限,在建立数据库连接后执行一次以下PRAGMA命令即可:

PRAGMA journal_file_permissions = 0664;

这里设置的0664代表文件所有者和同组用户拥有读写权限,其他用户仅可读,你可以根据实际需求调整为0666给所有用户开放读写权限(请提前评估安全风险)。该配置仅对生效后新创建的WAL、SHM文件生效,如果已有旧的临时文件,需要先关闭所有数据库连接,等待SQLite自动删除旧的WAL/SHM文件后再重新建立连接即可。

方案2:目录权限继承(兼容所有SQLite版本)

如果使用的SQLite版本低于3.31.0,可以通过操作系统目录的setgid权限实现文件权限继承:

  • 先将两个操作数据库的操作系统用户加入同一个用户组,例如命名为sqlite-group
  • 修改数据库所在目录的所属组,同时开启setgid权限:
    chgrp sqlite-group /path/to/db_directory
    chmod 2775 /path/to/db_directory
    
  • 同步修改数据库主文件的权限,确保同组用户可写:
    chmod 664 /path/to/target.db
    chgrp sqlite-group /path/to/target.db
    

配置完成后,该目录下新创建的所有文件都会自动继承父目录的所属组,两个同组用户都可以正常读写SQLite自动生成的WAL/SHM文件。

方案3:调整进程umask值

启动操作SQLite的业务进程前,先将进程的umask值调整为0002(如果需要给所有用户开放权限可调整为0000),这样进程创建的所有新文件默认权限就会是664/666,也能解决临时文件权限不足的问题。

注意:该配置会影响当前进程创建的所有文件的默认权限,非特殊场景不推荐使用。

内容的提问来源于stack exchange,提问作者hifkanotiks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:36:03