質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

1回答

494閲覧

git自動デプロイのスクリプト設置時のディレクトリパーミッションについて

gano

総合スコア39

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

1クリップ

投稿2018/08/09 02:09

前提・実現したいこと

githubにpushした際にサーバーに自動デプロイされる
フックスクリプトを書いてます。言語はphpです。

スクリプトの中身は、
該当のディレクトリで

$git fetch origin $git reset --hard origin/develop

を実行するシンプルなものです。

発生している問題・エラーメッセージ

問題はディレクトリのパーミッションです。
実行をしても、パーミッションのエラーになります。

error: cannnot open .git/FETCH/HEAD Permission Denied

試したこと

(1) apacheの実行ユーザをグループに追加し、
プロジェクトディレクトリのパーミッションを775 or 2775にしてみる

・フックスクリプトの実行ユーザはapacheに準じてwww-data。

・プロジェクトディレクトリの所有権をadmin:projectaにする

・プロジェクトディレクトリのパーミッションを775にする。
後に2775でも試したがだめでした。

(2) プロジェクトディレクトリのパーミションを777にする

→ フックスクリプト自体は動きましたが、パーミッションがゆるすぎる。

次に試そうとしていること

(1) apacheでsudo実行できるように設定を変える

(2) apacheでwww-data以外のユーザで実行するように変える

最後に

上記の通り、足りない知識で考えているのですが、
最終的にどの方向性が安全なパーミッション設定なのか
わからず悩んでおります。

何かアドバイスをいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

セキュリティーポリシーのバランスは各々違うと思うのでどこら編がベターか難しいですが
個人的には非公開エリアに xxx.php を設置し
sudo設定で Apacheユーザの実行する 非公開エリアの xxx.php だけ 本来のユーザとして実行という内容を書き

visudo

1apache ALL=(本来の実行ユーザ) NOPASSWD: /var/www/bin/xxx.php

公開ようPHPに以下のようなコード書くと比較的安全かなとおもいます。

php

1exec('sudo -u 本来の実行ユーザ " /var/www/bin/xxx.php"', $output); 2var_dump($output);

この時/var/www/bin/xxx.phpはスクリプトとして実行するので
文頭に

php

1#!/bin/php 2<?php //(↑PHPのinstall先は各々違うで調整する)をついかすること 3

とつけることを忘れないでください。

投稿2018/08/09 02:44

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gano

2018/08/09 06:06

ご回答ありがとうございます。 ご回答頂いた手順を元に実施したらうまく行きました。 phpのスクリプト実行がうまくできなかったので、 hook.php(公開)から pull.sh (非公開)を呼び出す形にしました。 hook.phpは apacheユーザでアクセス可。 pull.sh は git reset を行うユーザ(git_hook)を所有者にして パーミッション700にしてあります。 方向性が定まらなかったので、とても助かりました。 この度は本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問