Skip to content

Commit c620f7e

Browse files
committed
Add USER to environment
Close #34
1 parent 7cafb26 commit c620f7e

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ WORKDIR /srv/git
2727
ENV SSH_PORT=2222 \
2828
GROUP_ID="" \
2929
USER_ID="" \
30+
USER="" \
3031
VOLUME_GIT="" \
3132
VOLUME_KEYS="" \
3233
OWNER="" \

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ services:
2222
SSH_PORT: "2222" # port of the container listenned on
2323
GROUP_ID: "1000" # edit to match your Group ID
2424
USER_ID: "1000" # edit to match your UID
25+
USER: "git"
2526
VOLUME_GIT: "/srv/git"
2627
VOLUME_KEYS: "/srv/git-keys"
2728
OWNER: "John Smith"

entrypoint.sh

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ ln -sf /run/secrets/keys-host-ed25519 /etc/ssh/keys-host/ssh_host_ed25519_key
2727
ln -sf /run/secrets/keys-host-ed25519.pub /etc/ssh/keys-host/ssh_host_ed25519_key.pub
2828

2929
# Create user
30-
mkdir -p /home/git
31-
adduser git --gecos "" --no-create-home --quiet --disabled-password || true # if already created, ignore
32-
groupmod -g "${GROUP_ID:-1001}" git || true # if already in group, ignore
33-
usermod -u "${USER_ID:-1001}" git || true # if already this userid, ignore
30+
HOME_GIT="/home/${USER:-git}"
31+
mkdir -p "${HOME_GIT}"
32+
adduser "${USER:-git}" --gecos "" --no-create-home --quiet --disabled-password || true # if already created, ignore
33+
groupmod -g "${GROUP_ID:-1001}" "${USER:-git}" || true # if already in group, ignore
34+
usermod -u "${USER_ID:-1001}" "${USER:-git}" || true # if already this userid, ignore
3435

3536

3637
# Update authorized keys
@@ -51,12 +52,12 @@ awk \
5152
/usr/local/share/sshd_config > "${SSHD_CONFIG}"
5253

5354
# Fill template no-interactive-login
54-
HOME_GIT="/home/git"
5555
GIT_SHELL_COMMANDS="${HOME_GIT}/git-shell-commands"
5656
NOINTERACTIVELOGIN="${GIT_SHELL_COMMANDS}/no-interactive-login"
5757
mkdir -p "${GIT_SHELL_COMMANDS}"
5858
awk \
5959
-v VOLUME_GIT="${VOLUME_GIT}" \
60+
-v USER="${USER:-git}" \
6061
-v OWNER="${OWNER}" \
6162
-v FRONTEND_NAME="${FRONTEND_NAME}" \
6263
-v FRONTEND_DOMAIN="${FRONTEND_DOMAIN}" \
@@ -71,6 +72,7 @@ awk \
7172
' {
7273
sub(/{{VOLUME_GIT}}/, VOLUME_GIT);
7374
sub(/{{OWNER}}/, OWNER);
75+
sub(/{{USER}}/, USER);
7476
sub(/{{FRONTEND_NAME}}/, FRONTEND_NAME);
7577
sub(/{{FRONTEND_DOMAIN}}/, FRONTEND_DOMAIN);
7678
sub(/{{FRONTEND_VERIFY_HOST_KEY_DNS}}/, FRONTEND_VERIFY_HOST_KEY_DNS);
@@ -86,12 +88,12 @@ awk \
8688
/usr/local/share/no-interactive-login.sh > "${NOINTERACTIVELOGIN}"
8789

8890
# Rights management
89-
chown root:git -R "${HOME_GIT}" "${ETC_SSH}"
91+
chown "root:${USER:-git}" -R "${HOME_GIT}" "${ETC_SSH}"
9092
chmod -R g=rX,+st "${HOME_GIT}" "${ETC_SSH}"
9193
chmod g+x "${NOINTERACTIVELOGIN}"
9294

9395
touch /run/sshd.pid
94-
chown root:git /run/sshd.pid
96+
chown "root:${USER:-git}" /run/sshd.pid
9597
chmod g+w,+s /run/sshd.pid
9698

9799
# exec sshd process using git user
@@ -104,6 +106,6 @@ case "$1" in
104106
;;
105107
--start)
106108
cd "${VOLUME_GIT}"
107-
exec gosu git "/usr/bin/sshd" -D "${@:2}"
109+
exec gosu "${USER:-git}" "/usr/bin/sshd" -D "${@:2}"
108110
;;
109111
esac

no-interactive-login.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ set -e
88
VOLUME_GIT="{{VOLUME_GIT}}"
99

1010
OWNER="{{OWNER}}"
11+
USER="{{USER}}"
1112

1213
FRONTEND_NAME="{{FRONTEND_NAME}}"
1314
FRONTEND_DOMAIN="{{FRONTEND_DOMAIN}}"
@@ -32,7 +33,7 @@ printf '%s\n' "SSH Configuration:"
3233

3334
if [[ -n "${FRONTEND_NAME}" ]]; then
3435
printf '%s\n' "Host ${FRONTEND_DOMAIN}"
35-
printf '\t%s\n' "User git"
36+
printf '\t%s\n' "User ${USER}"
3637
if [[ -n "${FRONTEND_DOMAIN}" ]]; then
3738
printf '\t%s\n' "Hostname ${FRONTEND_DOMAIN}"
3839
fi
@@ -48,7 +49,7 @@ fi
4849

4950
if [[ -n "${INTRANET_NAME}" ]]; then
5051
printf '%s\n' "Host ${INTRANET_DOMAIN}"
51-
printf '\t%s\n' "User git"
52+
printf '\t%s\n' "User ${USER}"
5253
if [[ -n "${INTRANET_DOMAIN}" ]]; then
5354
printf '\t%s\n' "Hostname ${INTRANET_DOMAIN}"
5455
fi
@@ -60,7 +61,7 @@ fi
6061

6162
if [[ -n "${TOR_NAME}" ]]; then
6263
printf '%s\n' "Host ${TOR_NAME}"
63-
printf '\t%s\n' "User git"
64+
printf '\t%s\n' "User ${USER}"
6465
if [[ -n "${TOR_DOMAIN}" ]]; then
6566
printf '\t%s\n' "Hostname ${TOR_DOMAIN}"
6667
fi

0 commit comments

Comments
 (0)