gpt4 book ai didi

linux - 为什么 Dropbox 导致 PostgreSQL 权限被拒绝错误?

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:53 25 4
gpt4 key购买 nike

我使用包管理器 apt-get 安装了 postgresql-commonpostgresql-9.4。我将我的数据库系统从 OSX 更改为 Debian 8.1,之后我遇到了 Permission denied 错误。用户 postgres 存在 (CREATE USER postgres;) 并且数据库 detector 存在 CREATE DATABASE detector WITH OWNER=postgres; ).

我运行成功

masi@pc212:~$ sudo -u postgres psql detector -c "DROP TABLE measurements;"DROP TABLE
masi@pc212:~$ sudo -u postgres psql detector -c "CREATE TABLE measurements ( m_id SERIAL PRIMARY KEY NOT NULL, m_size INTEGER NOT NULL );"
CREATE TABLE

但在 Dropbox 目录中同样失败

masi@pc212:~$ cd Dropbox/
masi@pc212:~/Dropbox$ sudo -u postgres psql detector -c "DROP TABLE measurements;"
could not change directory to "/home/masi/Dropbox": Permission denied
DROP TABLE
masi@pc212:~/Dropbox$ sudo -u postgres psql detector -c "CREATE TABLE measurements ( m_id SERIAL PRIMARY KEY NOT NULL, m_size INTEGER NOT NULL );"
could not change directory to "/home/masi/Dropbox": Permission denied
CREATE TABLE

设置

命令 psql 位于 /etc/sudoers 的 SECURE_PATH 中:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

命令 which psql 给出 /usr/bin/psql

我保存代码的真实目录是 /home/masi/Dropbox/det/ 可能是 Dropbox 安装影响的地方:

  • drwxr-xr-x 32 masi masi 4096 Jul 14 10:27 masi/
  • drwx------ 26 masi masi 4096 Jul 13 16:05 Dropbox/
  • drwxr-xr-x 8 位主要开发人员 4096 Jul 14 09:22 det/

我可以在哪里更改 Dropbox

  • drwx------ 26 名主要开发人员 4096 7 月 13 日 16:05 Dropbox/

但无法增加权限,因为我开始得到 ls: cannot access ../../Dropbox/: Permission denied 尽管具有完全打开的权限。这是一个非常奇怪的行为,这里完全打开权限导致了这样的行为。

类似错误

  • thread关于 nautilus-dropbox 但我的系统中没有 nautilus-dropbox

为什么 Dropbox 会给 PostgreSQL 带来这样的问题?

最佳答案

Dropbox 的内容已加密且必须映射,并非每个用户都可以访问您系统上的 $HOME/Dropbox。当您使用 Unix 文件管理器行 Nautilus 或 Nemo 时,Dropbox 必须安装一个插件,以便他们可以浏览文件,就好像它只是一个简单的目录一样。

此目录只能从安装 Dropbox 的用户读取/写入,通常 PostgreSQL 在不同组中的自己用户下运行。您可以将 postgreSQL 用户添加到有权访问 $HOME/Dropbox 的组(您安装和配置 Dropbox 的用户)

或者,如果您打算创建一个实时备份,您可以执行一个从 Dropbox cp 到普通文件夹的脚本,即使出于多种原因我不鼓励使用同步云服务,第一个就是这个 http://support.code42.com/CrashPlan/Latest/Backup/Comparing_Cloud_Backup_And_Cloud_Storage .

编辑要将 postgresql 添加为您的用户,您有自己的组或共享组

最简单的方法是执行 ls -la $HOME/Dropbox 并查看与 ./ 关联的用户和组是什么,然后将此特定组添加到用户邮政系统

您可以键入 groups postgres 来查看该用户已经可以访问的组,并在您添加该组后进行确认。

这样 postgres 的用户将拥有与您相同的访问权限。但是为了安全起见,这可能不是系统管理员所推荐的(我不是)。我更喜欢:创建一个新组(比方说 my_dropbox_group)更改该组的执行/读取/写入权限。然后将您的用户和 postgres 添加到 my_dropbox_group 组,这样您就可以将 postgres 限制为仅 dropbox,并且您的用户将具有与 my_dropbox_group 组相同的访问权限。如果你有多个用户,每个用户都有一个个人 Dropbox,你必须创建不同的组,这样人们就不能访问其他 dropbox,比如 dropbox_mikedropbox_paul 是两个不同的 dropbox帐户,您可以从该帐户手动管理访问权限

希望我没有把第二部分搞混

关于linux - 为什么 Dropbox 导致 PostgreSQL 权限被拒绝错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31399266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com