ssh経由で/var/www/へのユーザーアクセスを許可する

ssh経由で/var/www/へのユーザーアクセスを許可する

コンテキスト: 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下のリポジトリを監視して、実行可能な Web アプリケーション/ファイルが変更された場合に とを再起動できるようにすることです。git~/repositoriesnginxuwsgi

関連情報