diff mbox series

common: check user and group existence via id

Message ID 20230925-fstests-check-user-v1-1-09b97257bcdb@kernel.org (mailing list archive)
State New, archived
Headers show
Series common: check user and group existence via id | expand

Commit Message

Christian Brauner Sept. 25, 2023, 3:22 p.m. UTC
Newer machines support the creation of users that don't appear in
/etc/passwd but are only available via nss or userdbd. Use the id binary
which is portable and reliable.

With this change I can run xfstests on systems where the users are
created via systemd-userdbd drop-ins. See the documentation in [1] and [2].

Link: [1]: https://man7.org/linux/man-pages/man8/nss-systemd.8.html
Link: [2]: https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html
Signed-off-by: Christian Brauner <brauner@kernel.org>
---
 common/rc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)


---
base-commit: 2fddeb5c79ff16bf37e1f1d809bd94b360c27801
change-id: 20230925-fstests-check-user-5487ee9be2ef

Comments

Christian Brauner Sept. 26, 2023, 10:35 a.m. UTC | #1
On Mon, Sep 25, 2023 at 05:22:21PM +0200, Christian Brauner wrote:
> Newer machines support the creation of users that don't appear in
> /etc/passwd but are only available via nss or userdbd. Use the id binary
> which is portable and reliable.
> 
> With this change I can run xfstests on systems where the users are
> created via systemd-userdbd drop-ins. See the documentation in [1] and [2].
> 
> Link: [1]: https://man7.org/linux/man-pages/man8/nss-systemd.8.html
> Link: [2]: https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html
> Signed-off-by: Christian Brauner <brauner@kernel.org>
> ---

I need to resend a fixed version. I only send half the patch.
diff mbox series

Patch

diff --git a/common/rc b/common/rc
index 76a7e774..44c90f50 100644
--- a/common/rc
+++ b/common/rc
@@ -2450,7 +2450,8 @@  _yp_active()
 _cat_passwd()
 {
 	[ $(_yp_active) -eq 0 ] && ypcat passwd
-	cat /etc/passwd
+	id -u "$1"
+	[ "$?" == "0" ] && echo "$user:"
 }
 
 # cat the group file
@@ -2458,7 +2459,8 @@  _cat_passwd()
 _cat_group()
 {
 	[ $(_yp_active) -eq 0 ] && ypcat group
-	cat /etc/group
+	id -g "$1"
+	[ "$?" == "0" ] && echo "$group:"
 }
 
 # check if a user exists in the system