Skip to content

Commit

Permalink
implement usermap
Browse files Browse the repository at this point in the history
  • Loading branch information
Nakamura Kazutaka committed Jan 2, 2024
1 parent b323c14 commit 6dd1920
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions pgrx-build/debian_bullseye/Dockerfile.debian_bullseye
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,9 @@ RUN echo "Running cargo install --version =${PGRX_VERSION} --force cargo-pgrx $C

# Initialize cargo pgrx so that we can run the tests
RUN cargo pgrx init --pg$PG_MAJOR_VERSION=$(which pg_config)

# Run as root to map host user to container user
USER root
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/bin/bash"]
28 changes: 28 additions & 0 deletions pgrx-build/debian_bullseye/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

export USER=rust
export HOME=/home/$USER

# カレントディレクトリの uid と gid を調べる
uid=$(stat -c "%u" .)
gid=$(stat -c "%g" .)

if [ "$uid" -ne 0 ]; then
if [ "$(id -g $USER)" -ne $gid ]; then
# rust ユーザーの gid とカレントディレクトリの gid が異なる場合、
# rust の gid をカレントディレクトリの gid に変更し、ホームディレクトリの
# gid も正常化する。
getent group $gid >/dev/null 2>&1 || groupmod -g $gid $USER
chgrp -R $gid $HOME
fi
if [ "$(id -u $USER)" -ne $uid ]; then
# rust ユーザーの uid とカレントディレクトリの uid が異なる場合、
# rust の uid をカレントディレクトリの uid に変更する。
# ホームディレクトリは usermod によって正常化される。
usermod -u $uid $USER
fi
fi

# このスクリプト自体は root で実行されているので、uid/gid 調整済みの rust ユーザー
# として指定されたコマンドを実行する。
exec setpriv --reuid=$USER --regid=$USER --init-groups "$@"

0 comments on commit 6dd1920

Please sign in to comment.