【问题标题】:Maven directory : Permission deniedMaven目录:权限被拒绝
【发布时间】:2019-04-15 05:57:20
【问题描述】:

我已经在我的 linux 服务器中安装了 Maven 和 Jenkins。 Maven 从 putty 执行得非常好。但是,当我尝试使用 maven 运行管道作业时,从 Jenkins 收到以下错误:/data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/ mvn : 权限被拒绝

管道代码如下:

node {
   def mvnHome
   stage('Preparation') { 
      git branch: 'master', url: "http://UN:PW@IP/root/Test-Repo.git", credentialsId: 'QPGitCred'      
      mvnHome = tool 'org.apache.maven_3.2.5'
   }
   stage('Build') {
      if (isUnix()) {
         sh "'${mvnHome}/bin/mvn' --version"
      } else {
         bat(/"${mvnHome}\bin\mvn" --version/)
      }
   }
}

控制台输出:

    Started by user jenkins_dev Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /var/lib/jenkins/workspace/PipelineJob1 [Pipeline] { [Pipeline] stage [Pipeline] { (Preparation) [Pipeline] git using credential QPGitCred
     git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository
     git config remote.origin.url http://UN:PW@IP/root/Test-Repo.git # timeout=10 Fetching upstream changes from http://UN@IP/root/Test-Repo.git
     git --version # timeout=10 using GIT_ASKPASS to set credentials QPGitCred
     git fetch --tags --progress http://UN@IP/root/Test-Repo.git +refs/heads/*:refs/remotes/origin/*
     git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 0051ce3ezza8457e44e890c1cad8z2c93de19bd0 (refs/remotes/origin/master)
     git config core.sparsecheckout # timeout=10
     git checkout -f 0051ce3rrda8457e44e890c1cad8f2z93de19bd0
     git branch -a -v --no-abbrev # timeout=10
     git branch -D master # timeout=10
     git checkout -b master 0051ce3ebda8457e44e890c1cad8f2c49de19bd0 Commit message: "Update pom.xml"
     git rev-list --no-walk 0051ce3ebda8121e44h890c1cuy8f2c93de19bd0 # timeout=10 [Pipeline] tool [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build) [Pipeline] isUnix [Pipeline] sh
    + /data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/mvn
    --version /var/lib/jenkins/workspace/PipelineJob1@tmp/durable-990d0f84/script.sh: line 1: 
/data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/mvn: Permission denied [Pipeline] } 
[Pipeline] // stage [Pipeline] } [Pipeline] 
// node [Pipeline] End of 
Pipeline ERROR: script returned exit code 1 Finished: FAILURE

我从 putty 使用以下命令检查了权限:

ls -l /data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/mvn

-rwxrwxrwx 1 testusr dba 5543 Dec 14  2014 /data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/mvn

这里的权限表明它有权执行这个文件。但仍然来自 Jenkins,我收到 Permission denied 错误。

感谢您提前回复。

【问题讨论】:

  • 什么操作系统?是否已安装 SELinux 并处于强制模式?

标签: linux maven jenkins


【解决方案1】:

感谢您的所有回复。

我可以通过将 Jenkins 配置为 root 用户来解决这个问题。我按照此链接中给出的步骤操作:Run shell command in jenkins as root user?

以下流程适用于 CentOS:

  1. 打开这个脚本(使用 VIM 或其他编辑器):

    vim /etc/sysconfig/jenkins

  2. 找到这个 $JENKINS_USER 并更改为“root”:

    $JENKINS_USER="root"

  3. 然后更改 Jenkins 主页、webroot 和日志的所有权:

    chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins

【讨论】:

    【解决方案2】:

    添加 bash 命令以打印mvn 的当前用户/组和文件权限,如下所示。 此类信息有助于确认用户/组和文件权限是否符合预期。

    stage('Build') {
      if (isUnix()) {
         sh """
           # print current user, group
           id
    
           # print folder's user group/access
           ls -l "${mvnHome}"/..
           ls -l "${mvnHome}"
    
           "${mvnHome}"/bin/mvn --version
         """
      } else {
         bat(/"${mvnHome}\bin\mvn" --version/)
      }
    }
    

    【讨论】:

    • 我包含了 bash 命令,并在 Jenkins 中得到了以下输出: + id uid=773(jenkins) gid=986(jenkins) groups=986(jenkins) + ls -l /data1/SOA_INFRA /app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org.apache.maven_3.2.5/bin/mvn ls:无法访问/data1/SOA/app/oracle/product/middleware/Oracle_Home/oracle_common/modules/org .apache.maven_3.2.5/bin/mvn:权限被拒绝
    • 我做了一些更改以打印 bin 父文件夹的用户组。可能当前用户jenkins 不是bin 父文件夹的所有者。
    猜你喜欢
    • 2016-06-25
    • 2011-01-16
    • 2020-08-27
    • 2015-05-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2018-09-07
    • 2017-11-20
    相关资源
    最近更新 更多