두 사용자가 서버에서 동일한 SVN 작업 사본을 업데이트 할 수 있도록 Linux에서 권한을 설정하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/164597

  •  03-07-2019
  •  | 
  •  

문제

내 서버에는 전복 및 Apache가 설치되어 있으며 Apache 웹 디렉토리는 또한 전복 작업 사본입니다. 그 이유는 간단한 명령이기 때문입니다 svn update /server/staging 최신 소스를 준비 서버에 배포합니다.

Apache Public Web Directory : /server/staging - (이것은 SVN 작업 사본입니다.)

서버에 'Richard'와 'Austin'이있는 두 명의 사용자가 있습니다. 둘 다 '개발자'그룹의 구성원입니다. "Sudo Chown -r Richard : Developers /Server"를 사용하여 /Server 디렉토리에 대한 권한을 Richard : Developers에게 재귀 적으로 설정했습니다.

그런 다음 'Richard'와 'Developers'그룹 모두를 읽고, 쓰고, 실행하도록 권한을 설정했습니다.

그래서 확실히 'Austin'은 이제 svn update /server/staging 명령? 그러나 그가 시도하면 오류가 발생합니다.

svn: Can't open file '/server/staging/.svn/lock': Permission denied

/서버의 소유자를 Austin : Developers로 재귀 적으로 변경하면 명령을 잘 실행할 수 있지만 'Richard'는 할 수 없습니다.

문제를 어떻게 해결합니까? 파일이 커밋 될 때 스테이징 사이트를 자동으로 배포하기 위해 커밋 후 후크를 만들고 싶지만 두 사용자 모두가 작동하는 방법을 볼 수 없습니다. 후크는 다음과 같습니다.

/usr/bin/svn update /server/staging

동일한 사용자 계정을 사용하면 두 사람이 모두 허용되는 솔루션이 아니며 후크 내부의 명령을 '루트'로 실행하는 방법을 알지 못합니다.

모든 도움이 감사합니다!

도움이 되었습니까?

해결책

디렉토리 세트 그룹 ID

디렉토리 항목의 setGid 비트가 설정되면 해당 디렉토리의 파일은 파일을 만든 사용자 그룹이 아닌 그룹 소유권을 디렉토리로 갖습니다.

이 속성은 여러 사용자가 특정 파일에 액세스 해야하는 경우 도움이됩니다. 사용자가 setGID 속성 세트로 디렉토리에서 작업하면 사용자가 디렉토리에서 만든 모든 파일은 그룹의 허가를받습니다. 예를 들어, 관리자는 SPCPRJ라는 그룹을 만들고 사용자 Kathy를 추가하여 SPCPRJ 그룹에 추가 할 수 있습니다. 디렉토리 SPCPRJDIR은 세트 GID 비트 세트 및 Kathy 및 Mark로 생성 될 수 있지만 다른 기본 그룹에서는 디렉토리에서 작동하고 해당 디렉토리의 모든 파일에 전체 액세스 할 수 있지만 여전히 서로의 기본 그룹에서 파일에 액세스 할 수는 없습니다. .

다음 명령은 디렉토리에서 GID 비트를 설정합니다.

chmod g+s spcprjdir

디렉토리 "spcprjdir"디렉토리 목록 :

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir

그룹 권한에서 실행 비트 대신 "S ''는"SPCPRJDIR "디렉토리에 작성된 모든 파일이 그룹"SPCPRJ "에 속합니다.

편집 : 소스 = Linux 파일 및 파일 권한

다른 팁

나는 설정했다 svnserve 이는 간단한 전복 서버입니다 svn:// 규약. 자체 사용자 계정으로 실행되도록이를 설정할 수 있으면 리포지토리가 해당 한 사용자 만 액세스 할 수 있습니다. 이 사용자는 올바른 권한을 실행할 수 있습니다. svn update /server/staging 커밋 후 후크에.

SVN Repo에서는 권한을 설정하는 'conf'디렉토리를 찾을 수 있습니다. 거기에는 3 개의 파일이 있습니다.

  • authz
  • Passwd
  • svnserve.conf

사용자가 사용자 또는 그룹 당 어떤 종류의 ACCE를 가지고 있는지 Authz 파일로 설정합니다. 그룹을 설정하고 SVN 그룹이 Linux 사용자 그룹이 아닌 그룹을 설정합니다 (해시 라인은 주석입니다).

[groups]
# harry_and_sally = harry,sally
projectgroup = richard,austin

# [/foo/bar]
# harry = rw  -- user harry has read/write access
# * =  -- everybody have no access

# [repository:/baz/fuz]
# @harry_and_sally = rw  -- harry_and_sally group members have read/write access
# * = r  -- everyone has read access

[/server/staging]
@projectgroup = rw
* = r

이 예제를 해결하고 구성을 설정하십시오. 'passwd'파일에서 사용자 비밀번호를 설정합니다. 실행하다

cat passwd

설정 방법이있는 댓글 파일을 얻을 수 있습니다.

나는 Webdav를 사용합니다 - 모든 SVN 업데이트와 커밋은 Apache를 통해 처리되며 그런 문제가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top