programing

git : 권한 문제와 관련된 푸시 할 수 없음 (패커 풀기 오류)

firstcheck 2021. 1. 15. 08:17
반응형

git : 권한 문제와 관련된 푸시 할 수 없음 (패커 풀기 오류)


git을 밀어 넣으려고 할 때이 문제가 있습니다.

error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://<repo url>/<repo dir>
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://<repo url>/<repo dir>'

나는 산발적으로 전에 이것을 가지고 있었고 우리는 항상 각 사용자가 저장소에 sshing하고 그 안에있는 모든 파일에 대한 그룹 권한을 설정하여 해결해야했습니다.

chmod -R g+w *

이것은 결코 만족스러운 해결책이 아니었고 이제는 남자 중 한 명이 자리를 비 웠고 아무도 그의 repo 사용자의 암호를 모르기 때문에 우리를 엉망으로 만들었습니다. 그래서 제대로 해결하려고 노력하고 있습니다.

이 오류는 누군가가 다른 사용자가 소유 한 저장소 디렉토리를 변경하는 변경 사항을 푸시하려고 할 때 발생하는 것 같습니다 (따라서 위의 그룹 쓰기 옵션 설정). 나는 이것에 대해 약간의 인터넷 검색을했고 논의중인 몇 가지 해결책을 찾았습니다 (둘 다 저에게 효과적이지 않았습니다)

1) 저장소가 공유되는 그룹이 각 사용자의 기본 그룹인지 확인합니다 (이미 그렇다고 생각합니다. 각 사용자는 하나의 그룹 만 있으므로 기본 그룹이어야합니다.)

2) git repo core.sharedRepository 설정, 여기에 자세히 설명되어 있습니다. Git : 한 컴퓨터에서 푸시 할 수 없습니다. 변경했지만 아무런 차이가 없습니다. 실제로 변경 사항을 적용하려면 구성을 다시로드해야합니까?

내 repo 구성은 atm과 같습니다.

[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
        sharedRepository = all
[receive]
        denyNonFastForwards = True

조언이나 제안에 감사드립니다! 최대


이를 수행하는 더 간단한 방법은 서버의 '허브'저장소에 푸시 할 때마다 chmod 명령을 실행하는 수신 후 스크립트를 추가하는 것입니다. 서버의 git 폴더 내에서 hooks / post-receive에 다음 줄을 추가합니다.

chmod -Rf u+w /path/to/git/repo/objects

2 주 동안이 오류가 발생했으며 대부분의 솔루션은 'chmod -R'을 대답으로 언급했지만, 불행히도 저에게는 내 자식 저장소 (로컬 / 원격 / 팀과 공유)가 모두 Windows OS에 있었지만 chmod -Rv는 모든 파일이 'rwxrwxrwx'로 변경되었음을 보여 주었고 후속 'ls -l'은 여전히 ​​모든 파일을 'rwxr-xr-x'로 표시했으며 오류가 반복되었습니다. 결국 Ariejan de Vroom 이이 솔루션보았습니다 . 그것은 효과가 있었고 우리는 모두 다시 당기고 밀 수있었습니다.

로컬 (푸시하는 데 문제가있는 로컬) 및 원격 저장소 모두에서 다음 명령을 실행하십시오.

$ git fsck
$ git prune
$ git repack
$ git fsck

참고로 Windows의 기본 파일 사용 권한 / ACL을 사용해 보았고 문제가있는 사용자를 관리자로 승격시키는 데 의지했지만 그 어느 것도 도움이되지 않았습니다. 환경이 중요한지 확실하지 않지만 비슷한 설정 (문제 팀 구성원 및 원격 (Windows Server 2008 R2 Standard), 내 로컬 (Windows 7 VM))을 가진 사람에게 도움이 될 수 있습니다.


권한 오류입니다. 나에게 가장 적절하고 안전한 방법은 사용자를 리포지토리 인 보조 그룹추가하는 것이 었습니다 . 다음이 소유 (또는 그 반대) :

groupadd git
chgrp -R git .git
chgrp -R git ./
usermod -G -a git $(whoami)

다른 사람이이 문제를 겪고있는 경우 : 이는 사용자가 푸시하려는 저장소의 쓰기 권한이 잘못되었음을 의미합니다. 이동하고 chmod -R 그것을 사용하여 git 서버에 액세스하는 사용자가 쓰기 권한을 갖도록합니다.

http://blog.shamess.info/2011/05/06/remote-rejected-na-unpacker-error/

그냥 작동합니다.


나는 이런 종류의 것들을 관리하기 위해 gitosis를 사용합니다. Gitosis에는 모든 저장소를 소유하는 단일 사용자 (일반적으로 "git"라고 함)가 있으며 각 저장소에 대한 공개 키 기반 액세스 제어를 사용합니다. 설정에 적합하지 않을 수 있지만 확인해 볼 가치가있을 것입니다 (말장난 의도 없음).


나 에게이 오류는 리모컨의 공간이 부족할 때 발생했습니다.

나머지 오류 메시지를 읽어야했습니다.

error: file write error (No space left on device)
fatal: unable to write sha1 file
error: unpack failed: unpack-objects abnormal exit

AWS 인스턴스에서 git 리포지토리를 사용한 권한 오류의 경우 그룹을 생성하고 리포지토리 폴더에 재귀 적으로 할당 (-R)하여 문제를 성공적으로 해결하고이 그룹에 서면 권한을 부여한 다음 기본 aws 인스턴스 사용자를 할당했습니다. (ec2-user 또는 ubuntu)를이 그룹에 추가합니다.

1. goup 이름 share_group 또는 다른 것을 만듭니다.

     sudo groupadd share_group

2. 저장소 폴더를 'root'그룹에서 'share_group'으로 변경합니다.

     sudo chgrp -R share_group /path/to/your/repository

3. share_group에 쓰기 권한 추가

     sudo chmod -R g+w /path/to/your/repository

4. 마지막 단계는 현재 사용자-로그인 할 때 기본 사용자 (기본적으로 ec2는 'ec2-user', ubuntu 인스턴스의 사용자는 aws의 ubuntu에서 'ubuntu')를 share_group에 할당하는 것입니다. AWS에서 ubuntu insance를 사용하고 있으므로 기본 사용자는 ubuntu입니다.

     sudo usermod -a -G share_group ubuntu

그건 그렇고, 폴더 또는 파일의 소유권을 보려면 다음을 입력하십시오.

    ls -l  /path/to/your/repository

'

산출:

    drwxr-x--x  2 root shared_group
(설명 참조 : https://wiki.archlinux.org/index.php/File_permissions_and_attributes ).

3 단계를 마치면

    drwx--x--x  2 root root

로 변경

    drwxr-x--x  2 root share_group 

이 경우 보안상의 이유로 사용자 'ubuntu'를 루트 그룹에 할당하지 않았습니다. 4 단계에 따라 기본 사용자를 루트에 할당 할 수 있습니다 (처음 3 단계


다른 방법으로 다음과 같이 솔루션을 시도했습니다.

    chmod -Rf u+w /path/to/git/repo/objects
그것은 나를 위해 작동하지 않았고, 내 저장소 폴더가 Ubuntu 사용자가 아닌 루트 사용자에 속하는 이유라고 생각하며 기본적으로 'git'은 기본 사용자 (ec2-user 또는 Ubuntu 사용자를 사용합니다. 시도 할 수 있습니다. 사용자를 변경하고 테스트합니다.

마지막으로 아래 코드는 확실히 저에게 효과적이지만 777은 보안에 좋지 않습니다.

    sudo chmod -R 777 /path/to/your/repo

내 원격 gitolite-admin이 손상되었거나 문제가 있다고 생각하면서 이것에도 문제가있었습니다.

내 설정은 gitolite가있는 원격 Ubuntu 10 서버가있는 Mac OS X (10.6.6) 노트북입니다.

문제는 gitolite-admin의 로컬 체크 아웃에 있음이 밝혀졌습니다 .

"압축 해제 실패"오류에도 불구하고 문제가 로컬에 있음이 밝혀졌습니다.

나는 이것을 gitolite-admin2로 다시 확인하고 변경하고 밀어서 이것을 알아 냈습니다.

짜잔! 작동했습니다!


This problem can also occur after Ubuntu upgrades that require a reboot.

If the file /var/run/reboot-required exists, do or schedule a restart.


For what it worth, I had the same problem over my own VPS and it was caused by my low hard disk space on VPS. Confirmed by df -h command and after i cleaned up my VPS' hard disk; the problem was gone.

Cheers.


I was getting similar error and please see below how I resolved it.

My directory structure: /opt/git/project.git and git user is git

$ cd /opt/git/project.git
$ sudo chown -R git:git .

chown with -R option recursively changes the ownership and and group (since i typed git:git in above command) of the current directory. chown -R is necessary since git changes many files inside your git directory when you push to the repository.


Where I work we have been using this method on all of our repositories for a few years without any problems (except when we create a new repository and forget to set it up this way):

  1. Set 'sharedRepository = true' in the config file's '[core]' section.
  2. Change the group id of the repository to a group shared by all users who are allowed to push to it:

    chgrp -R shared_group /git/our_repos
    chmod -R g+w /git/our_repos
    
  3. Set the setgid bit on all directories in the repository so that new files/directories keep the same group:

    find /git/our_repos -type d -exec chmod g+s {} +
    
  4. Add this line to the pre-receive hook in the repository to ensure new file permissions allow group read/write:

    umask 007
    

For me its a permissions issue:

On the git server run this command on the repo directory

sudo chmod -R 777 theDirectory/

ReferenceURL : https://stackoverflow.com/questions/4025708/git-cant-push-unpacker-error-related-to-permission-issues

반응형