我有一个 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
,而不是用户身份运行,因此他们应该有权杀死这个实例,对吧?
我究竟做错了什么?