"su user"가 "git push"를 사용하면 "치명적: 계산할 수 없음: 권한 거부됨"이 나타납니다.

"su user"가 "git push"를 사용하면 "치명적: 계산할 수 없음: 권한 거부됨"이 나타납니다.

많이있다설정이 질문에 관하여:

rpi5.local2개의 사용자 계정을 가진 호스트( )가 있습니다 : picake.

나는 을 탐색하고 싶었고 "서버/원본" 저장소를 "소유"하기 위한 계정을 git만들었습니다 . cake사용자로서 cake이름 이 하위 폴더인 폴더( ) /home/cake를 만듭니다 . 을 사용하여 이 저장소를 초기화하는 과정을 거쳤습니다 .git-srvprojectAgit init --bare

처음에는 projectA다른 호스트( )에서 서버의 저장소를 "채웠습니다" rpi4b.local. 다음 순서를 사용하여 pushSSH를 통해 호스트의 호출된 폴더에서 저장소로 일부 파일을 편집했습니다.Aprojectraspberrypi4b.localprojectA

$ hostname
rpi4b.local
$ pwd
/home/pi/Aproject
$ git push -u ssh://[email protected]/home/cake/git-srv/projectA.git

이것은 훌륭하게 작동합니다.

사용자 pi로서 clone저장소 projectA/home/pi/XYZ.commit/home/pi/XYZpush

$ hostname
rpi5.local
$ pwd
/home/pi/XYZ
$ git push -u /home/cake/git-srv/projectA.git

이 노력으로 인해 오류가 발생했습니다.

...
error: remote unpack failed: unable to create temporary object directory
To /home/cake/git-srv/projectA.git
 ! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/home/cake/projectA.git'

이 오류에 대해 조사한 후 나는 이것이 오류라는 결론을 내렸습니다.권한pi와 사이에 문제가 있습니다 cake. 나알아낸해결책은 su cake사용자로서 pi그렇게 하고 push다시 시도했습니다. 마지막으로 내 질문은 다음과 같습니다.

$ whoami
cake
$ hostname
rpi5.local
$ pwd
/home/pi/XYZ
$ git push -u /home/cake/git-srv/projectA.git
fatal: failed to stat '/home/pi/motd.git': Permission denied

이 경우에는 무엇을 의미합니까 failed to stat? 간단한 방법이 있나요해결책?

답변1

"셀 수 없음"은 전화를 의미합니다.stat오류를 반환합니다.이를 실행하는 사용자에게 git액세스 권한이 없습니다 . 이는 사용자에게 액세스 권한이 없기 /home/pi/motd.git때문일 수 있습니다 .cake/home/pi

이 경우 가장 간단한 접근 방식은 올바른 권한 집합을 찾는 대신 SSH를 다시 ​​사용하는 것입니다(동일한 시스템에 대해서도 git push ssh://git@localhost:/home/cake/git-srv/projectA.git) git push ssh://cake@localhost:git-srv/projectA.git.

관련 정보