From 9509f27e28eaccc25c4a19a479c79d4ce4ff328a Mon Sep 17 00:00:00 2001 From: YR Chen Date: Thu, 5 Dec 2024 15:37:36 +0800 Subject: [PATCH] rootless: use `getsubids` tool for validation if possible Co-authored-by: Sebastiaan van Stijn Signed-off-by: YR Chen --- contrib/dockerd-rootless-setuptool.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/contrib/dockerd-rootless-setuptool.sh b/contrib/dockerd-rootless-setuptool.sh index 39b73c2a48..558063a357 100755 --- a/contrib/dockerd-rootless-setuptool.sh +++ b/contrib/dockerd-rootless-setuptool.sh @@ -228,8 +228,13 @@ init() { fi fi - # instructions: validate subuid/subgid files for current user - if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subuid 2> /dev/null; then + # instructions: validate subuid for current user + if command -v "getsubids" > /dev/null 2>&1; then + getsubids "$USERNAME" > /dev/null 2>&1 || getsubids "$(id -u)" > /dev/null 2>&1 + else + grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subuid 2> /dev/null + fi + if [ $? -ne 0 ]; then instructions=$( cat <<- EOI ${instructions} @@ -238,7 +243,14 @@ init() { EOI ) fi - if ! grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subgid 2> /dev/null; then + + # instructions: validate subgid for current user + if command -v "getsubids" > /dev/null 2>&1; then + getsubids -g "$USERNAME" > /dev/null 2>&1 || getsubids -g "$(id -u)" > /dev/null 2>&1 + else + grep -q "^$USERNAME_ESCAPED:\|^$(id -u):" /etc/subgid 2> /dev/null + fi + if [ $? -ne 0 ]; then instructions=$( cat <<- EOI ${instructions}