2014-01-12 4 views
0

무료 EC2 AWS 서버에 SVN 인스턴스가 설치되어 있습니다. 간단히 말해서 : 저는 램프를 사용하고 있습니다.게시 웹 사이트에 SVN 후 커밋 후크?

this article에서 읽은 내용을 사용하고 설명에서 언급 한 "TTY가 필요합니다"오류가 발생했습니다. second resource을 따라 가며 오류 메시지를 지우지 만 스크립트를 실행하지 않는 것 같습니다. 그러나 수동으로 스크립트를 실행하면 작동합니다.

어떤 실마리가 있습니까?

#!/bin/bash 
sudo /usr/local/bin/svn-post-commit-update-mysite 1>&2 

에 :

#!/bin/bash 
su –session-command=”/usr/local/bin/svn-post-commit-update-mysite 1>&2″ dynamic & 

답변

1

첫 번째 문제 :

후크 내부의 $ PATH 변수 값에 의존 할 수 없습니다. 즉, 모든 실행 파일의 전체 경로를 지정해야합니다.

특히 "su"는 대부분의 배포판에서 "/ bin/sh"에있는 프로그램입니다. 확인하려면 다음을 입력

type su

다음 가능한 문제 :

은 서브 버전 서버가 루트로 실행되고

? su은 다른 사용자가 실행할 경우 암호를 묻는 메시지를 표시하고 대화식으로 실행되지 않는 경우 실패합니다 - 사용자가 sudoers 파일에 있어도 실패합니다!

아파치 + DAV를 사용하는 경우 이는 심각한 보안 문제인 아파치 서비스가 루트 (www-data 대신)로 실행되어야 함을 의미합니다.

모든 파일을 동일한 사용자 (예 : www-data)가 소유하고있는 경우 su 또는 sudo을 사용할 필요가 없습니다. 당신은

sudo chown -R www-data:www-data /var/www/<my-project>

처럼 뭔가 사이트 파일의 소유권을 변경 그리고 후크와 모두에서 sudosu을 제거 할 수 있습니다 SVN - 후 커밋 갱신 내 사이트 파일.

+0

파일에서 소유권을 변경하고 sudo/su 명령을 삭제하면 고맙습니다. – Bing

0

내가 내/SVN/저장소/후크의 내용을 변경 한 TTY 오류를 수정하기 위해 두 번째 자원을 따라하면 /에서 스크립트를 후 커밋 내 최선의 추측은 스크립트의 어떤 부분이 PATH 환경 변수에 의존한다는 것입니다. Subversion은 보안상의 이유로 빈 환경에서 후크를 실행합니다. 따라서 쉘 스크립트에서 환경을 설정하거나 절대 경로를 사용해야합니다.

Subversion book entry on implementing hook scripts을 읽을 수 있습니다. 제가 언급 한 특별한 문제는 정보 블록에서 설명됩니다.