gpt4 book ai didi

linux - 一键部署需要哪些权限设置?

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:03 25 4
gpt4 key购买 nike

标题很笼统,但我有更具体的问题。我深陷权限噩梦中,试图使用 Git 设置“推送部署”系统。

在我的本地机器上,我通过 SSH 推送到服务器 (Ubuntu 14.04)。我将服务器设置为远程

git remote add development devuser@development.server:/home/dummyuser/bare/repo.git

这个裸存储库位于我们用来处理部署任务的虚拟用户 dummyuser 的主文件夹中。 devuser是我自己在开发服务器上的账号。

我在远程存储库中设置了一个 post-receive Hook (development.server:/home/dummyuser/bare/repo.git/hooks/post-receive) 旨在通过 git checkout 将文件部署到同一服务器上的 Web 服务器目录,将其命名为 webfolder/。该文件夹当前具有权限

drwxr-xr-x dummyuser www-data webfolder/

其中 www-data 是与 Apache 用户关联的组。

如果我有post-receive 钩子(Hook)脚本使用命令

git --work-tree=/var/www/webfolder --git-dir=/home/dummyuser/bare/repo.git checkout -f

我收到无法写入 webfolder/ 的错误,这是可以预见的,因为我假设脚本以我 (devuser) 的身份运行,因为我进行了煽动通过 SSH 推送,devuserwebfolder/ 没有任何权限。

但是,如果我将脚本更改为充当 dummyuser

sudo -u dummyuser git --work-tree=/var/www/webfolder --git-dir=/home/dummyuser/bare/repo.git checkout -f

只是看看会发生什么,我有错误

warning: unable to access '/home/devuser/.config/git/attributes': Permission denied

有几件事我不明白:

1) /home/devuser/.config//home/dummyuser/.config/ 都不存在。很好,但是如果 Git 需要访问 .config/ 文件夹,为什么之前我设置裸存储库并以 devuser 身份执行 Hook 时它没有提示?

2) 既然我正在尝试充当 dummyuser,为什么 Git 在 ~devuser/ 中寻找 .config/文件夹?为什么它不在 ~dummyuser/?

中查找

我一直在研究“使用 Git”这个令人发狂的狗屎节目中的一个单一问题的一小部分,现在已经四个小时了,我的大脑很模糊,所以请使用小词。

最佳答案

问题在于 sudo -u dummyuser 没有设置 Git 期望的环境变量。如果我将 HOME=/home/dummyuser 添加到 post-receive Hook ,部署将按预期进行。

如果有人可以提供有关正在发生的事情的更多详细信息或更好的解决方案,请将其写为答案,我会接受。一些注意事项:

  • dummyuser 没有登录,所以在 post-receive 脚本中使用 sudo -iu dummyuser 将不起作用<
  • 手动设置 HOME=/home/dummyuser 并成功执行脚本后,我发现终端的 echo $HOME 返回 /home/devuser,因此 $HOME
  • 没有永久更改
  • 成功执行钩子(Hook)脚本后,~devuser/~dummyuser//root/ 都没有.config/ 文件夹。所以...我仍然不知道为什么 Git 卡在它上面。

关于linux - 一键部署需要哪些权限设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com