사용자가 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리포지토리를 모니터링하여 재부팅하고 실행 가능한 webapp/파일이 변경되었는지 확인하는 것입니다.git~/repositoriesnginxuwsgi

관련 정보