바이너리 파일을 실행하는 동안 권한이 거부되었습니다.

바이너리 파일을 실행하는 동안 권한이 거부되었습니다.

나는 이것을 사용했다지시하다내 OS X 컴퓨터에 mongodb를 설치합니다. 하지만 루트 소유의 파일을 만들지 않고 로컬 사용자(markdsievers)를 사용하여 및 에 설치 /usr/local/mongodb했습니다 usr/local/mongodb_data. 모든 파일과 하위 디렉터리를 chmoded하고 chown했습니다 rwxrwxr-x markdsievers staff.

사용자로서 markdsievers다음 명령을 사용하면 오류 없이 데이터베이스를 시작할 수 있습니다.

$ sudo mongod --dbpath=/usr/local/mongodb_data

그러나 다음과 같이 시작하면:

$ mongod --dbpath=/usr/local/mongodb_data/

나는 얻다:

Unable to create / open lock file for lockfilepath: /usr/local/mongodb_data/mongod.lock errno:13 Permission denied

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

첫째, 여담: /usr/local/mongodb_datamongo 데이터를 저장하는 것이 약간 이상해 보입니다. 대부분의 배후 저장소는 에 있거나 /var/자체 설치 애플리케이션의 경우 /var/local/. 를 참고 hier(7)하시거나파일 시스템 계층 표준자세한 내용은. (FHS의 이름은 잘못되었습니다. 규정적이지 않고 설명적이기 때문입니다.아니요표준. 하지만 읽어 볼 가치가 있습니다. )

귀하가 다음을 수행했기 때문에 귀하의 mongodb.lock파일은 귀하의 소유입니다 .root

sudo mongod --dbpath=/usr/local/mongodb_data

sudo(8)다양한 방법으로 프로그램 실행유효 사용자 ID( 자세한 내용은 seteuid(2)참조 setreuid(2)). 다른 사용자를 지정할 수 있는 옵션이 없으므로 이 계정 -usudo(8)기본적으로 이 root계정으로 설정됩니다. 따라서 잠금 파일은 root소유자 및 그룹으로 생성됩니다. (어떤 변화가 있는지 비교해 보세요 sudo id. id)

그런데 이상한 점은 데이터베이스를 중지할 때 잠금 파일이 삭제되어 있어야 한다는 것입니다 mongod. 잠긴 파일을 제거할 뿐만 아니라 데이터가 디스크에 올바르게 저장되었는지 확인하기 위해 제대로 중지했는지 확인하십시오.

답변2

어떤 것을 만들어ls -l /usr/local/mongodb_data/mongod.lock

처음에 "root" 사용자로 실행했으므로 파일이 이미 존재하고 루트가 소유하고 있을 것입니다. 그것을 제거하면 "markdsievers" 사용자로 작동할 것이라고 확신합니다.

관련 정보