コンテキスト:私のWebサイトのいくつかのロジックと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
~/repositories
nginx
uwsgi