ローカルマシンから変更をプッシュすると、受信後フックが一部のコマンドを実行できません

btlm

post-receiveフックに問題があります。フックのタスクは、受信したコードをWebサーバーディレクトリにデプロイし、最新のコミットメッセージのみをPHPスクリプトに送信することです。フックのコード(サーバーマシンのベアリポジトリ内):

#!/bin/sh

# prod dir
TARGET="/var/www/html/repo"

# temp dir
TEMP="/srv/tmp/repo"

# git repo
REPO="/srv/git/repo.git"

mkdir -p $TEMP
git --work-tree=$TEMP --git-dir=$REPO checkout -f

cd $TEMP

cd /
rm -rf $TARGET
mv $TEMP $TARGET

cd $REPO
read oldrev newrev _branch
tail=$(git log -1 --pretty=format:'%s%b' $newrev)
curl -G 'http://example.com/phpscript.php' -d "msg=$tail"

ローカルネットワークには2台のマシンがあります。

  • Ubuntu 18.04LTSを搭載した「サーバー」マシン。
  • ローカルマシンWindows10、「git-bash」を使用してリポジトリを管理

「サーバー」マシン(Ubuntu)

/srv/git/repo.gitディレクトリに構成されたベアリポジトリがあり、そのリポジトリはに複製され/home/bob/projects/repoます。グループgitusers/srv/gitディレクトリを所有し、rwx権限を持っています。グループのbobメンバーでもありgitusersます。

このマシンでローカルリポジトリから変更をプッシュしますが、問題はありません。フックが実行され、プッシュされたコードがWebサーバーにデプロイされ、phpスクリプトが呼び出され、最新のコミットメッセージがDBに追加されます。結構です。

問題は、Windowsを搭載したローカルマシンにあります。

ローカルマシン(Windows)

repoSSH経由で複製されたものがあります。bob誰がメンバーでgitusersあり、権限を持っているかをSSHで接続しましbobメンバーではなかったという事実gitusers、SSH接続に関する私の以前の問題でした)。また、リモートはとして追加されssh://bob@servermachineip/srv/git/repo.gitます。

そしてこの瞬間、私は次のエラーを受け取ります(サンプルの変更をプッシュしました):

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 474 bytes | 474.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: mkdir: cannot create directory '/srv/tmp/repo': Permission denied
remote: fatal: this operation must be run in a work tree
remote: hooks/post-receive: 15: cd: can't cd to /srv/tmp/repo
remote: rm: cannot remove '/var/www/html/repo/index.html': Permission denied
remote: mv: cannot stat '/srv/tmp/repo': No such file or directory
remote:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
remote:                                  Dload  Upload   Total   Spent    Left  Speed
remote: 100    19    0    19    0     0    106      0 --:--:-- --:--:-- --:--:--   106
remote: Logged to remote db
To ssh://servermachineip/srv/git/repo.git
   24d56db..ab886dd  master -> master

それで、フックは、sshを介してリモートで実行されている間、何らかの理由でコマンドを実行できないようですか?この問題を解決する方法がわかりません。答えを2日間検索し、設定権限で試しましたが、私は間違いなくいくつかの詳細を見逃していると思います:/

また、hookはmkdir、rm、moveなどのLinuxコマンドを実行できませんが、curlコマンドを実行し、最新のコミットメッセージがDBに正しく送信されます:O

与えられた問題をどのように解決できますか?

前もって感謝します

編集:

/srv 権限

total 8
drwxr-xr-x 4 root users 4096 lis 21 23:33 git
drwxr-xr-x 2 root users 4096 lis 22 23:31 tmp

/srv/tmp 存在するが空

total 0

/var/www/html/repo 権限

total 1780
drwxr-xr-x 5 root root    4096 lis 22 23:31 assets
-rw-r--r-- 1 root root     702 lis 22 23:31 index.html
drwxr-xr-x 3 root root    4096 lis 22 23:31 js
bk2204

ユーザーにbobはディレクトリを作成する権限がなく/srv/tmp、おそらく/var/www/html/repo。のファイルを削除する権限もありません

ディレクトリを作成したり、ディレクトリ内のファイルを削除したりするには、ユーザーはディレクトリへの書き込み権限を持っている必要があります。この場合、rootディレクトリへの書き込み権限/srv/tmpしかないため、ディレクトリを作成する権限しかありませんrootbobusersグループの一部であると仮定するとchmod g+w /srv/tmpディレクトリを作成するためにそれらすべてを実行できますまたは、/tmpすべてのユーザーがそこに書き込む権限を持っているため、この目的で使用することもできます

の場合/var/www/html/repo、を実行してchgrp -R users /var/www/html/repoから、各ディレクトリに書き込み権限を再帰的に設定する必要があります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マングースプリフックfindOneAndUpdateは、別のコレクションから取得する一部のフィールドを変更します

分類Dev

ローカルシステムからリモートシステムのRedisフラッシュコマンドを実行できますか?

分類Dev

Herokuのデプロイに失敗しました:[リモート拒否]マスター->マスター(受信前のフックが拒否されました):エラー:一部の参照をプッシュできませんでした

分類Dev

Gitプッシュコマンドを実行した後、gitcommitでファイルを変更する

分類Dev

docker-machinesshがローカルマシンでコマンドの一部を実行しようとしています

分類Dev

角度シードgithubプロジェクトからnodejsコマンドラインでhttp-serverを実行することができません

分類Dev

gitを介してデプロイプロジェクトでnpmを実行するにはどうすればよいですか?(フック/受信後:npm:コマンドが見つかりません)

分類Dev

別のスレッドのアプリケーションがクラッシュすると、コードの実行を続行できません

分類Dev

Inno Setupが一部のマシンで実行可能ファイルのインストールをスキップするのはなぜですか?

分類Dev

バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

分類Dev

バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

分類Dev

Windowsコマンドライン:パスの一部として変数を使用してコマンドを実行することはできません

分類Dev

スクリプトが実行可能ファイルに設定されているにもかかわらず、コマンドラインからスクリプトを実行できません-「コマンドが見つかりません」というメッセージが表示されます

分類Dev

PHP execからシェルコマンドを実行できませんが、シェルでユーザーとして実行できますか?

分類Dev

Pythonマルチプロセッシングで開始メソッドを「フォーク」から「スポーン」に変更しても、ジョブを実行できなくなるのはなぜですか?

分類Dev

Pythonマルチプロセッシング:マルチプロセッシングを使用すると、一部のクラス属性が失われます

分類Dev

bitbucketパイプラインプッシュ後にデプロイメントサーバーで一連のコマンドを実行しますか?

分類Dev

アプリで受信したデータをBLEデバイスからプッシュするためにIOSでバックグラウンドAPI呼び出しを定期的に行うことができません

分類Dev

SignalRクライアント側は、ダッシュボードクライアントからの呼び出しを受信しますが、eコマースクライアントからは受信しません

分類Dev

システムコマンドから実行すると、Perlスクリプトがインクルードファイルを見つけることができません

分類Dev

14.04のグラフィカルメニューからシャットダウンすると、どのコマンドが実行されますか?

分類Dev

実行コマンド(つまりF5)の一部としてバッチファイルを実行することは可能ですか?

分類Dev

クラスタ上の共有ファイルシステムでは、他のマシンでは成功しているものの、一部のマシンではパスワードなしでsshを実行できません

分類Dev

dockerhubリポジトリをローカルマシンとの間でプルまたはプッシュすることはできません-docker

分類Dev

Cygwinデスクトップショートカット以外の場所からbashを実行すると、「コマンドが見つかりません」エラーが発生します

分類Dev

一部のLinuxシェルスクリプトがexecを使用してコマンドを実行するのはなぜですか?

分類Dev

「信頼できるマシン」からの事前のログインなしに、Debianをバスターにアップグレードした後にサーバーにSSH接続することはできません

分類Dev

RabbitMQコンシューマーがプロデューサーから送信されたメッセージを受信していません

分類Dev

Kafka 0.10.2(コマンドライン)でSSLを使用して認証を構成できません-プロデューサーとコンシューマーはトピックへの書き込みまたはトピックからの読み取りができません

Related 関連記事

  1. 1

    マングースプリフックfindOneAndUpdateは、別のコレクションから取得する一部のフィールドを変更します

  2. 2

    ローカルシステムからリモートシステムのRedisフラッシュコマンドを実行できますか?

  3. 3

    Herokuのデプロイに失敗しました:[リモート拒否]マスター->マスター(受信前のフックが拒否されました):エラー:一部の参照をプッシュできませんでした

  4. 4

    Gitプッシュコマンドを実行した後、gitcommitでファイルを変更する

  5. 5

    docker-machinesshがローカルマシンでコマンドの一部を実行しようとしています

  6. 6

    角度シードgithubプロジェクトからnodejsコマンドラインでhttp-serverを実行することができません

  7. 7

    gitを介してデプロイプロジェクトでnpmを実行するにはどうすればよいですか?(フック/受信後:npm:コマンドが見つかりません)

  8. 8

    別のスレッドのアプリケーションがクラッシュすると、コードの実行を続行できません

  9. 9

    Inno Setupが一部のマシンで実行可能ファイルのインストールをスキップするのはなぜですか?

  10. 10

    バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

  11. 11

    バックグラウンドでコマンドを実行すると、シェルスクリプトでファイルに書き込めません

  12. 12

    Windowsコマンドライン:パスの一部として変数を使用してコマンドを実行することはできません

  13. 13

    スクリプトが実行可能ファイルに設定されているにもかかわらず、コマンドラインからスクリプトを実行できません-「コマンドが見つかりません」というメッセージが表示されます

  14. 14

    PHP execからシェルコマンドを実行できませんが、シェルでユーザーとして実行できますか?

  15. 15

    Pythonマルチプロセッシングで開始メソッドを「フォーク」から「スポーン」に変更しても、ジョブを実行できなくなるのはなぜですか?

  16. 16

    Pythonマルチプロセッシング:マルチプロセッシングを使用すると、一部のクラス属性が失われます

  17. 17

    bitbucketパイプラインプッシュ後にデプロイメントサーバーで一連のコマンドを実行しますか?

  18. 18

    アプリで受信したデータをBLEデバイスからプッシュするためにIOSでバックグラウンドAPI呼び出しを定期的に行うことができません

  19. 19

    SignalRクライアント側は、ダッシュボードクライアントからの呼び出しを受信しますが、eコマースクライアントからは受信しません

  20. 20

    システムコマンドから実行すると、Perlスクリプトがインクルードファイルを見つけることができません

  21. 21

    14.04のグラフィカルメニューからシャットダウンすると、どのコマンドが実行されますか?

  22. 22

    実行コマンド(つまりF5)の一部としてバッチファイルを実行することは可能ですか?

  23. 23

    クラスタ上の共有ファイルシステムでは、他のマシンでは成功しているものの、一部のマシンではパスワードなしでsshを実行できません

  24. 24

    dockerhubリポジトリをローカルマシンとの間でプルまたはプッシュすることはできません-docker

  25. 25

    Cygwinデスクトップショートカット以外の場所からbashを実行すると、「コマンドが見つかりません」エラーが発生します

  26. 26

    一部のLinuxシェルスクリプトがexecを使用してコマンドを実行するのはなぜですか?

  27. 27

    「信頼できるマシン」からの事前のログインなしに、Debianをバスターにアップグレードした後にサーバーにSSH接続することはできません

  28. 28

    RabbitMQコンシューマーがプロデューサーから送信されたメッセージを受信していません

  29. 29

    Kafka 0.10.2(コマンドライン)でSSLを使用して認証を構成できません-プロデューサーとコンシューマーはトピックへの書き込みまたはトピックからの読み取りができません

ホットタグ

アーカイブ