即使使用sudo,如何拒绝访问postgres目录?

时间:2015-02-08 06:31:51

标签: ruby-on-rails postgresql shell ruby-on-rails-4

我需要访问pg_hba.conf才能尝试修复我的破坏的postgres开发数据库,​​该数据库在RAILS_ENV=development rails s的<{p}}上出错

PG::ConnectionBad
fe_sendauth: no password supplied

这篇文章至少似乎表明此类访问可能有所帮助:PG::ConnectionBad: fe_sendauth: no password supplied

问题是,即使我知道路径

/Library/PostgreSQL/9.3/data/pg_hba.conf

当我真正尝试进入它时:

cd /Library/PostgreSQL/9.3/data/

我得到:cd:cd:13: permission denied: /Library/PostgreSQL/9.3/data/

看似明显的解决办法是sudo,所以我试试看:

sudo cd /Library/PostgreSQL/9.3/data/

没有任何反应。从字面上看,下一行显示我仍然正是我所在的位置。怎么能否定sudo?我怎样才能访问此文件或修复我的问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

此:

sudo cd /Library/PostgreSQL/9.3/data/

cd下运行sudo命令。 sudo实际上运行了shell的{em>新实例(/bin/sh或其他),然后在shell中运行命令。

当前目录是当前进程的属性。它由新的子进程继承,但它更改 not 会传播到父进程。

你所做的相当于:

sh -c 'cd /tmp'

它创建一个新的shell,cds到一个位置,然后退出。 cd的效果只影响那个shell,所以它实际上没有做任何事情。

您应该做的是使用sudo通过绝对路径在文本编辑器中打开文件,例如:

sudo nano /Library/PostgreSQL/9.3/data/pg_hba.conf

nano是一个简单且用户友好的命令行文本编辑器;我假设您在此问题时不知道如何使用vi。)