2012-10-15 2 views
0

macports와 함께 postgresql90을 설치하려고합니다.PosgreSQL initdb 권한이 거부되었지만 소유자가 postgres입니다.

sudo su postgres -c '/opt/local/lib/postgresql90/bin/initdb -D /opt/local/var/db/postgresql90/defaultdb' 

반환이 오류 :

sh: /opt/local/lib/postgresql90/bin/initdb: Permission denied 

그래서 "좋아, 잘 어쩌면 initdb에에 대한 사용 권한이 파열된다", 생각하고를 initdb를 실행하려고 할 때 나는이 이상한 오류가 계속.

sudo ls -l /opt/local/lib/postgresql90/bin/initdb 

을 다시 얻을 : 그럼 난 할

-rwxr-xr-x 1 postgres postgres 66952 25 Sep 10:06 /opt/local/lib/postgresql90/bin/initdb 

그래서 내가 initdb에의 오른쪽 권한이 있습니다. 나는 또한 defaultdb를 검사하여 권한을 확인했으며 소유자는 postgres라고 말했습니다 ...

+0

디렉토리 트리 아래쪽으로 모든 권한이 있는지 확인하십시오. (/ opt,/opt/local,/opt/local/lib 등) – Doon

+0

그래, 괜찮은 것 같아. – james2doyle

+0

'strace'ing을 시도해보십시오. initdb 명령을 실행하고 EPERM 오류가있는 마지막 시스템 호출이 무엇인지 확인하십시오. – dbenhur

답변

1

/opt/local/var/db/postgresql90/defaultdb을 확인하십시오. 존재하지 않거나 상위 디렉토리의 권한이 올바르지 않습니다. 다음 실행

sudo chown postgres:postgres /opt/local/var/db/postgresql90 
+0

괜찮습니다. defaultdb가 있으며 사용 권한이 올바른지 확인하십시오. – james2doyle

+0

은 defaultdb 파일 또는 디렉토리입니까? – Doon

+0

디렉토리입니다. 그것은 .conf 파일과 pg_ * 파일을 가지고 있습니다. – james2doyle

0

그럴듯한 설명은 sudoers 파일 자체가 다른 프로그램을 실행할 수 없습니다 프로그램 sudo로 시작하는 방식으로 NOEXEC로 구성되어 있다는 것입니다. 허가가 거부되었습니다. 정확히이 경우 얻을 것입니다.

그렇지 않으면,속성으로 마운트 될 파티션에 postgres가 설치되어 있는지 확인해야합니다.

+0

sudo su 명령의 특성입니까? 또한/etc/sudoers를 검사했는데 그것은 비어 있습니다. Postgres 사용자에 대한 별칭을 추가해야합니까? – james2doyle

+0

나는 MacOS에 대해 많이 모른다. 그러나 빈/etc/sudoers 파일은 나에게 의심 스럽다. 내 OSX 10.8의/etc/sudoers는 45 행을 가지고 있는데, 특히 다음과 같다.'% admin ALL = (ALL) ALL'. –

+0

다른 모든 기능이 정상적으로 작동합니다. 나는 visudo로/etc/sudoers 파일의 유효성을 검사하고 모든 것이 유효하다고 말했다. – james2doyle