권한이 거부된 현재 디렉터리로 디렉터리를 변경할 수 없는 이유는 무엇입니까?

권한이 거부된 현재 디렉터리로 디렉터리를 변경할 수 없는 이유는 무엇입니까?

다음 명령을 사용하여 데이터베이스를 복원하려고 합니다.

$ 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

당신은 할 수 있지만 사용자는 postgres할 수 없습니다.

sudo -u postgres user-id를 postgres로 변경하고 명령을 실행합니다. 이제 사용자 postgres는 입력 파일은 물론 현재 디렉터리에도 액세스할 수 없습니다.

대신 다음을 수행하십시오.

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

이렇게 하면 sudo가 시작되기 전에 파일이 사용자 계정의 셸에서 열리고 pg_restore표준 입력의 파일 내용에 액세스됩니다.

답변2

현재 디렉토리와 모든 상위 디렉토리는 사용자가 액세스할 수 있어야 합니다 postgres.권한을 결정할 때 각 디렉터리에 적용되는 소유자/그룹/기타 권한에 대해 실행 가능/검색 가능 비트를 설정하거나 postgresACL을 사용하여 해당 권한을 부여합니다.

권한을 확인하려면 다음을 사용하세요 namei.

namei -l /path/to/directory

바라보다사용자가 특정 파일에 액세스할 수 있는지 확인하는 방법은 무엇입니까?더 알아보기.

관련 정보