防止Jenkins作业逃离工作区

防止Jenkins作业逃离工作区,jenkins,continuous-integration,Jenkins,Continuous Integration,开发人员提交了一个输出路径为..\SomeDir的生成文件。该项目建成后,产出被倾倒到Jenkins_家中。如果构建试图转义工作区目录,有没有办法使其失败?谢谢 -Michael我认为解决方案是,在运行命令之前,将目录更改为workspace。如果设置了工作区,则可以编写类似cd$workspace或cd%workspace%的内容(用于批处理命令) 值得设置一些强大的写入权限。确保Jenkins运行的用户只具有写入Jenkins_Home及其子目录的权限 您还可以确保Jenkins_Home下

开发人员提交了一个输出路径为..\SomeDir的生成文件。该项目建成后,产出被倾倒到Jenkins_家中。如果构建试图转义工作区目录,有没有办法使其失败?谢谢
-Michael

我认为解决方案是,在运行命令之前,将目录更改为workspace。如果设置了工作区,则可以编写类似cd$workspace或cd%workspace%的内容(用于批处理命令)

值得设置一些强大的写入权限。确保Jenkins运行的用户只具有写入Jenkins_Home及其子目录的权限

您还可以确保Jenkins_Home下的目录只有在必要时才具有写入权限(工作区、日志记录等)


如果生成文件试图使用绝对路径,则生成将失败,并出现权限错误。

此外,还可以通过在jenkins选项(高级按钮下)中设置“工作区根目录”,将工作区放置在单独的目录中。这应该只允许jenkins用户访问jenkins_主目录和工作区目录,但同时工作区目录不是jenkins_主目录的子目录。例如,Jenkins_Home=c:\Jenkins和工作区目录=c:\workspaces,这将阻止作业写入任意目录。这并不能阻止在这种情况下发生的事情;作业已写入Jenkins_Home。您不能将Jenkins_Home目录设置为只读吗?有什么需要写入的吗?Jenkins需要写入Jenkins_主目录中的日志和配置文件,因此不幸的是,您不能将其设置为Jenkins用户只读,因此我先前的建议是。另一个解决方案是永远不要在Jenkins主目录上构建,而要有一堆构建从属目录。在这种情况下,您只能在工作空间上设置权限。