如何使用 Groovy 从用户中删除特定的 Jenkins 用户权限?
How do I remove specific Jenkins User permissions form a User using Groovy?
我可以使用以下通用脚本添加特定的Permission to a User:
import hudson.model.*
import Jenkins.*
import hudson.security.Permission
import hudson.security.GlobalMatrixAuthorizationStrategy
String userId = "my_user"
List<String> userPermissionList = [hudson.model.Item.CONFIGURE]
Hudson instance = Jenkins.get()
GlobalMatrixAuthorizationStrategy authStrategy = Jenkins.instance.getAuthorizationStrategy()
// Adding each permission from list
userPermissionList.each { permission ->
authStrategy.add(permission, userId)
instance.setAuthorizationStrategy(authStrategy)
}
instance.save()
但是,我到处寻找如何删除用户的特定权限。查看 GlobalMatrixAuthorizationStrategy,有一个 add()
方法,但是没有任何类型的 remove()
。
这可能吗??? (必须是)
或者我是否已将差异添加到用户?就像这样,清除用户的所有权限并添加回除我要删除的权限之外的所有权限。
解决方案
Permission class 有一个名为 enabled
的属性以及相关的 getter 和 setter。您可以通过设置 permission.enabled = true
添加权限,并删除您应该明确设置的权限 permission.enabled = false
The default value for permission.enabled
may be different depending on what version of Jenkins you are running. It is best to explicitly set this value either way
import hudson.model.*
import Jenkins.*
import hudson.security.Permission
import hudson.security.GlobalMatrixAuthorizationStrategy
def userId = "gfarkas"
def userPermissionList = [hudson.model.Item.CONFIGURE]
Hudson instance = Jenkins.get()
GlobalMatrixAuthorizationStrategy authStrategy = Jenkins.instance.getAuthorizationStrategy()
// Removing each permission from list
userPermissionList.each { permission ->
permission.enabled = false
authStrategy.add(permission, userId)
instance.setAuthorizationStrategy(authStrategy)
}
instance.save()
This intended to be ran in the Jenkin's Script Console
在 运行 上述脚本之前,用户具有以下权限
并且在 运行 这个脚本之后,用户拥有以下权限
如果我使用 permission.enabled = true
重新运行脚本,则用户具有以下权限
我可以使用以下通用脚本添加特定的Permission to a User:
import hudson.model.*
import Jenkins.*
import hudson.security.Permission
import hudson.security.GlobalMatrixAuthorizationStrategy
String userId = "my_user"
List<String> userPermissionList = [hudson.model.Item.CONFIGURE]
Hudson instance = Jenkins.get()
GlobalMatrixAuthorizationStrategy authStrategy = Jenkins.instance.getAuthorizationStrategy()
// Adding each permission from list
userPermissionList.each { permission ->
authStrategy.add(permission, userId)
instance.setAuthorizationStrategy(authStrategy)
}
instance.save()
但是,我到处寻找如何删除用户的特定权限。查看 GlobalMatrixAuthorizationStrategy,有一个 add()
方法,但是没有任何类型的 remove()
。
这可能吗??? (必须是)
或者我是否已将差异添加到用户?就像这样,清除用户的所有权限并添加回除我要删除的权限之外的所有权限。
解决方案
Permission class 有一个名为 enabled
的属性以及相关的 getter 和 setter。您可以通过设置 permission.enabled = true
添加权限,并删除您应该明确设置的权限 permission.enabled = false
The default value for
permission.enabled
may be different depending on what version of Jenkins you are running. It is best to explicitly set this value either way
import hudson.model.*
import Jenkins.*
import hudson.security.Permission
import hudson.security.GlobalMatrixAuthorizationStrategy
def userId = "gfarkas"
def userPermissionList = [hudson.model.Item.CONFIGURE]
Hudson instance = Jenkins.get()
GlobalMatrixAuthorizationStrategy authStrategy = Jenkins.instance.getAuthorizationStrategy()
// Removing each permission from list
userPermissionList.each { permission ->
permission.enabled = false
authStrategy.add(permission, userId)
instance.setAuthorizationStrategy(authStrategy)
}
instance.save()
This intended to be ran in the Jenkin's Script Console
在 运行 上述脚本之前,用户具有以下权限
并且在 运行 这个脚本之后,用户拥有以下权限
如果我使用 permission.enabled = true
重新运行脚本,则用户具有以下权限