从加密的外部驱动器创建数据库(veracrypt + postgreSQL)

从加密的外部驱动器创建数据库(veracrypt + postgreSQL)

我希望我正确地怀疑这是 Ubuntu 的问题,而不是我正在使用的 postgreSQL 10 的问题。我有一个已加密并安装到的外部 SSD /media/veracrypt1/

psql mydb < /media/veracrypt1/mydbdump.sql当尝试使用I get从其上的 .sql 转储创建数据库时bash: /media/veracrypt1/mydbdump.sql: Permission denied。我尝试使用 sudo 运行所有操作但无济于事,我还确保将媒体的所有权和权限设置为当前用户。

umask=0022即使在 Veracrypt GUI 中添加了默认挂载选项后,媒体的权限仍然看起来像这样。

me@mypc:/media$ ls -al
total 140
drwxr-xr-x   4 me me   4096 Jul 12 21:22 .
drwxr-xr-x  24 root   root     4096 Jul  3 06:07 ..
drwxr-x---+  3 me me   4096 Jul 12 22:26 me
drwx------   1 me me 131072 Jan  1  1970 veracrypt1

编辑:我现在已经通过以我的用户而不是 postgres 用户身份运行 psql 解决了这个问题。不过,也许 Thomas 的解决方案对其他人有用。

答案1

当您使用 Veracrypt 挂载目录时,它不会将其挂载为世界可读的。它仅以运行 Veracrypt 的用户身份挂载它:

$ ls -al /media/
total 24K
drwxrwxrwx   5 root   root   4.0K Jul 12 14:59 ./
drwxr-xr-x  29 root   root   4.0K Jul 11 23:08 ../
drwxr-x---+  2 root   root   4.0K Jan  2  2018 root/
drwxrwx---+  3 teward teward 4.0K Jul 12 14:29 teward/
drwx------   1 teward teward 4.0K May 18  2017 veracrypt4/

如您所见,veracrypt4 目录仅可由我的用户读取,而系统上的其他用户则无法读取。这是 Veracrypt 工作方式的固有特征,它不会让整个系统在其默认挂载选项中访问目录。

如果您想改变这一点,您需要更改 Veracrypt 实用程序的默认挂载选项。

在 Veracrypt GUI 中,转到菜单栏中的“设置”菜单,然后选择“默认挂载参数”。在标有“挂载选项”的框中,您需要输入umask=0022,这将为挂载文件夹设置不同的有效权限。然后点击“确定”,然后再次挂载您的 Veracrypt 驱动器/容器。

使用这些挂载选项,同一个挂载点将获得与默认值不同的权限掩码 - 它既可由组读取,又可由“其他用户”读取(请注意,权限行已从变为drwx------drwxr-xr-x

$ ls -al /media/
total 24K
drwxrwxrwx   5 root   root   4.0K Jul 12 15:01 ./
drwxr-xr-x  29 root   root   4.0K Jul 11 23:08 ../
drwxr-x---+  2 root   root   4.0K Jan  2  2018 root/
drwxrwx---+  3 teward teward 4.0K Jul 12 14:29 teward/
drwxr-xr-x   1 teward teward 4.0K May 18  2017 veracrypt4/

由于它以您的用户身份挂载它,而不是默认挂载它以便其他人可以读取它,这就是您收到错误的原因。调整挂载 umask,然后再次尝试以用户身份postgres读取文件/驱动器。然后它应该可以正常工作。

但请不要忘记,这会将“加密”数据公开给驱动器上的所有其他用户。如果您想禁止系统上的其他用户(系统用户或其他用户)访问加密数据,则需要删除这些挂载选项。

相关内容