SSH를 통해 /var/www/에 대한 사용자 액세스를 허용합니다.

SSH를 통해 /var/www/에 대한 사용자 액세스를 허용합니다.

컨텍스트: 내 웹 사이트의 일부 논리와 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~/repositoriesnginxuwsgi

관련 정보