Git object permission error
목적
Git object permission 에러를 겪고 해결 방법과 에러 메시지를 기술해 추후 같은 에러 시 빠른 대응을 할 수 있도록 하기 위해 이 문서를 작성한다.
에러 발생 환경
에러가 발생한 환경은 다음과 같다.
- OS: Ubuntu 16.04
- 사용자 계정의 Git repository
에러 메시지
에러 메시지는 다음과 같다. (비슷한 유형을 같이 명시한다)
- 저장소 데이터베이스 .git/objects 에 객체를 추가 할 수있는 권한이 충분하지 않습니다
- nsufficient permission for adding an object to repository database
- error: unable to write file ./objects/foo/bar: Permission denied.
- git commit error: insufficient permission for adding an object to repository database .git/objects error:
에러 원인과 해결 방법
에러 원인
에러 원인은 다음과 같다.
- Root 계정 혹은 다른 권한을 가진 계정으로 Git repository에서 명령을 실행할 경우 .git/object 안에 있는 폴더에 대한 권한이 변경된다.
- 따라서, 기존 계정 권한에서 다른 계정(그룹)으로 권한이 변경되었으므로 해당 권한이 없는 계정으로 Git 명령어(commit, push)를 할 경우 오류가 발생하게 된다. (object 관련 어떤 작업을 수행할 때 발생한다.)
해결 방법
해결 방법은 다음과 같다.
# Git repository root directory에서 아래의 명령을 수행한다.
$ cd .git/object
# 권한을 확인한다.
$ ls -al
# 현재 Directory의 모든 directory와 파일들의 권한을 변경한다. (yourname:yourgroup은 다른 디렉토리의 기존 계정의 권한을 확인하고 동일하게 한다.)
$ sudo chown -R yourname:yourgroup *
이러한 문제를 방지하기 위해 리눅스에서는 계정에 따라 권한이 다르므로 이 부분에 유의해 명령어를 입력하도록 한다. 혹은 Sudo 명령어 입력할때는 해당 명령어를 수행하기 위해 꼭 관리자 권한이 필요한 지 고민해보고 유의해 사용하도록 한다.
참고 문서
참고 문서는 다음과 같다.
- https://stackoverflow.com/questions/6448242/git-push-error-insufficient-permission-for-adding-an-object-to-repository-datab
댓글남기기