From 929e30a9c0821c904dfb9ac2ce2007cc73837d76 Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Wed, 31 Dec 2025 11:25:00 -0800 Subject: [PATCH 1/5] RANGER-5365:Add test users into Ranger Docker Base Image Signed-off-by: Ramesh Mani --- docker/Dockerfile | 18 ++----- docker/create_users_and_groups.sh | 88 +++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 docker/create_users_and_groups.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 39499db..c0d1be0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -47,23 +47,13 @@ ENV RANGER_SCRIPTS=/home/ranger/scripts ENV RANGER_HOME=/opt/ranger ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -# setup groups, users, directories -RUN groupadd ranger \ - && for u in ranger rangeradmin rangerusersync rangertagsync rangerkms; do \ - useradd -g ranger -ms /bin/bash $u; \ - done - -RUN groupadd hadoop \ - && for u in hdfs yarn hive hbase kafka ozone; do \ - useradd -g hadoop -ms /bin/bash $u; \ - done - -RUN groupadd knox \ - && useradd -g knox -ms /bin/bash knox - # setup directories RUN mkdir -p /home/ranger/dist /home/ranger/scripts /opt/ranger && \ chown -R ranger:ranger /home/ranger /opt/ranger && \ chmod +rx /home/ranger /home/ranger/dist /home/ranger/scripts +# setup groups, users, directories +COPY create_users_and_groups.sh /${RANGER_SCRIPTS}/create_users_and_groups.sh +RUN chmod +x /${RANGER_SCRIPTS}/create_users_and_groups.sh && /${RANGER_SCRIPTS}/create_users_and_groups.sh && rm /${RANGER_SCRIPTS}/create_users_and_groups.sh + ENTRYPOINT [ "/bin/bash" ] diff --git a/docker/create_users_and_groups.sh b/docker/create_users_and_groups.sh new file mode 100644 index 0000000..9d9299b --- /dev/null +++ b/docker/create_users_and_groups.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Script to create users and groups in ranger containers +# This script is designed to be run during container initialization + +# Function to create a group if it doesn't exist +create_group_if_not_exists() { + local groupname=$1 + + if ! getent group "$groupname" &>/dev/null; then + echo "Creating group: $groupname" + groupadd "$groupname" + echo "Group $groupname created successfully" + else + echo "Group $groupname already exists" + fi +} + +# Function to create a user for testing. +create_user_if_not_exists() { + local username=$1 + local home_dir=$2 + local primary_group=$3 + + if ! id "$username" &>/dev/null; then + echo "Creating user: $username" + useradd -g "$primary_group" -m -d "$home_dir" -s /bin/bash "$username" + + # Set a default password + echo "$username:$username" | chpasswd + + echo "User $username created successfully" + else + echo "User $username already exists" + fi +} + +# Function to create users and groups +create_users_and_groups() { + local group_name=$1 + local users=$2 + + echo "Creating group '$group_name' with users: $users" + + # Create group and users + create_group_if_not_exists "$group_name" + for u in $users; do + create_user_if_not_exists "$u" "/home/$u" "$group_name" + done +} + +# Main function to create all users and groups +create_all_users_and_groups() { + echo "Starting user and group creation..." + + # Create ranger group and users + create_users_and_groups "ranger" "ranger rangeradmin rangerusersync rangertagsync rangerkms rangerauditserver" + + # Create hadoop group and users + create_users_and_groups "hadoop" "hdfs yarn hive hbase kafka ozone" + + # Create knox group and user + create_users_and_groups "knox" "knox" + + # Create test users in test group + create_users_and_groups "testgroup" "testuser1 testuser2 testuser3" + + echo "User and group creation completed successfully..." +} + +# Execute the main function +create_all_users_and_groups \ No newline at end of file From c3ec9f71b50c1a0c21ddbd78e54179934d7a512d Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Wed, 31 Dec 2025 11:57:44 -0800 Subject: [PATCH 2/5] RANGER-5365:Add test users into Ranger Docker Base Image - co-pilot review fix --- docker/Dockerfile | 6 ++++-- docker/create_users_and_groups.sh | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index c0d1be0..2d4b44d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -53,7 +53,9 @@ RUN mkdir -p /home/ranger/dist /home/ranger/scripts /opt/ranger && \ chmod +rx /home/ranger /home/ranger/dist /home/ranger/scripts # setup groups, users, directories -COPY create_users_and_groups.sh /${RANGER_SCRIPTS}/create_users_and_groups.sh -RUN chmod +x /${RANGER_SCRIPTS}/create_users_and_groups.sh && /${RANGER_SCRIPTS}/create_users_and_groups.sh && rm /${RANGER_SCRIPTS}/create_users_and_groups.sh +COPY create_users_and_groups.sh ${RANGER_SCRIPTS}/create_users_and_groups.sh +RUN chmod +x ${RANGER_SCRIPTS}/create_users_and_groups.sh && ${RANGER_SCRIPTS}/create_users_and_groups.sh && \ + chown -R ranger:ranger /home/ranger /opt/ranger && \ + rm ${RANGER_SCRIPTS}/create_users_and_groups.sh ENTRYPOINT [ "/bin/bash" ] diff --git a/docker/create_users_and_groups.sh b/docker/create_users_and_groups.sh index 9d9299b..241401c 100644 --- a/docker/create_users_and_groups.sh +++ b/docker/create_users_and_groups.sh @@ -19,7 +19,9 @@ # Script to create users and groups in ranger containers # This script is designed to be run during container initialization -# Function to create a group if it doesn't exist +set -e + +# General-purpose function to create a group if it doesn't exist. create_group_if_not_exists() { local groupname=$1 @@ -32,7 +34,7 @@ create_group_if_not_exists() { fi } -# Function to create a user for testing. +# General-purpose function to create a user if it doesn't exist. create_user_if_not_exists() { local username=$1 local home_dir=$2 @@ -51,7 +53,7 @@ create_user_if_not_exists() { fi } -# Function to create users and groups +# Function to create users and groups if not exist create_users_and_groups() { local group_name=$1 local users=$2 @@ -65,7 +67,7 @@ create_users_and_groups() { done } -# Main function to create all users and groups +# Main function to create all users and groups if not exist create_all_users_and_groups() { echo "Starting user and group creation..." From 7416565bf621c966984446c840ea3537205b2dd5 Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Wed, 31 Dec 2025 19:55:56 -0800 Subject: [PATCH 3/5] RANGER-5365:Add test users into Ranger Docker Base Image -review comment fix --- docker/Dockerfile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 2d4b44d..b5fa391 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -47,15 +47,16 @@ ENV RANGER_SCRIPTS=/home/ranger/scripts ENV RANGER_HOME=/opt/ranger ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -# setup directories +# create directories and setup perms RUN mkdir -p /home/ranger/dist /home/ranger/scripts /opt/ranger && \ - chown -R ranger:ranger /home/ranger /opt/ranger && \ chmod +rx /home/ranger /home/ranger/dist /home/ranger/scripts -# setup groups, users, directories -COPY create_users_and_groups.sh ${RANGER_SCRIPTS}/create_users_and_groups.sh -RUN chmod +x ${RANGER_SCRIPTS}/create_users_and_groups.sh && ${RANGER_SCRIPTS}/create_users_and_groups.sh && \ - chown -R ranger:ranger /home/ranger /opt/ranger && \ - rm ${RANGER_SCRIPTS}/create_users_and_groups.sh +# setup groups and users +COPY create_users_and_groups.sh ${RANGER_SCRIPTS} +RUN chmod +x /home/ranger/scripts/create_users_and_groups.sh && \ + ./home/ranger/scripts/create_users_and_groups.sh + +# change ownerships +RUN chown -R ranger:ranger /home/ranger /opt/ranger ENTRYPOINT [ "/bin/bash" ] From ed34e85529e56fd8e26ce3445b8f4f4652a577cf Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Wed, 31 Dec 2025 20:01:38 -0800 Subject: [PATCH 4/5] RANGER-5365:Add test users into Ranger Docker Base Image -build issue fix --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b5fa391..c361676 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -52,7 +52,7 @@ RUN mkdir -p /home/ranger/dist /home/ranger/scripts /opt/ranger && \ chmod +rx /home/ranger /home/ranger/dist /home/ranger/scripts # setup groups and users -COPY create_users_and_groups.sh ${RANGER_SCRIPTS} +COPY ./create_users_and_groups.sh ${RANGER_SCRIPTS} RUN chmod +x /home/ranger/scripts/create_users_and_groups.sh && \ ./home/ranger/scripts/create_users_and_groups.sh From 68b70924532cbb3163eb90937218b172058abbd5 Mon Sep 17 00:00:00 2001 From: Ramesh Mani Date: Wed, 31 Dec 2025 20:06:24 -0800 Subject: [PATCH 5/5] RANGER-5365:Add test users into Ranger Docker Base Image -build issue fix2 --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index c361676..eea0aa7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -52,7 +52,7 @@ RUN mkdir -p /home/ranger/dist /home/ranger/scripts /opt/ranger && \ chmod +rx /home/ranger /home/ranger/dist /home/ranger/scripts # setup groups and users -COPY ./create_users_and_groups.sh ${RANGER_SCRIPTS} +COPY docker/create_users_and_groups.sh ${RANGER_SCRIPTS} RUN chmod +x /home/ranger/scripts/create_users_and_groups.sh && \ ./home/ranger/scripts/create_users_and_groups.sh