내가 할 때마다 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)
해결 방법이 있습니까?
웹 서버에서 쓸 수있는 일부 파일 / 디렉토리를 만들고 싶습니다.
답변
실행중인 사용자의 기본 그룹이로 설정되어있는 것 같습니다 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에서 그룹 권한을 상속하기 위해 새 파일 가져 오기) .