많이있다설정이 질문에 관하여:
rpi5.local
2개의 사용자 계정을 가진 호스트( )가 있습니다 : pi
및 cake
.
나는 을 탐색하고 싶었고 "서버/원본" 저장소를 "소유"하기 위한 계정을 git
만들었습니다 . cake
사용자로서 cake
이름 이 하위 폴더인 폴더( ) /home/cake
를 만듭니다 . 을 사용하여 이 저장소를 초기화하는 과정을 거쳤습니다 .git-srv
projectA
git init --bare
처음에는 projectA
다른 호스트( )에서 서버의 저장소를 "채웠습니다" rpi4b.local
. 다음 순서를 사용하여 push
SSH를 통해 호스트의 호출된 폴더에서 저장소로 일부 파일을 편집했습니다.Aproject
raspberrypi4b.local
projectA
$ 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/XYZ
push
$ 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
.