【问题标题】:Why Dropbox causes PostgreSQL permission denied errors?为什么 Dropbox 会导致 PostgreSQL 权限被拒绝错误?
【发布时间】:2015-10-02 15:44:24
【问题描述】:

我使用包管理器 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 马西 马西 4096 7 月 14 日 10:27 马西/
  • drwx------ 26 masi masi 4096 Jul 13 16:05 Dropbox/
  • drwxr-xr-x 8 位 masi 开发人员 4096 Jul 14 09:22 det/

我可以将 Dropbox 更改为

  • drwx------ 26 位 masi 开发人员 4096 Jul 13 16:05 Dropbox/

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

类似的错误

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

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

【问题讨论】:

  • 我猜测您在/home/masi/det 中尝试运行sudo 命令,而postgres 用户无权访问该目录。您应该放松对该目录的权限,或者从具有更多开放权限的地方运行脚本。
  • @Petesh 感谢您的评论!我将完整的权限和所有者路径添加到问题正文中的现有文件夹中。我试图运行的代码实际上在 Dropbox 中,我认为这不会影响问题。
  • 您应该能够打开 Dropbox 目录,以允许使用以下命令运行 postgres 命令:chmod go=x /home/masi/Dropbox(以您自己的身份运行)。这应该允许后续的sudo -u postgres 命令。您通常必须打开对目录和所有父目录的足够访问权限,以允许命令处理目录中的文件。执行权限应该足以允许这样做。
  • 您似乎声称drwx------ 26 masi developers 4096 Jul 13 16:05 Dropbox/ 是完全开放的权限,但这只是向masi 用户显示权限 - 您正在使用 sudo 成为 postgres 用户,这肯定没有访问您的 Dropbox 文件夹。 chmod o+rwx /home/masi/Dropbox/ 将授予 postgres 用户(和其他任何人)的访问权限。

标签: linux postgresql dropbox file-permissions package-managers


【解决方案1】:

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 并查看与./ 关联的用户和组是什么,然后将此特定组添加到用户postgres

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

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

希望我没有与第二部分混淆

【讨论】:

  • sudo chmod -R go=rx /home/masi/Dropbox 的负面影响是什么?
  • 与命令本身无关,我只是认为在任何应用程序的核心文件后面运行云同步服务都是有风险的,因为在很多情况下这可能会出错。 1.假设您达到配额,一些文件将开始同步,但其他文件不同步,可能会导致应用程序损坏或卡在两个版本之间。 2. 我们不控制 Dropbox 何时读/写,如果它决定何时写应该是你的应用程序,你会得到应用程序必须处理的 I/O 错误 3. 如果你错误地擦除文件,更改会被复制到任何地方瞬间……
  • 因此,我有 120 GB 的 Dropbox Pro 和付费备份/版本控制系统。另外我有我的本地备份。任何关于这个问题的系统评论都非常受欢迎! - 你怎么能把 Postgres 添加到可以访问 $HOME/Dropbox 的组中我没有设法得到这个稳定。
  • 在这种情况下,您可能不必担心组的配额 =3:ls -la $HOME/Dropbox 哦等等……让我更新我的代码可读性答案
【解决方案2】:

Petesh 的评论中有一些答案,但也需要阅读 -flag。 运行

sudo chmod -R go=rx /home/masi/Dropbox

但如果可以,请避免递归。 该命令允许后续的sudo -u postgres 命令。 您通常必须打开对目录和所有父目录的足够访问权限,以允许命令处理目录中的文件。 在所有情况下执行 s 不够; read -flag 也是必需的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2020-04-06
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多