Files

為什麼我不能在權限被拒絕的情況下將目錄更改為目前目錄?

  • June 16, 2018

我正在嘗試使用以下命令恢復數據庫:

$ sudo -u postgres pg_restore -C -d dvdrental dvdrental.tar 
[sudo] password for t: 

但是,我收到以下錯誤消息:

無法將目錄更改為**“/home/t/mydata/…/relation model/SQL/implementations/Implementations,即關係數據庫管理系統/postgreSQL/general/web/postgresqltutorial/databases”**:權限被拒絕

pg_restore:

$$ archiver $$無法打開輸入文件“dvdrental.tar”:沒有這樣的文件或目錄

我想知道為什麼我不能在權限被拒絕的情況下將目錄更改為目前目錄?

文件權限位是:

-rw-rw-r-- 1 t t 2838016 May 26  2013 dvdrental.tar

是不是因為它的祖先目錄之一不能被任何人讀取和執行?該文件有許多祖先目錄,我該如何驗證?

目前目錄及其所有父目錄必須可供postgres使用者訪問,postgres在確定’ 的權限時為每個目錄應用的任何所有者/組/其他權限設置可執行/可搜尋位,或使用 ACL 授予該權限.

要檢查權限,請使用namei

namei -l /path/to/directory

請參閱如何檢查使用者是否可以訪問給定文件?詳情。

你可以,使用者postgres不能。

sudo -u postgres 將使用者 ID 更改為 postgres,然後執行命令。現在使用者 postgres 無法訪問輸入文件,甚至目前目錄。

相反,這樣做:

$ sudo -u postgres pg_restore -C -d dvdrental < dvdrental.tar 

這樣,在 sudo 啟動之前,您的 shell 在您的帳戶下打開文件,pg_restore然後在標準輸入上訪問文件內容

引用自:https://unix.stackexchange.com/questions/449983