使用PDO sqlite PHP适配器时,新建的sqlite数据库文件的组权限被设置为只读,并且不遵守umask。我需要每个数据库文件都可被组写入。有没有什么方法可以实现这个需求?编辑:我知道如何更改文件的权限,我想知道是否可能按照正确的权限(根据进程umask)来创建文件。
看起来有一个 SQLITE_DEFAULT_FILE_PERMISSIONS 编译参数。 如果需要,似乎会在其上应用 umask 限制。 因此,重新编译并使用 SQLITE_DEFAULT_FILE_PERMISSIONS=666,然后依靠 umask 是有意义的。遗憾的是,在sqlite中这不是默认选项。
在使用sqlite的connect调用打开数据库文件之前,您可以像打开普通文件一样以所需的权限打开它。这将创建一个空文件,除非该文件已经存在。Sqlite将使用数据库填充该空文件。 与在文件创建后使用chmod相比,这种方法更安全,有两个原因: 在调用chmod之前,另一个用户可能会打开该文件。 在某些情况下(例如配置为WAL时),sqlite将创建多个文件。它将尊重预先存在的空文件的权限,并将其用于其他文件。对主文件使用chmod会忘记为其他文件设置权限。
chmod
命令在创建数据库文件后更改其权限。 - sectus