【发布时间】:2015-10-02 15:44:24
【问题描述】:
我使用包管理器 apt-get 安装了 postgresql-common 和 postgresql-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