nginx:在POST上以特定用户身份运行bash脚本

时间:2014-10-13 08:53:47

标签: git nginx githooks

我在一台CentOS主机上有一个nginx和git服务器,我在bitbucket上有我的git repo。我想做的是在从Bitbucket收到特定的POST请求时执行bash脚本。

我有什么:

1)专用用户nginx-script-runner

2) nginx config:

location / {
    rewrite ^(.*)$ /main.php?$1;
}

3) main.php:

exec('/bin/bash /script.sh')

4) /script.sh:

sudo -u nginx-script-runner /bin/bash /pull.sh

5) sudoers:

nginx-script-runner ALL=NOPASSWD: /pull.sh

pull.sh会自动从远程来源拉出并运行' build'程序。构建过程取决于npmbowercomposergrunt等(我还使用nvm进行节点版本管理)。这些工具是在真实用户登录时运行的。事情是 - 我只通过PKA登录CentOS,没有密码,所以我的pull.sh需要能够运行它多个用户(我和nginx-script-user)。由于它是一个git repo,它有node_modulesbower_components,作曲家的vendor文件夹我应该以某种方式管理权限。

第一个问题:我无法与不同的用户一起运行pull.sh。即使我有:

DIR='/repo.git'
#chgrp -R tactic "$DIR"
#chmod -R g+w "$DIR"
#find "$DIR" -type d -exec chmod g+s {} \;
setfacl -R -m g:common-group:rwX "$DIR"
find "$DIR" -type d | xargs setfacl -R -m d:g:common-group:rwX

我仍然有大量的" chgrp / chown权限被拒绝"错误。

第二个问题:我无法与pull.sh的任何一位用户真正执行main.php

非常感谢任何帮助。

P.S。

  • 我的个人用户(使用PKA)和nginx-script-runner(仅限密码身份验证,无外部SSH访问)都属于公共组common-group
  • 克隆git repo后,我已使用git config core.sharedRepository true对其进行配置并运行权限修复。

0 个答案:

没有答案