如何 运行 GoCD 的工作和任务具有 root 权限?

How to to run GoCD's job and task with root permissions?

我正在尝试 运行 一个 shell 脚本作为 GoCD 中的任务,但该脚本似乎没有执行某些命令的根权限。

首先你需要非常小心 运行ning 命令,因为 root 是非常危险的。如果你真的必须这样做,只需将 'go' 用户添加到可以 运行 'sudo' 的组中,并在所有需要 root 访问权限的命令前加上 'sudo'。

当您可能想使用 'shell-executor-task' 插件 https://github.com/gocd-contrib/script-executor-task 而不是依赖 built-in 自定义命令执行器时就是这种情况。使用 shell-executor-task 的原因是您可以将特权命令保存在服务器配置本身而不是 SCM 中,因此对特权命令的访问将仅限于服务器管理员。

此外,我没有向 go 用户提供 carte-blanche sudo 访问权限,而是进一步将 sudo 权限限制为仅对真正需要它的某些命令。

最后一件事,我会创建一个特殊的任务代理服务器,它可以 运行 sudo 命令并且只允许该代理上的 sudo 作业 运行。如果很少这样做,那么维护一个任务服务器就是一种资源浪费,我会把这个服务器放在 VM 或 docker 容器中。