Skip to content

Commit fbfc8ba

Browse files
authored
fix(lib-inject): allow all users to read and modify installed packages [backport #6569 to 1.18] (#6638)
Backport of #6569 to 1.18 ## Descriptions When library injection is used the `/datadog-lib/ddtrace_pkg` directory is created with permissions that prevents other users from reading certain files. This PR ensures all files in`/datadog-lib/ddtrace_pkgs` are readable to all users. When `find /datadog-lib/ddtrace_pkgs ! -perm -a=r` is run on a host using library injection with `ddtrace==1.17.3` the following output is generated: <details> /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.10-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.11-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.7-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.8-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-manylinux2014/protobuf-4.23.4.dist-info/WHEEL /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/METADATA /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/RECORD /datadog-lib/ddtrace_pkgs/site-packages-ddtrace-py3.9-musllinux_1_1/protobuf-4.23.4.dist-info/WHEEL </details> ## Checklist - [x] Change(s) are motivated and described in the PR description. - [x] Testing strategy is described if automated tests are not included in the PR. - [x] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)). - [x] Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment. - [x] Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
1 parent b5b2b2c commit fbfc8ba

File tree

4 files changed

+13
-0
lines changed

4 files changed

+13
-0
lines changed

.github/workflows/lib-injection.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ jobs:
8282
# Wait for the app to start
8383
sleep 60
8484
docker-compose logs
85+
- name: Check Permissions on ddtrace pkgs
86+
run: |
87+
cd lib-injection
88+
# Ensure /datadog-lib/ddtrace_pkgs is a valid directory that is not empty
89+
docker-compose run lib_inject find /datadog-init/ddtrace_pkgs -maxdepth 0 -empty | wc -l && if [ $? -ne 0 ]; then exit 1; fi
90+
# Ensure non-datadog users have read and write permissions to files stored in /datadog-lib/ddtrace_pkgs
91+
docker-compose run lib_inject find /datadog-init/ddtrace_pkgs ! -perm -a=rw | wc -l && if [ $? -ne 0 ]; then exit 1; fi
8592
- name: Test the app
8693
run: |
8794
curl http://localhost:18080

docs/spelling_wordlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ https
104104
httpx
105105
iPython
106106
ini
107+
InitContainer
107108
initializer
108109
integration
109110
integrations

lib-injection/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ARG UID=10000
2929
RUN addgroup -g 10000 -S datadog && \
3030
adduser -u ${UID} -S datadog -G datadog
3131
RUN chown -R datadog:datadog /datadog-init/ddtrace_pkgs
32+
RUN chmod -R a+rw /datadog-init/ddtrace_pkgs
3233
USER ${UID}
3334
WORKDIR /datadog-init
3435
ADD sitecustomize.py /datadog-init/sitecustomize.py
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
fixes:
3+
- |
4+
lib-injection: Resolves permissions errors raised when ddtrace packages are copied from the InitContainer to the shared volume.

0 commit comments

Comments
 (0)