Jenkins-groovy,读取文件夹权限

Jenkins-groovy,读取文件夹权限,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,如果可能的话,有人知道如何读取给定Jenkins文件夹的权限吗 使用CloudBees文件夹插件 () 使用矩阵授权策略 () 我找到了如何迭代作业并获取文件夹“作业”的方法 但不知道如何访问文件夹权限/读取它 对文件夹的访问非常简单 import com.cloudbees.hudson.plugins.folder.* import groovyjarjarasm.asm.Item def items=Jenkins.instance.getAllItems(); items

如果可能的话,有人知道如何读取给定Jenkins文件夹的权限吗

  • 使用CloudBees文件夹插件
  • ()
  • 使用矩阵授权策略
  • ()
我找到了如何迭代作业并获取
文件夹
“作业”的方法 但不知道如何访问文件夹权限/读取它

对文件夹的访问非常简单

import com.cloudbees.hudson.plugins.folder.*
import groovyjarjarasm.asm.Item

  def items=Jenkins.instance.getAllItems();

  items.each{
    if(it instanceof Folder){
      println it.fullName
    } 
  }  
我注意到,当文件夹“A”上的例如将授予用户Aread(ldapid)读取权限时,配置文件中的如下内容

<com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty>
      <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/>
      <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:Aread</permission>
出错了

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.cloudbees.hudson.plugins.folder.Folder@a35435b[fooFolderName]' with class 'com.cloudbees.hudson.plugins.folder.Folder' to class 'hudson.model.AbstractProject'
(已尝试过它。名称,/也尝试过它:/ -如果没有文件夹,但经典作业由

下面的groovy脚本打印出每个给定文件夹的管理员用户(具有作业编辑权限)

//https://javadoc.jenkins.io/plugin/matrix-auth/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixProperty.html
//https://javadoc.jenkins.io/plugin/cloudbees-folder/com/cloudbees/hudson/plugins/folder/AbstractFolder.html
//https://javadoc.jenkins.io/hudson/security/Permission.html

def folderName = "folderName-fullPath"

com.cloudbees.hudson.plugins.folder.Folder folder = jenkins.model.Jenkins.instance.getItem(folderName);
def URL = folder.getAbsoluteUrl();

//iterate over properties and find permissions
folder.properties.each { p -> 
    if(p.class.canonicalName == "com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty") {
        //permissions found, get them
           Map<hudson.security.Permission,Set<String>> gp = p.getGrantedPermissions();

       //interested only in admins of folder- permission to modify the given folder
       gp.get(hudson.security.Permission.fromId("hudson.model.Item.Configure")).each{ us ->
         User usr = User.getById(us,false);

         if(usr != null){
            def usrMail = usr.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
            print(usr.fullName + " <" + usrMail +">;")
         }               
       }
    }
} 

println ""
//https://javadoc.jenkins.io/plugin/matrix-auth/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixProperty.html
//https://javadoc.jenkins.io/plugin/cloudbees-folder/com/cloudbees/hudson/plugins/folder/AbstractFolder.html
//https://javadoc.jenkins.io/hudson/security/Permission.html
def folderName=“folderName fullPath”
com.cloudbees.hudson.plugins.folder.folder folder=jenkins.model.jenkins.instance.getItem(folderName);
def URL=folder.getAbsoluteUrl();
//迭代属性并查找权限
folder.properties.each{p->
if(p.class.canonicalName==“com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty”){
//找到权限,获取它们
Map gp=p.getGrantedPermissions();
//只对文件夹管理员感兴趣-修改给定文件夹的权限
get(hudson.security.Permission.fromId(“hudson.model.Item.Configure”))。每个{us->
User usr=User.getById(us,false);
如果(usr!=null){
def usrMail=usr.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
打印(usr.fullName+“;”)
}               
}
}
} 
println“”

下面的groovy脚本打印出每个给定文件夹的管理员用户(具有作业编辑权限)

//https://javadoc.jenkins.io/plugin/matrix-auth/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixProperty.html
//https://javadoc.jenkins.io/plugin/cloudbees-folder/com/cloudbees/hudson/plugins/folder/AbstractFolder.html
//https://javadoc.jenkins.io/hudson/security/Permission.html

def folderName = "folderName-fullPath"

com.cloudbees.hudson.plugins.folder.Folder folder = jenkins.model.Jenkins.instance.getItem(folderName);
def URL = folder.getAbsoluteUrl();

//iterate over properties and find permissions
folder.properties.each { p -> 
    if(p.class.canonicalName == "com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty") {
        //permissions found, get them
           Map<hudson.security.Permission,Set<String>> gp = p.getGrantedPermissions();

       //interested only in admins of folder- permission to modify the given folder
       gp.get(hudson.security.Permission.fromId("hudson.model.Item.Configure")).each{ us ->
         User usr = User.getById(us,false);

         if(usr != null){
            def usrMail = usr.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
            print(usr.fullName + " <" + usrMail +">;")
         }               
       }
    }
} 

println ""
//https://javadoc.jenkins.io/plugin/matrix-auth/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixProperty.html
//https://javadoc.jenkins.io/plugin/cloudbees-folder/com/cloudbees/hudson/plugins/folder/AbstractFolder.html
//https://javadoc.jenkins.io/hudson/security/Permission.html
def folderName=“folderName fullPath”
com.cloudbees.hudson.plugins.folder.folder folder=jenkins.model.jenkins.instance.getItem(folderName);
def URL=folder.getAbsoluteUrl();
//迭代属性并查找权限
folder.properties.each{p->
if(p.class.canonicalName==“com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty”){
//找到权限,获取它们
Map gp=p.getGrantedPermissions();
//只对文件夹管理员感兴趣-修改给定文件夹的权限
get(hudson.security.Permission.fromId(“hudson.model.Item.Configure”))。每个{us->
User usr=User.getById(us,false);
如果(usr!=null){
def usrMail=usr.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
打印(usr.fullName+“;”)
}               
}
}
} 
println“”

我可以问你为什么不在给定位置执行shell脚本吗?
$stat-c%a/755
$stat-c%a/drwxr-xr-x
$stat-c%a/tmp 1777
$stat-c%a/tmp drwxrwt
您好,谢谢您的输入,但您可能没有正确理解它
我不知道想知道系统用户对磁盘上文件夹的权限
。有一种特殊的作业类型-文件夹(由cloudbees提供,在post中链接),它在系统中的目录中正常工作。我需要的是获得用户对这些作业的权限,如
文件夹(作业)AAA:admin,full;userA,read;userB,execute,…
我可以问一下您为什么不在给定位置执行shell脚本吗?
$stat-c%a/755
$stat-c%a/drwxr-xr-x
$stat-c%a/tmp 1777
$stat-c%a/tmp drwxrwxrwt
您好,谢谢您的输入,但是您支持bably没有正确理解
我不想知道系统用户对磁盘上文件夹的权限
。有一种特殊的作业类型-文件夹(由cloudbees提供,帖子中的链接),它与系统中的常规目录一样工作。我需要的是获得每个作业的用户权限,如
文件夹(作业)AAA:admin,full;userA,read;userB,execute,…