我正在尝试设置一个 git post-receive 钩子,这样当收到提交时,机器上的存储库的另一个克隆会被更新(即执行 a git pull origin master
)。我正在使用 gitosis 为存储库提供服务,因此我相信一个接收后挂钩将以gitosis
用户身份运行,而我想在接收时更新的存储库由www-data
. 我该怎么做呢?
我听说过setuid
脚本,但我不确定这是否会带来安全风险?如果这不是安全风险,我该怎么做呢?我猜我会做一些事情,比如让脚本拥有www-data
并使其成为世界可执行文件并启用 setuid 位?我猜这个脚本几乎是无害的,因为它所做的只是更新存储库,但我想确定一下。谢谢!
编辑:有什么办法可以做到这一点sudo
吗?那会比 更安全setuid
吗?我的意思是,如果用户不是 root 用户,我认为不会有太大问题setuid
,但无论如何,我似乎必须跳过几圈setuid
才能运行脚本。
第二次编辑:似乎我可以用一些/etc/sudoers
魔法和sudo -u
. 也许我应该把它贴在 ServerFault 上,但至少我从这次努力中学到了一些东西。