Jenkins agents build jobs temporary files permissions

I have a multi-branch pipeline set up on Jenkins. Within this pipeline, the build jobs generate temporary files on the agents Jenkins Filesystem Root(default is /tmp/jenkins-). However, there’s an issue with the permissions of these files—they are created under the user “ubuntu,” and some of them only grant read-write-execute permissions to the owner, while others lack execute permissions for the owner altogether. Consequently, my build jobs, which run under the jenkins user, encounter permission-related challenges when attempting to access these files, as the Jenkins user has no permissions on them.

  • npm ci
    /tmp/jenkins-…@tmp/durable-ef0aafb9/script.sh: 1: npm: Permission denied
    I managed to fix it with chmod -R 777 on /tmp/jenkins* but this is not a solution as it worked only because I did it while the build job was about to run and I changed the permissions of these temporary files and folders while they were just generated.
  • npm test

xxxx@2.0.0 test
test

PASS www/assets/javascript/…test.js
✓ …




PASS www/assets/javascript/…test.js
✓…

Test Suites: 12 passed, 12 total
Tests: 1 todo, 51 passed, 52 total
Snapshots: 0 total
Time: 3.501 s
Ran all test suites.

I am using EC2-fleet plugin v3.1.0 for launching the agents
Jenkins Version 2.426.1


Jenkins setup:
Jenkins: 2.426.1
OS: Linux - 6.2.0-1016-aws
Java: 11.0.5 - Amazon.com Inc. (OpenJDK 64-Bit Server VM)

ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
authentication-tokens:1.53.v1c90fd9191a_b_
aws-credentials:218.v1b_e9466ec5da_
aws-java-sdk:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-cloudformation:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-codebuild:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-ec2:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-ecr:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-ecs:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-efs:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-elasticbeanstalk:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-iam:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-kinesis:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-logs:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-minimal:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-secretsmanager:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-sns:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-sqs:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-ssm:1.12.586-413.v6a_6c3a_420126
aws-secrets-manager-credentials-provider:1.213.vca_3f37306fed
blueocean:1.27.9
blueocean-bitbucket-pipeline:1.27.9
blueocean-commons:1.27.9
blueocean-config:1.27.9
blueocean-core-js:1.27.9
blueocean-dashboard:1.27.9
blueocean-display-url:2.4.2
blueocean-events:1.27.9
blueocean-git-pipeline:1.27.9
blueocean-github-pipeline:1.27.9
blueocean-i18n:1.27.9
blueocean-jwt:1.27.9
blueocean-personalization:1.27.9
blueocean-pipeline-api-impl:1.27.9
blueocean-pipeline-editor:1.27.9
blueocean-pipeline-scm-api:1.27.9
blueocean-rest:1.27.9
blueocean-rest-impl:1.27.9
blueocean-web:1.27.9
bootstrap5-api:5.3.2-2
bouncycastle-api:2.29
branch-api:2.1135.v8de8e7899051
build-timeout:1.31
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloudbees-bitbucket-branch-source:856.v04c46c86f911
cloudbees-folder:6.858.v898218f3609d
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.11.0-94.v3e1f4a_926e49
configuration-as-code:1738.v2d8b_a_b_8a_54b_1
credentials:1309.v8835d63eb_d8a_
credentials-binding:642.v737c34dea_6c2
display-url-api:2.200.vb_9327d658781
durable-task:523.va_a_22cf15d5e0
ec2-fleet:3.1.0
echarts-api:5.4.3-1
favorite:2.4.3
font-awesome-api:6.4.2-1
git:5.2.1
git-client:4.5.0
github:1.37.3.1
github-api:1.316-451.v15738eef3414
github-branch-source:1751.v90e17c48a_6a_c
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.32
instance-identity:185.v303dc7c645f9
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.15.3-372.v309620682326
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.9-1
jenkins-design-language:1.27.9
jjwt-api:0.11.5-77.v646c772fddb_0
job-dsl:1.87
jquery3-api:3.7.1-1
junit:1240.vf9529b_881428
mailer:463.vedf8358e006b_
matrix-auth:3.2.1
matrix-project:818.v7eb_e657db_924
mina-sshd-api-common:2.11.0-86.v836f585d47fa_
mina-sshd-api-core:2.11.0-86.v836f585d47fa_
okhttp-api:4.11.0-157.v6852a_a_fa_ec11
pipeline-build-step:516.v8ee60a_81c5b_9
pipeline-github-lib:42.v0739460cda_c4
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:689.veec561a_dee13
pipeline-input-step:477.v339683a_8d55e
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2151.ve32c9d209a_3f
pipeline-model-definition:2.2151.ve32c9d209a_3f
pipeline-model-extensions:2.2151.ve32c9d209a_3f
pipeline-rest-api:2.34
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2151.ve32c9d209a_3f
pipeline-stage-view:2.34
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.6.0
prism-api:1.29.0-9
pubsub-light:1.18
scm-api:683.vb_16722fb_b_80b_
script-security:1281.v22fb_899df1a_e
slack:684.v833089650554
snakeyaml-api:2.2-111.vc6598e30cc65
sse-gateway:1.26
ssh-credentials:308.ve4497b_ccd8f4
ssh-slaves:2.916.vd17b_43357ce4
sshd:3.303.vefc7119b_ec23
strict-crumb-issuer:2.1.1
structs:325.vcb_307d2a_2782
timestamper:1.26
token-macro:384.vf35b_f26814ec
trilead-api:2.84.v72119de229b_7
variant:60.v7290fc0eb_b_cd
workflow-aggregator:596.v8c21c963d92d
workflow-api:1283.v99c10937efcb_
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3806.va_3a_6988277b_2
workflow-durable-task-step:1289.v4d3e7b_01546b_
workflow-job:1360.vc6700e3136f5
workflow-multibranch:756.v891d88f2cd46
workflow-scm-step:415.v434365564324
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:865.v43e78cc44e0d

The temporary file system on your Linux system of the agent might be configured to disallow execution of scripts from the temporary file system. Look at the mount options of the file system to confirm that it does not have the noexec option enabled.

If you must have the temporary directory mounted as noexec, then you’ll need to configure Jenkins with a different temporary directory that allows scripts to be executed from that directory.

It is also possible that the umask configured for the user running the Jenkins agent somehow is preventing the creation of an executable script.

You should update your Java 11 version. The most recent patch release is 11.0.21. You’re 3-4 years out of date with that version of Java 11.

Thank you for your reply.
I can confirm that /tmp has no option “noexec”. I have tried changing the
Jenkins Filesystem Root to different directories but the issue persists.
Also, the umask of the user (ubuntu) generating the files and folders needed for the build jobs is 0002.

I managed to resolve the issue by launching my agents with jenkins user through ssh instead of ubuntu.