컨텍스트: 내 웹 사이트의 일부 논리와 CSS foo가 포함된 특정 저장소에 대한 gitolite3 후크를 만들고 있습니다.
그래서 본질적으로 일어나는 일은
아래 내용은 /var/www/nginx/
다음과 같습니다.
drwxrwxr-x. nginx git system_u:object_r:httpd_sys_content_t:s0 foo
.git
특별하다:
drwxrwxr-x. git git system_u:object_r:httpd_sys_content_t:s0 .git
모든 하위 디렉터리에 적절한 액세스 권한이 있는지 확인하기 위해 다음을 수행했습니다.
chown nginx:git -Rf ./webfoo
chmod g+rw -Rf ./webfoo
chown git:git -Rf ./webfoo/.git
[보너스이므로 건너뛰셔도 됩니다.]
gitolite3 후크
#!/bin/bash
cd /var/www/nginx/webfoo || exit
unset GIT_DIR
echo "where: $(pwd)"
git pull -f origin deploy-me-branch
remote: where: /var/www/nginx/webfoo
remote: From /home/gitolite/repositories/webfoo
remote: c092ee2..07274a6 master -> origin/master
remote: error: unable to unlink old '.gitignore' (Permission denied)
remote: error: unable to unlink old 'templates/fancypost.html' (Permission denied)
remote: error: unable to unlink old 'templates/layout.html' (Permission denied)
/var/log/audit/audit.log
액세스 거부가 포함되어 있지 않습니다.
업데이트:로컬 로 로그인해도 git
작동하지 않습니다. 그러니까 이건 아마도SELinux/파일 보안 컨텍스트와 관련 없음.
예상대로 작동하지 않는 이유는 무엇입니까?
답변1
작동하지 않은 몇 가지 이유는 다음과 같습니다.
- 사용자
git
의 회원이어야 한다그룹git
- 다른 사용자로 풀/리베이스하지 마십시오.
.git/*
소유권이 변경될 수 있습니다. 특히 다음 사용자로 로그인한 경우에는 더욱 그렇습니다.root
보다 우아한 해결책은 을 사용하여 (사용자로 ) monit
저장소를 모니터링하여 다시 시작할 수도 있고 실행 가능한 웹앱/파일이 변경되었는지 확인하는 것입니다.git
~/repositories
nginx
uwsgi