2012-10-20 6 views
9

root가 git (working) 디렉토리를 업데이트하지 못하도록해야합니다. 추론에는 파일 시스템 소유권 변경 사항을 방지하는 것 외에도 다음이 포함됩니다.root가 git pull을 실행하지 못하게하려면 어떻게해야합니까?

아무런 바보가없는 것 같습니다 프리 페치 후크와 비슷한 일이 있기 전에 가져 오기/병합/당기기를 방지하십시오. 또는 적어도 여기 (또는 매뉴얼 페이지에서) 볼 수있는 것은 없습니다 : http://www.analysisandsolutions.com/code/git-hooks-summary-cheat-sheet.htm

생각 하시겠습니까?

+4

* "그럴 수 있다고 생각하지 않습니다."* - 나는 그렇게 생각하지 않습니다. – poke

+0

왜? 당신이 피하려고하는 실제 문제는 무엇입니까? 저장소에있는 파일이 루트에 의해 소유되지 않도록하려면 루트로 로그인 한 상태에서 끌어 당기지 마십시오. – meagar

+1

@meagar 이미이 작업을 수행 중입니다. 아아, 많은 사람들이 루트/sudo 액세스 권한을 가지고있는 팀 환경에서. 사람들이 루트로 로그인하지 못하도록하고 실수로 변경해서는 안되는 일을 부지불식간에 방지하려고합니다. 때때로 사람들은 오래된 습관을 잊어 버립니다 (우리는 업데이트를 위해 root/sudo privs를 요구했지만 더 이상 사용하지 않습니다). root로 로그인하고해서는 안되는 일을합니다. –

답변

4

난이 해결되지 보았다 그러나 적어도 "완화"망할 놈의 명령에 대한 래퍼 통해서였다 유일한 방법 :

모든 자식 명령은 사용자 ID가 루트가 아닌 경우 진행이 래퍼를 통해 이동합니다.

8

/root/.bashrc을 변경하여 PATH의 시작 부분에 새 디렉토리를 추가하십시오. 거기에 이라는 쉘 스크립트를 추가하여 $1을 몇 가지 읽기 전용 명령 (show/status/log/rev-list 등) 중 하나로 테스트하고 명령이 받아 들여지면 /usr/bin/git "[email protected]"을 호출하십시오. 이렇게하면 팀원 중 누군가가 우발적으로 git pull을 루트로 실행하지 못하게됩니다. 고의적으로 그 일을하는 것이 걱정된다면, 더 큰 문제가 생길 것입니다 ...

+5

더 나은 것은''root로 자식을 실행하지 마라. '와 같은 오류 메시지 만 출력하는 것입니다. –

+2

내 경우에는 무언가를 할 권한이 없을 때마다 'sudo su'를 계속하는 내 부서의 관리자입니다. 그렇다면 그는 git pull을하고 내 파일들을 망칩니다. 나는 단지 "git 명령을 루트로 실행하지 마십시오! 내 파일 사용 권한을 망칠뿐입니다!"라고 말하는 자식 명령에 대한 오류 메시지를 원합니다. – Mnebuerquo