Por que não consigo alterar o diretório para o diretório atual com permissão negada?

0

Estou tentando restaurar um banco de dados com o seguinte comando:

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

No entanto, estou recebendo a seguinte mensagem de erro:

could not change directory to "/home/t/mydata/.../relation model/SQL/implementations/Implementations, i.e. relational database management systems/postgreSQL/general/web/postgresqltutorial/databases": Permission denied

pg_restore: [archiver] could not open input file "dvdrental.tar": No such file or directory

Eu estava me perguntando por que não posso mudar o diretório para o diretório atual com permissão negada?

Os bits de permissão de arquivo são:

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

É porque um de seus diretórios de ancestralidade não é legível e executável por qualquer um? O arquivo tem muitos diretórios de ancestralidade e como posso verificar isso?

    
por Tim 15.06.2018 / 14:20

2 respostas

3

O diretório atual, e todos os seus diretórios pai, devem estar acessíveis para o usuário postgres , ie ter o bit executável / pesquisável definido para o proprietário / grupo / outra permissão aplicável em cada diretório ao determinar as permissões de postgres ou conceder essa permissão usando ACLs.

Para verificar as permissões, use namei :

namei -l /path/to/directory

Veja Como verificar se um usuário pode acessar um determinado arquivo? para detalhes.

    
por 15.06.2018 / 14:23
5

Você pode, usuário postgres não pode.

sudo -u postgres altera user-id para postgres e executa os comandos. no momento o usuário postgres não pode acessar o arquivo de entrada, ou mesmo o diretório atual.

Em vez disso, faça desta maneira:

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

Desta forma, o arquivo é aberto pelo seu shell na sua conta antes de o sudo iniciar e pg_restore acessa o conteúdo do arquivo na entrada padrão

    
por 15.06.2018 / 09:32