ユーザーが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リポジトリを監視して再起動し、実行可能なwebapp /ファイルが変更されたことを確認することです。git~/repositoriesnginxuwsgi

おすすめ記事