Skip to content

Commit

Permalink
BATS: fix corner case in --userns=keep-id test
Browse files Browse the repository at this point in the history
The test that does 'adduser' in a keep-id container had a
really dumb bug: if the user running the test has UID 1000,
then podman itself (via keep-id) will add the "1000" passwd
entry, and the in-container "adduser" will allocate 1001,
making our test fail. This triggered in f31/f32 podman gating
tests, but (?!?) never in rawhide gating tests.

Solution: explicitly feed a UID to adduser. Make sure that
it's not the same as the UID of the current user.

Also (unrelated): fix a ridiculous "run mkdir || die". At
the time I wrote that I probably had no idea how BATS works.

Signed-off-by: Ed Santiago <[email protected]>
  • Loading branch information
edsantiago committed Aug 27, 2020
1 parent 72c5b35 commit 4060b77
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
15 changes: 13 additions & 2 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -294,11 +294,22 @@ echo $rand | 0 | $rand
run_podman run -d --userns=keep-id $IMAGE sh -c 'while ! test -e /stop; do sleep 0.1; done'
cid="$output"

# Assign a UID that is (a) not in our image /etc/passwd and (b) not
# the same as that of the user running the test script; this guarantees
# that the added passwd entry will be what we expect.
#
# For GID, we have to use one that already exists in the container. And
# unfortunately, 'adduser' requires a string name. We use 999:ping
local uid=4242
if [[ $uid == $(id -u) ]]; then
uid=4343
fi

gecos="$(random_string 6) $(random_string 8)"
run_podman exec --user root $cid adduser -D -g "$gecos" -s /bin/sh newuser3
run_podman exec --user root $cid adduser -u $uid -G ping -D -g "$gecos" -s /bin/sh newuser3
is "$output" "" "output from adduser"
run_podman exec $cid tail -1 /etc/passwd
is "$output" "newuser3:x:1000:1000:$gecos:/home/newuser3:/bin/sh" \
is "$output" "newuser3:x:$uid:999:$gecos:/home/newuser3:/bin/sh" \
"newuser3 added to /etc/passwd in container"

run_podman exec $cid touch /stop
Expand Down
2 changes: 1 addition & 1 deletion test/system/070-build.bats
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ load helpers
rand_content=$(random_string 50)

tmpdir=$PODMAN_TMPDIR/build-test
run mkdir -p $tmpdir || die "Could not mkdir $tmpdir"
mkdir -p $tmpdir
dockerfile=$tmpdir/Dockerfile
cat >$dockerfile <<EOF
FROM $IMAGE
Expand Down

0 comments on commit 4060b77

Please sign in to comment.