diff --git a/airflow/Dockerfile b/airflow/Dockerfile index 837c50066..3b66c0517 100644 --- a/airflow/Dockerfile +++ b/airflow/Dockerfile @@ -44,6 +44,7 @@ ARG SHARED_STATSD_EXPORTER ARG PYTHON ARG TARGETARCH ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID ARG S3FS ARG CYCLONEDX_BOM ARG UV @@ -114,7 +115,7 @@ EOF COPY --from=statsd_exporter-builder /statsd_exporter/statsd_exporter /stackable/statsd_exporter COPY --from=statsd_exporter-builder /statsd_exporter/statsd_exporter-${SHARED_STATSD_EXPORTER}.cdx.json /stackable/statsd_exporter-${SHARED_STATSD_EXPORTER}.cdx.json -COPY --from=gitsync-image --chown=${STACKABLE_USER_UID}:0 /git-sync /stackable/git-sync +COPY --from=gitsync-image --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /git-sync /stackable/git-sync RUN < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum ln -sf /stackable/apache-druid-${PRODUCT}-stackable${RELEASE} /stackable/druid -chown -h ${STACKABLE_USER_UID}:0 stackable/druid +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} stackable/druid # Force to overwrite the existing 'run-druid' ln -sf /stackable/bin/run-druid /stackable/druid/bin/run-druid -chown -h ${STACKABLE_USER_UID}:0 /stackable/druid/bin/run-druid +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/druid/bin/run-druid # fix missing permissions chmod -R g=u /stackable/bin diff --git a/hadoop/Dockerfile b/hadoop/Dockerfile index f1279cbe9..94e059d34 100644 --- a/hadoop/Dockerfile +++ b/hadoop/Dockerfile @@ -11,11 +11,12 @@ ARG PROTOBUF ARG TARGETARCH ARG TARGETOS ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID WORKDIR /stackable -COPY --chown=${STACKABLE_USER_UID}:0 shared/protobuf/stackable/patches/patchable.toml /stackable/src/shared/protobuf/stackable/patches/patchable.toml -COPY --chown=${STACKABLE_USER_UID}:0 shared/protobuf/stackable/patches/${PROTOBUF} /stackable/src/shared/protobuf/stackable/patches/${PROTOBUF} +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} shared/protobuf/stackable/patches/patchable.toml /stackable/src/shared/protobuf/stackable/patches/patchable.toml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} shared/protobuf/stackable/patches/${PROTOBUF} /stackable/src/shared/protobuf/stackable/patches/${PROTOBUF} RUN < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum @@ -241,7 +244,7 @@ rm -rf /var/cache/yum echo "user_allow_other" > /etc/fuse.conf ln -s "/stackable/hadoop-${PRODUCT}-stackable${RELEASE}" /stackable/hadoop -chown --no-dereference "${STACKABLE_USER_UID}:0" /stackable/hadoop +chown --no-dereference "${STACKABLE_USER_UID}:${STACKABLE_USER_GID}" /stackable/hadoop chmod g=u "/stackable/hadoop-${PRODUCT}-stackable${RELEASE}" chmod g=u /stackable/*-src.tar.gz @@ -249,7 +252,7 @@ ARCH="${TARGETARCH/amd64/x64}" mv /stackable/async-profiler-${ASYNC_PROFILER}* "/stackable/async-profiler-${ASYNC_PROFILER-}-${TARGETOS}-${ARCH}" chmod g=u "/stackable/async-profiler-${ASYNC_PROFILER-}-${TARGETOS}-${ARCH}" ln -s "/stackable/async-profiler-${ASYNC_PROFILER}-${TARGETOS}-${ARCH}" /stackable/async-profiler -chown --no-dereference "${STACKABLE_USER_UID}:0" /stackable/async-profiler +chown --no-dereference "${STACKABLE_USER_UID}:${STACKABLE_USER_GID}" /stackable/async-profiler chmod g=u /stackable/jmx @@ -273,7 +276,7 @@ USER ${STACKABLE_USER_UID} ENV HOME=/stackable ENV LD_LIBRARY_PATH=/stackable/hadoop/lib/native:/usr/lib/jvm/jre/lib/server -ENV PATH="${PATH}":/stackable/hadoop/bin +ENV PATH="${PATH}:/stackable/hadoop/bin" ENV HADOOP_HOME=/stackable/hadoop ENV HADOOP_CONF_DIR=/stackable/config ENV ASYNC_PROFILER_HOME=/stackable/async-profiler diff --git a/hbase/Dockerfile b/hbase/Dockerfile index cf255a29d..284ac7267 100644 --- a/hbase/Dockerfile +++ b/hbase/Dockerfile @@ -20,11 +20,12 @@ ARG RELEASE ARG HADOOP ARG HBASE_HBASE ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID USER ${STACKABLE_USER_UID} WORKDIR /stackable -COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ # The artifact name of the AWS bundle has changed between Haddop 3.3.6 and 3.4.1 # from aws-java-sdk-bundle-*.jar to bundle-*.jar. # See: https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/aws_sdk_upgrade.html @@ -34,7 +35,7 @@ COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 \ /stackable/hadoop/share/hadoop/tools/lib/hadoop-aws-${HADOOP}-stackable${RELEASE}.jar \ /stackable/hadoop/share/hadoop/tools/lib/ -COPY --chown=${STACKABLE_USER_UID}:0 hbase/hbase/stackable/bin/export-snapshot-to-s3.env /stackable/bin/ +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} hbase/hbase/stackable/bin/export-snapshot-to-s3.env /stackable/bin/ RUN < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum ln --symbolic --logical --verbose "/stackable/hbase-${HBASE_HBASE}-stackable${RELEASE}" /stackable/hbase -chown --no-dereference ${STACKABLE_USER_UID}:0 /stackable/hbase +chown --no-dereference ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/hbase chmod g=u /stackable/hbase ln --symbolic --logical --verbose "/stackable/hbase-operator-tools-${HBASE_HBASE_OPERATOR_TOOLS}-stackable${RELEASE}" /stackable/hbase-operator-tools -chown --no-dereference ${STACKABLE_USER_UID}:0 /stackable/hbase-operator-tools +chown --no-dereference ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/hbase-operator-tools chmod g=u /stackable/hbase-operator-tools ln --symbolic --logical --verbose "/stackable/phoenix/phoenix-server-hbase-${HBASE_PROFILE}.jar" "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar" -chown --no-dereference ${STACKABLE_USER_UID}:0 "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar" +chown --no-dereference ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar" chmod g=u "/stackable/hbase/lib/phoenix-server-hbase-${HBASE_PROFILE}.jar" # fix missing permissions diff --git a/hbase/hbase-opa-authorizer/Dockerfile b/hbase/hbase-opa-authorizer/Dockerfile index 776f578c8..ffb9f20b5 100644 --- a/hbase/hbase-opa-authorizer/Dockerfile +++ b/hbase/hbase-opa-authorizer/Dockerfile @@ -3,12 +3,13 @@ FROM stackable/image/java-devel ARG PRODUCT ARG DELETE_CACHES ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID USER ${STACKABLE_USER_UID} WORKDIR /stackable -COPY --chown=${STACKABLE_USER_UID}:0 hbase/hbase-opa-authorizer/stackable/patches/patchable.toml /stackable/src/hbase/hbase-opa-authorizer/stackable/patches/patchable.toml -COPY --chown=${STACKABLE_USER_UID}:0 hbase/hbase-opa-authorizer/stackable/patches/${PRODUCT} /stackable/src/hbase/hbase-opa-authorizer/stackable/patches/${PRODUCT} +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} hbase/hbase-opa-authorizer/stackable/patches/patchable.toml /stackable/src/hbase/hbase-opa-authorizer/stackable/patches/patchable.toml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} hbase/hbase-opa-authorizer/stackable/patches/${PRODUCT} /stackable/src/hbase/hbase-opa-authorizer/stackable/patches/${PRODUCT} RUN --mount=type=cache,id=maven-opa,uid=${STACKABLE_USER_UID},target=/stackable/.m2/repository < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum chmod g=u /stackable/apache-hive-metastore-${PRODUCT}-stackable${RELEASE}-bin/bin/start-metastore ln -s /stackable/apache-hive-metastore-${PRODUCT}-stackable${RELEASE}-bin /stackable/hive-metastore -chown -h ${STACKABLE_USER_UID}:0 /stackable/hive-metastore +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/hive-metastore chmod g=u /stackable/hive-metastore ln -s /stackable/hadoop-${HADOOP}-stackable${RELEASE} /stackable/hadoop -chown -h ${STACKABLE_USER_UID}:0 /stackable/hadoop +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/hadoop chmod g=u /stackable/hadoop chmod g=u /stackable/*-src.tar.gz diff --git a/java-devel/Dockerfile b/java-devel/Dockerfile index a1e06477a..f3f87f326 100644 --- a/java-devel/Dockerfile +++ b/java-devel/Dockerfile @@ -9,6 +9,7 @@ FROM stackable/image/stackable-devel ARG PRODUCT ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID # See: https://adoptium.net/en-gb/installation/linux/#_centosrhelfedora_instructions RUN cat < /etc/yum.repos.d/adoptium.repo @@ -60,8 +61,8 @@ EOF ENV JAVA_HOME="/usr/lib/jvm/temurin-${PRODUCT}-jdk" -COPY --chown=${STACKABLE_USER_UID}:0 java-devel/stackable/settings.xml /stackable/.m2/settings.xml -COPY --chown=${STACKABLE_USER_UID}:0 java-devel/stackable/settings.xml /root/.m2/settings.xml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} java-devel/stackable/settings.xml /stackable/.m2/settings.xml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} java-devel/stackable/settings.xml /root/.m2/settings.xml # Mitigation for CVE-2021-44228 (Log4Shell) # This variable is supported as of Log4j version 2.10 and diff --git a/kafka-testing-tools/Dockerfile b/kafka-testing-tools/Dockerfile index cbfb4299c..635c5b246 100644 --- a/kafka-testing-tools/Dockerfile +++ b/kafka-testing-tools/Dockerfile @@ -9,6 +9,7 @@ ARG PRODUCT ARG KAFKA_KCAT ARG RELEASE ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID LABEL name="Kafka Testing Tools" \ maintainer="info@stackable.tech" \ @@ -18,7 +19,7 @@ LABEL name="Kafka Testing Tools" \ summary="The Stackable image for the kcat tool." \ description="Used for integration testing" - # diffutils (diff) and binutils (cmp) are needed for the kafka integration tests +# diffutils (diff) and binutils (cmp) are needed for the kafka integration tests RUN microdnf install \ binutils \ cyrus-sasl \ @@ -30,11 +31,11 @@ RUN microdnf install \ && rm -rf /var/cache/yum # Store kcat version with binary name and add softlink -COPY --chown=${STACKABLE_USER_UID}:0 --from=kcat /stackable/kcat /stackable/kcat-${KAFKA_KCAT} -COPY --chown=${STACKABLE_USER_UID}:0 --from=kcat /stackable/kcat-${KAFKA_KCAT}-src.tar.gz /stackable +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=kcat /stackable/kcat /stackable/kcat-${KAFKA_KCAT} +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=kcat /stackable/kcat-${KAFKA_KCAT}-src.tar.gz /stackable RUN ln -s /stackable/kcat-${KAFKA_KCAT} /stackable/kcat -COPY --chown=${STACKABLE_USER_UID}:0 --from=kcat /licenses /licenses +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=kcat /licenses /licenses -COPY --chown=${STACKABLE_USER_UID}:0 kafka-testing-tools/licenses /licenses +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka-testing-tools/licenses /licenses ENTRYPOINT ["/stackable/kcat"] diff --git a/kafka/Dockerfile b/kafka/Dockerfile index 52050b973..15c86981c 100644 --- a/kafka/Dockerfile +++ b/kafka/Dockerfile @@ -11,13 +11,14 @@ ARG RELEASE ARG SCALA ARG JMX_EXPORTER ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID USER ${STACKABLE_USER_UID} WORKDIR /stackable -COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/jmx/ /stackable/jmx/ -COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/patches/patchable.toml /stackable/src/kafka/stackable/patches/patchable.toml -COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/patches/${PRODUCT} /stackable/src/kafka/stackable/patches/${PRODUCT} +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka/stackable/jmx/ /stackable/jmx/ +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka/stackable/patches/patchable.toml /stackable/src/kafka/stackable/patches/patchable.toml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka/stackable/patches/${PRODUCT} /stackable/src/kafka/stackable/patches/${PRODUCT} RUN < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum ln -s /stackable/bin/kcat-${KAFKA_KCAT} /stackable/bin/kcat -chown -h ${STACKABLE_USER_UID}:0 /stackable/bin/kcat +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/bin/kcat # kcat was located in /stackable/kcat - legacy ln -s /stackable/bin/kcat /stackable/kcat -chown -h ${STACKABLE_USER_UID}:0 /stackable/kcat +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/kcat ln -s /stackable/kafka_${SCALA}-${PRODUCT}-stackable${RELEASE} /stackable/kafka -chown -h ${STACKABLE_USER_UID}:0 /stackable/kafka +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/kafka # fix missing permissions chmod g=u /stackable/bin diff --git a/kafka/kafka-opa-plugin/Dockerfile b/kafka/kafka-opa-plugin/Dockerfile index 2a5df3166..dc0302f38 100644 --- a/kafka/kafka-opa-plugin/Dockerfile +++ b/kafka/kafka-opa-plugin/Dockerfile @@ -5,12 +5,13 @@ FROM stackable/image/java-devel ARG PRODUCT ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID USER ${STACKABLE_USER_UID} WORKDIR /stackable -COPY --chown=${STACKABLE_USER_UID}:0 kafka/kafka-opa-plugin/stackable/patches/patchable.toml /stackable/src/kafka/kafka-opa-plugin/stackable/patches/patchable.toml -COPY --chown=${STACKABLE_USER_UID}:0 kafka/kafka-opa-plugin/stackable/patches/${PRODUCT} /stackable/src/kafka/kafka-opa-plugin/stackable/patches/${PRODUCT} +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka/kafka-opa-plugin/stackable/patches/patchable.toml /stackable/src/kafka/kafka-opa-plugin/stackable/patches/patchable.toml +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} kafka/kafka-opa-plugin/stackable/patches/${PRODUCT} /stackable/src/kafka/kafka-opa-plugin/stackable/patches/${PRODUCT} RUN <>> Build spark # Compiling the tests takes a lot of time, so we skip them @@ -217,35 +220,35 @@ EOF WORKDIR /stackable/spark-${PRODUCT}-stackable${RELEASE}/dist/jars # Copy modules required for s3a:// -COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/hadoop/share/hadoop/tools/lib/hadoop-aws-${HADOOP}-stackable${RELEASE}.jar \ /stackable/hadoop/share/hadoop/tools/lib/bundle-${AWS_JAVA_SDK_BUNDLE}.jar \ ./ # Copy modules required for abfs:// -COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/hadoop/share/hadoop/tools/lib/hadoop-azure-${HADOOP}-stackable${RELEASE}.jar \ /stackable/hadoop/share/hadoop/tools/lib/azure-storage-${AZURE_STORAGE}.jar \ /stackable/hadoop/share/hadoop/tools/lib/azure-keyvault-core-${AZURE_KEYVAULT_CORE}.jar \ ./ # Copy the HBase connector including required modules -COPY --from=hbase-connectors-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hbase-connectors-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/spark/jars/* \ ./ # Copy modules required to access HBase -COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/hbase/lib/shaded-clients/hbase-shaded-client-byo-hadoop-${HBASE}-stackable${RELEASE}.jar \ /stackable/hbase/lib/shaded-clients/hbase-shaded-mapreduce-${HBASE}-stackable${RELEASE}.jar \ ./ # Copy modules required to access HBase if $HBASE == 2.4.x -COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/hbase/lib/client-facing-thirdparty/htrace-core4-*-incubating.jar \ /stackable/hbase/lib/client-facing-thirdparty/slf4j-reload4j-*.jar \ ./ # Copy modules required to access HBase if $HBASE == 2.6.x -COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \ +COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} \ /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-api-*.jar \ /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-context-*.jar \ /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-semconv-*-alpha.jar \ @@ -289,6 +292,7 @@ ARG RELEASE ARG JMX_EXPORTER ARG HBASE_CONNECTOR ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID LABEL name="Apache Spark" \ maintainer="info@stackable.tech" \ @@ -308,15 +312,15 @@ ENV PYSPARK_PYTHON=/usr/bin/python ENV PYTHONPATH=$SPARK_HOME/python -COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}/dist /stackable/spark -COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-source-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}-src.tar.gz /stackable -COPY --chown=${STACKABLE_USER_UID}:0 --from=hbase-connectors-builder /stackable/hbase-connector-${HBASE_CONNECTOR}-stackable${RELEASE}-src.tar.gz /stackable -COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}/assembly/target/bom.json /stackable/spark/spark-${PRODUCT}-stackable${RELEASE}.cdx.json -COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/jmx /stackable/jmx +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=spark-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}/dist /stackable/spark +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=spark-source-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}-src.tar.gz /stackable +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=hbase-connectors-builder /stackable/hbase-connector-${HBASE_CONNECTOR}-stackable${RELEASE}-src.tar.gz /stackable +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=spark-builder /stackable/spark-${PRODUCT}-stackable${RELEASE}/assembly/target/bom.json /stackable/spark/spark-${PRODUCT}-stackable${RELEASE}.cdx.json +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} --from=spark-builder /stackable/jmx /stackable/jmx COPY --from=spark-builder /usr/bin/tini /usr/bin/tini -COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/stackable/run-spark.sh /stackable/run-spark.sh -COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/licenses /licenses +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} spark-k8s/stackable/run-spark.sh /stackable/run-spark.sh +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} spark-k8s/licenses /licenses RUN <> /stackable/.profile -chown ${STACKABLE_USER_UID}:0 /stackable/.bashrc -chown ${STACKABLE_USER_UID}:0 /stackable/.profile +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/.bashrc +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/.profile cp /root/.curlrc /stackable/.curlrc -chown ${STACKABLE_USER_UID}:0 /stackable/.curlrc +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/.curlrc # CVE-2023-37920: Remove "e-Tugra" root certificates # e-Tugra's root certificates were subject to an investigation prompted by reporting of security issues in their systems @@ -174,16 +175,16 @@ if [ "$(trust list --filter=ca-anchors | grep -c 'E-Tugra')" != "0" ]; then fi EOF -COPY --from=config-utils --chown=${STACKABLE_USER_UID}:0 /config-utils/target/release/config-utils /stackable/config-utils -COPY --from=config-utils --chown=${STACKABLE_USER_UID}:0 /config-utils/config-utils_bin.cdx.xml /stackable/config-utils.cdx.xml +COPY --from=config-utils --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /config-utils/target/release/config-utils /stackable/config-utils +COPY --from=config-utils --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /config-utils/config-utils_bin.cdx.xml /stackable/config-utils.cdx.xml # **containerdebug** # Debug tool that logs generic system information. -COPY --from=containerdebug --chown=${STACKABLE_USER_UID}:0 /containerdebug/target/release/containerdebug /stackable/containerdebug +COPY --from=containerdebug --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /containerdebug/target/release/containerdebug /stackable/containerdebug # **check-permissions-ownership.sh** # Bash script to check proper permissions and ownership requirements in the final Stackable images -COPY --chown=${STACKABLE_USER_UID}:0 shared/checks/check-permissions-ownership.sh /bin/check-permissions-ownership.sh +COPY --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} shared/checks/check-permissions-ownership.sh /bin/check-permissions-ownership.sh ENV PATH="${PATH}:/stackable" diff --git a/stackable-devel/Dockerfile b/stackable-devel/Dockerfile index 962c6b312..39055be5b 100644 --- a/stackable-devel/Dockerfile +++ b/stackable-devel/Dockerfile @@ -17,6 +17,7 @@ FROM registry.access.redhat.com/ubi9/ubi-minimal@sha256:383329bf9c4f968e87e85d30 ARG PRODUCT ARG STACKABLE_USER_UID ARG STACKABLE_USER_GID +ARG STACKABLE_USER_GID ARG STACKABLE_USER_NAME # Sets the default shell to Bash with strict error handling and robust pipeline processing. @@ -89,7 +90,7 @@ microdnf clean all rm -rf /var/cache/yum cp /root/.curlrc /stackable/.curlrc -chown ${STACKABLE_USER_UID}:0 /stackable/.curlrc +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/.curlrc # WARNING (@NickLarsenNZ): We should pin the rustup version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain "$RUST_DEFAULT_TOOLCHAIN_VERSION" @@ -112,6 +113,6 @@ cd /patchable cargo auditable --quiet build --release && cargo cyclonedx --all --spec-version 1.5 --describe binaries mv /patchable/target/release/patchable /stackable/patchable microdnf clean all -chown ${STACKABLE_USER_UID}:0 /stackable/patchable +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/patchable rm -rf /patchable EOF diff --git a/superset/Dockerfile b/superset/Dockerfile index 4d3f9fbd1..59522c45e 100644 --- a/superset/Dockerfile +++ b/superset/Dockerfile @@ -137,6 +137,7 @@ ARG PRODUCT ARG PYTHON ARG RELEASE ARG STACKABLE_USER_UID +ARG STACKABLE_USER_GID LABEL name="Apache Superset" \ maintainer="info@stackable.tech" \ @@ -155,7 +156,7 @@ ENV PATH="${HOME}/app/bin:${PATH}" \ COPY superset/licenses /licenses -COPY --from=builder --chown=${STACKABLE_USER_UID}:0 /stackable/ ${HOME}/ +COPY --from=builder --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/ ${HOME}/ RUN < /stackable/package_manifest.txt -chown ${STACKABLE_USER_UID}:0 /stackable/package_manifest.txt +chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/package_manifest.txt chmod g=u /stackable/package_manifest.txt rm -rf /var/cache/yum # Add link pointing from /stackable/zookeeper to /stackable/apache-zookeeper-${PRODUCT}-stackable${RELEASE}-bin/ # to preserve the folder name with the version. ln -s /stackable/apache-zookeeper-${PRODUCT}-stackable${RELEASE}-bin/ /stackable/zookeeper -chown -h ${STACKABLE_USER_UID}:0 /stackable/zookeeper +chown -h ${STACKABLE_USER_UID}:${STACKABLE_USER_GID} /stackable/zookeeper # fix missing permissions chmod g=u /stackable/jmx