【发布时间】:2012-12-06 21:34:45
【问题描述】:
我有一个 post-receive 钩子,它调用我的 bash 脚本(它将拉取本地 repo 并重新启动 Java 服务器)。
这是 post-receive 挂钩的所有者信息:
-rwsr-x--x 1 cyril devs 676 19 dec. 14:45 post-receive
如您所见,我在此脚本上设置了setuid bit,以便其他用户也可以以cyril/devs 运行。
这个脚本的内容比较简单:
echo "Running post-receive hook"
echo "Server will be up and running in about 1 minute"
/home/project/start_dev restart &
我的脚本start_dev 拥有这些权利:
-rwsr-x--- 1 cyril devs 1515 19 dec. 14:41 start_dev
注意:还有setuid.
如果我使用帐户cyril 将某些内容推送到服务器,它会完美运行。
如果其他人使用其他帐户推送到服务器,他们会得到:
remote: /home/project/start_dev: line 52: kill: (11490) - Operation not allowed
(kill 用于停止实例。)
为什么他们有这个错误,脚本应该以cyril而不是用户身份运行,因此他们应该有权杀死这个实例,对吧?
我做错了什么?
【问题讨论】: