summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Michel Rouet <jm.rouet@gmail.com>2022-11-04 11:27:25 +0100
committerJean-Michel Rouet <jean-michel.rouet@philips.com>2023-05-12 09:22:14 +0200
commit2f0ba0a7e51756c9475d8b2379f32e4074e39afc (patch)
treee5ce3fa844f1ad905ba47832bd27d54ff84071de
parent8d15e7d7420e87038dacf3b934d66c51b32919d4 (diff)
downloaddocker-2f0ba0a7e51756c9475d8b2379f32e4074e39afc.tar.gz
more robust dockerd-rootless-setuptools.sh
Fixing case where username may contain a backslash. This case can happen for winbind/samba active directory domain users. Signed-off-by: Jean-Michel Rouet <jean-michel.rouet@philips.com> Use more meaningful variable name Signed-off-by: Jean-Michel Rouet <jean-michel.rouet@philips.com> Update contrib/dockerd-rootless-setuptool.sh Co-authored-by: Akihiro Suda <suda.kyoto@gmail.com> Signed-off-by: Jean-Michel Rouet <jean-michel.rouet@philips.com> Use more meaningful variable name Signed-off-by: Jean-Michel Rouet <jean-michel.rouet@philips.com> Update contrib/dockerd-rootless-setuptool.sh Co-authored-by: Akihiro Suda <suda.kyoto@gmail.com> Signed-off-by: Jean-Michel Rouet <jean-michel.rouet@philips.com>
-rwxr-xr-xcontrib/dockerd-rootless-setuptool.sh21
1 files changed, 14 insertions, 7 deletions
diff --git a/contrib/dockerd-rootless-setuptool.sh b/contrib/dockerd-rootless-setuptool.sh
index 220c23cc9f..88a6ccd038 100755
--- a/contrib/dockerd-rootless-setuptool.sh
+++ b/contrib/dockerd-rootless-setuptool.sh
@@ -37,6 +37,8 @@ BIN=""
SYSTEMD=""
CFG_DIR=""
XDG_RUNTIME_DIR_CREATED=""
+USERNAME=""
+USERNAME_ESCAPED=""
# run checks and also initialize global vars
init() {
@@ -78,6 +80,11 @@ init() {
exit 1
fi
+ # Set USERNAME from `id -un` and potentially protect backslash
+ # for windbind/samba domain users
+ USERNAME=$(id -un)
+ USERNAME_ESCAPED=$(echo $USERNAME | sed 's/\\/\\\\/g')
+
# set CFG_DIR
CFG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
@@ -222,21 +229,21 @@ init() {
fi
# instructions: validate subuid/subgid files for current user
- if ! grep -q "^$(id -un):\|^$(id -u):" /etc/subuid 2> /dev/null; then
+ if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subuid 2> /dev/null; then
instructions=$(
cat <<- EOI
${instructions}
- # Add subuid entry for $(id -un)
- echo "$(id -un):100000:65536" >> /etc/subuid
+ # Add subuid entry for ${USERNAME}
+ echo "${USERNAME}:100000:65536" >> /etc/subuid
EOI
)
fi
- if ! grep -q "^$(id -un):\|^$(id -u):" /etc/subgid 2> /dev/null; then
+ if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subgid 2> /dev/null; then
instructions=$(
cat <<- EOI
${instructions}
- # Add subgid entry for $(id -un)
- echo "$(id -un):100000:65536" >> /etc/subgid
+ # Add subgid entry for ${USERNAME}
+ echo "${USERNAME}:100000:65536" >> /etc/subgid
EOI
)
fi
@@ -340,7 +347,7 @@ install_systemd() {
)
INFO "Installed ${SYSTEMD_UNIT} successfully."
INFO "To control ${SYSTEMD_UNIT}, run: \`systemctl --user (start|stop|restart) ${SYSTEMD_UNIT}\`"
- INFO "To run ${SYSTEMD_UNIT} on system startup, run: \`sudo loginctl enable-linger $(id -un)\`"
+ INFO "To run ${SYSTEMD_UNIT} on system startup, run: \`sudo loginctl enable-linger ${USERNAME}\`"
echo
}