Files
為什麼我不能在權限被拒絕的情況下將目錄更改為目前目錄?
我正在嘗試使用以下命令恢復數據庫:
$ 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
然後在標準輸入上訪問文件內容