2017-04-06 35 views
1

我試圖通過配置腳本在Ubuntu/vagrant上設置postgres 9.6。我的劇本的部分增加了一行pg_hba.conf使用下面的命令:Unix腳本無法更改Ubuntu上的postgres hba.conf配置文件

sudo -u postgres echo "host all all all md5" >> /etc/postgresql/9.6/main/pg_hba.conf

然而,這給我的錯誤-bash: /etc/postgresql/9.6/main/pg_hba.conf: Permission denied

,因爲我不允許有任何sudo nano或編輯文件,該文件是奇怪sudo -u postgres nano

下面是對文件的訪問權限: -rw-r----- 1 postgres postgres 4641 Apr 6 16:11 pg_hba.conf

我怎麼能在一個腳本這行添加到我的配置文件?

+0

你'sudo'是覆蓋'echo',而不是''>>。如果你引用整個事情,它應該會更好。 – jmelesky

+0

'echo'host ...「| sudo tee -a文件名「工作? –

+0

@ MikeSherrill'CatRecall'似乎工作。你會添加一個答案,以便我可以信任你? –

回答

1

這裏的問題是在執行命令之前重定向發生在之前。所以重定向沒有你期望的提升權限。

圍繞這個問題有多種解決方法。我通常使用這樣的東西。

echo "host..." | sudo tee -a /etc/postgresql/9.6/main/pg_hba.conf 

配管到sudo tee...避免引用問題。


How bash executes commands

Redirections