git이 풀에서 권한과 소유권을 변경하지 못하게하는 방법이 있습니까?


11

내가 할 때마다 git pull또는 git reset, git재설정은 내가 만든 권한과 소유권을 변경합니다. 직접 참조하십시오 :

#!/usr/bin/env bash
rm -rf 1 2

mkdir 1
cd 1
git init
echo 1 > 1 && git add 1 && git ci -m 1

git clone . ../2
cd $_
chmod 0640 1
chgrp http 1

cd ../1
echo 12 > 1 && git ci -am 2

cd ../2
stat 1
git pull
stat 1

출력 :

$ ./1.sh 2>/dev/null | grep -F 'Access: ('
Access: (0640/-rw-r-----)  Uid: ( 1000/    yuri)   Gid: (   33/    http)
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    yuri)   Gid: ( 1000/    yuri)

해결 방법이 있습니까?

웹 서버에서 쓸 수있는 일부 파일 / 디렉토리를 만들고 싶습니다.

답변:


4

실행중인 사용자의 기본 그룹이로 설정되어있는 것 같습니다 yuri. 다음과 같이 확인할 수 있습니다.

$ id -a
uid=1000(saml) gid=1000(saml) groups=1000(saml),10(wheel),989(wireshark)

계정의 UID는 다음과 같습니다. uid=1000(saml)반면 기본 그룹은 git=1000(saml)2 차 그룹입니다.

참고 : git clone이 특정 소유권을 가지도록하려면 2 가지 이상의 옵션이 있습니다.

옵션 1

다음과 같이 권한이있는 상위 디렉토리를 설정하십시오.

$ mkdir topdir
$ chgrp http topdir
$ chmod g+s topdir

$ cd topdir
$ git clone ....

이로 인해 디렉토리 topdir에 하위 디렉토리 를 강제로 적용하여 그룹을 http적용했습니다. 이 작업은 크게 작동하지만 문제가 발생할 수 있습니다. 파일을이 git clone 작업 공간으로 이동하면 해당 파일에 위에서 변경 한 사항으로 해당 그룹이 적용되지 않기 때문입니다.

옵션 # 2

작업하기 전에 기본 그룹을 다음 http과 같이 변경하십시오 .

$ newgrp http
$ git clone ...

이 방법을 사용하면 생성 된 새 파일 이 http그룹의 기본 기본 그룹 대신에 그룹을 설정하게 yuri되지만 newgrp이 작업 공간에서 작업하기 전에 작업 을 수행 해야하는 경우에만 작동 합니다.

다른 옵션

이들 중 어느 것도 허용되지 않는 것 같으면 git workspace 디렉토리 대신 ACL을 사용해보십시오. 이에 대해서는이 사이트의 여러 Q & A에서 논의됩니다 (예 : Linux에서 그룹 권한을 상속하기 위해 새 파일 가져 오기) .


먼저, 당신은 의미해야합니다 newgrp. 그렇다면 현재 쉘의 그룹 만 변경합니까? 마지막으로 요점은 특정 파일 / 디렉토리 만 웹 서버에서 쓸 수 있도록하는 것입니다. 어쨌든 수동으로 수정하거나 git후크를 설정해야합니다 .
x-yuri

@ x-yuri-네, 죄송합니다. 여기 5시입니다. 8-) 자러 가려고합니다. 예, 이것은 현재 쉘에서만 유지되므로 해당 접근법의 단점입니다. 웹 서버에 대한 특정 액세스 만하려는 경우 까다로울 수 있으며 ACL을 사용하고 싶을 것입니다. 또한 당신은이 세부 사항들을 Q에 추가하고 싶을 수도 있습니다. 그것이 의도 한 목적이 무엇인지 확실하지 않기 때문에, 나는 비 특정 용어로만 대답 할 수 있습니다.
slm

1
@ x-yuri-다음과 같은 업데이트 후 후크가 더 적합 할 수 있습니다. stackoverflow.com/questions/9613545/…
slm

1
@ X-유리 - 권한을 제어 후크 아래에있는 자식 책에서 설명 : git-scm.com/book/en/Customizing-Git-Git-Hooks
SLM

실제로 현재 쉘에서만 그룹을 변경하는 것이 어떻게 단점인지 정직하지 않습니다. 다른 앱의 작동 방식을 변경하지 않는 것에 대해 걱정했습니다.
x-yuri

2

내가 사용하는 솔루션은 유지할 권한이있는 사용자로 명령실행하는 것입니다.

sudo -u user command

이렇게하면 권한이 변경되지 않습니다. 파일 권한을 웹 서버 사용자로 설정 한 상태로 VPS에서 git 리포지토리를 업데이트 할 때 사용합니다.

여기 에서도 같은 질문을 참조 하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.