Skip to content

Commit fc4cef2

Browse files
committed
Update sandbox permissions
1 parent 3c19fb0 commit fc4cef2

3 files changed

Lines changed: 26 additions & 23 deletions

File tree

devops/sandbox/Dockerfile.RELEASE.rockylinux9

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ RUN groupadd -r gpadmin && \
222222
echo "gpadmin ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/gpadmin && \
223223
chmod 440 /etc/sudoers.d/gpadmin
224224

225-
# Prepare SSH daemon: generate host keys and ensure runtime dir
226-
RUN ssh-keygen -A && mkdir -p /run/sshd
225+
# Prepare SSH daemon: generate host keys, ensure runtime dir, and allow gpadmin to start it
226+
RUN ssh-keygen -A && mkdir -p /run/sshd && chmod u+s /usr/sbin/sshd
227227

228228
# Copy built Cloudberry from builder stage
229229
COPY --from=builder /usr/local/cloudberry-db /usr/local/cloudberry-db
@@ -246,7 +246,13 @@ RUN echo "cdw" > /tmp/gpdb-hosts && \
246246
chmod 755 /tmp/gpinitsystem_multinode && \
247247
chmod 755 /tmp/init_system.sh && \
248248
mkdir -p /data0/database/coordinator /data0/database/primary /data0/database/mirror && \
249-
chown -R gpadmin:gpadmin /data0 && \
249+
chown -R gpadmin:gpadmin \
250+
/usr/local/cloudberry-db \
251+
/tmp/gpinitsystem_singlenode \
252+
/tmp/gpinitsystem_multinode \
253+
/tmp/gpdb-hosts \
254+
/tmp/multinode-gpinit-hosts \
255+
/data0 && \
250256
echo "export COORDINATOR_DATA_DIRECTORY=/data0/database/coordinator/gpseg-1" >> /home/gpadmin/.bashrc && \
251257
echo -e '\n# Add Cloudberry entries\nif [ -f /usr/local/cloudberry-db/cloudberry-env.sh ]; then\n source /usr/local/cloudberry-db/cloudberry-env.sh\nfi\n# Add Greenplum compatibility entries\nif [ -f /usr/local/cloudberry-db/greenplum_path.sh ]; then\n source /usr/local/cloudberry-db/greenplum_path.sh\nfi' >> /home/gpadmin/.bashrc
252258

devops/sandbox/Dockerfile.main.rockylinux9

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ RUN groupadd -r gpadmin && \
177177
echo "gpadmin ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/gpadmin && \
178178
chmod 440 /etc/sudoers.d/gpadmin
179179

180-
# Prepare SSH daemon: generate host keys and ensure runtime dir
181-
RUN ssh-keygen -A && mkdir -p /run/sshd
180+
# Prepare SSH daemon: generate host keys, ensure runtime dir, and allow gpadmin to start it
181+
RUN ssh-keygen -A && mkdir -p /run/sshd && chmod u+s /usr/sbin/sshd
182182

183183
# Copy built Cloudberry from builder stage
184184
COPY --from=builder /usr/local/cloudberry-db /usr/local/cloudberry-db
@@ -201,7 +201,13 @@ RUN echo "cdw" > /tmp/gpdb-hosts && \
201201
chmod 755 /tmp/gpinitsystem_multinode && \
202202
chmod 755 /tmp/init_system.sh && \
203203
mkdir -p /data0/database/coordinator /data0/database/primary /data0/database/mirror && \
204-
chown -R gpadmin:gpadmin /data0 && \
204+
chown -R gpadmin:gpadmin \
205+
/usr/local/cloudberry-db \
206+
/tmp/gpinitsystem_singlenode \
207+
/tmp/gpinitsystem_multinode \
208+
/tmp/gpdb-hosts \
209+
/tmp/multinode-gpinit-hosts \
210+
/data0 && \
205211
echo "export COORDINATOR_DATA_DIRECTORY=/data0/database/coordinator/gpseg-1" >> /home/gpadmin/.bashrc && \
206212
echo -e '\n# Add Cloudberry entries\nif [ -f /usr/local/cloudberry-db/cloudberry-env.sh ]; then\n source /usr/local/cloudberry-db/cloudberry-env.sh\nfi' >> /home/gpadmin/.bashrc
207213

devops/sandbox/configs/init_system.sh

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
# SSH. This is useful for development and debugging purposes.
3030
# ----------------------------------------------------------------------
3131

32-
# Ensure SSH directory exists
33-
sudo mkdir -p /run/sshd
32+
# Ensure SSH directory exists (created at build time; ignore errors if any)
33+
mkdir -p /run/sshd 2>/dev/null || true
3434

35-
# Start SSH daemon (base image already handles most SSH setup)
36-
if ! sudo /usr/sbin/sshd; then
35+
# Start SSH daemon directly (binary is setuid-root in the image)
36+
if ! /usr/sbin/sshd; then
3737
echo "Failed to start SSH daemon" >&2
3838
exit 1
3939
fi
@@ -47,15 +47,7 @@ sleep 5
4747
# The /run/nologin file, if present, prevents users from logging into
4848
# the system. This file is removed to ensure that users can log in via SSH.
4949
# ----------------------------------------------------------------------
50-
sudo rm -rf /run/nologin
51-
52-
# ## Set gpadmin ownership - Cloudberry install directory and supporting
53-
# ## cluster creation files.
54-
sudo chown -R gpadmin.gpadmin /usr/local/cloudberry-db \
55-
/tmp/gpinitsystem_singlenode \
56-
/tmp/gpinitsystem_multinode \
57-
/tmp/gpdb-hosts \
58-
/tmp/multinode-gpinit-hosts
50+
rm -f /run/nologin 2>/dev/null || true
5951

6052
# ----------------------------------------------------------------------
6153
# Configure passwordless SSH access for 'gpadmin' user
@@ -127,12 +119,11 @@ elif [[ "${MULTINODE:-false}" == "true" && "$HOSTNAME" == "cdw" ]]; then
127119
done
128120

129121
# Clean up any existing data directories to avoid conflicts
130-
sudo rm -rf /data0/database/coordinator/* /data0/database/primary/* /data0/database/mirror/* 2>/dev/null || true
122+
rm -rf /data0/database/coordinator/* /data0/database/primary/* /data0/database/mirror/* 2>/dev/null || true
131123

132124
# Ensure database directories exist with proper permissions
133-
sudo mkdir -p /data0/database/coordinator /data0/database/primary /data0/database/mirror
134-
sudo chown -R gpadmin:gpadmin /data0/database
135-
sudo chmod -R 700 /data0/database
125+
mkdir -p /data0/database/coordinator /data0/database/primary /data0/database/mirror
126+
chmod -R 700 /data0/database
136127

137128
gpinitsystem -a \
138129
-c /tmp/gpinitsystem_multinode \

0 commit comments

Comments
 (0)