Skip to contentSkip to conversation

setup-buildchroot: fix copying passwd and group entries

PATCH In review Eric Biggers 2 participants 3 messages Aug 31, 2017 – Sep 16, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 setup-buildchroot: fix copying passwd and group entries

From: Eric Biggers <[email protected]>

create_chroot() is now supposed to add $CHROOT_USER to /etc/passwd in the chroot. However, due to a bad grep pattern, it would add multiple entries if $CHROOT_USER happened to be a suffix of another username. Also the passwd record is not guaranteed to actually be in the file /etc/passwd. Fix it by using 'getent passwd $CHROOT_USER' instead.

A similar problem existed for the group entry, but also the $CHROOT_USER's primary group is not guaranteed to have the same name as the user. Fix that by using 'id -g' to look up the primary group.

---
 setup-buildchroot | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
setup-buildchroot +2 -2
index 2340eb5..992a87c 100755
@@ -524,8 +524,8 @@ EOF
 	chmod 1777 "$CHROOT_DIR/run/shm"
     fi
     if [ -n "$CHROOT_USER" ]; then
-	grep "$CHROOT_USER": /etc/passwd >> "$CHROOT_DIR/etc/passwd"
-	grep "$CHROOT_USER": /etc/group >> "$CHROOT_DIR/etc/group"
+	getent passwd "$CHROOT_USER" >> "$CHROOT_DIR/etc/passwd"
+	getent group "$(id -g "$CHROOT_USER")" >> "$CHROOT_DIR/etc/group"
 	run_in_chroot "adduser $CHROOT_USER sudo"
     fi
 }
Signature · 1 line
2.14.1.581.gf28d330327-goog
#1 lore raw
Quoted 8 lines · Eric Biggers

From: Eric Biggers <[email protected]>

create_chroot() is now supposed to add $CHROOT_USER to /etc/passwd in the chroot. However, due to a bad grep pattern, it would add multiple entries if $CHROOT_USER happened to be a suffix of another username. Also the passwd record is not guaranteed to actually be in the file /etc/passwd. Fix it by using 'getent passwd $CHROOT_USER' instead.

Quoted 4 lines

A similar problem existed for the group entry, but also the $CHROOT_USER's primary group is not guaranteed to have the same name as the user. Fix that by using 'id -g' to look up the primary group.

Ted, can you apply this patch? Thanks!

Eric

#2 lore raw
Quoted 9 lines · Eric Biggers
Quoted 8 lines · Eric Biggers

From: Eric Biggers <[email protected]>

create_chroot() is now supposed to add $CHROOT_USER to /etc/passwd in the chroot. However, due to a bad grep pattern, it would add multiple entries if $CHROOT_USER happened to be a suffix of another username. Also the passwd record is not guaranteed to actually be in the file /etc/passwd. Fix it by using 'getent passwd $CHROOT_USER' instead.

Quoted 6 lines
Quoted 4 lines

A similar problem existed for the group entry, but also the $CHROOT_USER's primary group is not guaranteed to have the same name as the user. Fix that by using 'id -g' to look up the primary group.

Ted, can you apply this patch? Thanks!

Oops, missed this earlier; thanks for the ping. I've applied it.

- Ted