権限が拒否された現在のディレクトリにディレクトリを変更できないのはなぜですか?

権限が拒否された現在のディレクトリにディレクトリを変更できないのはなぜですか?

次のコマンドを使用してデータベースを復元しようとします。

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

ただし、次のエラー メッセージが表示されます。

ディレクトリを次に変更することはできません。"/home/t/mydata/.../relational 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

親ディレクトリの1つを誰も読んで実行できないからですか?このファイルには親ディレクトリがたくさんあります。どうやって確認できますか?

ベストアンサー1

あなたはできますが、ユーザーはpostgresできません。

sudo -u postgres user-idをpostgresに変更してコマンドを実行します。これで、ユーザーpostgresは入力ファイルだけでなく現在のディレクトリにもアクセスできません。

代わりに、次の操作を行います。

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

これにより、sudoが開始される前にファイルがユーザーアカウントのシェルで開き、pg_restore標準入力のファイル内容にアクセスされます。

おすすめ記事