Nicolas said: > Context: > $ cat /etc/passwd > nicolas:x:1000:2001::/home/nicolas:/bin/bash > claude:x:1000:2002::/home/claude:/bin/zsh > $ cat /etc/group > gnicolas:x:2001: > gclaude:x:2002: > > Test case: > localhost login: claude > $ getent passwd claude > claude::1000:2002::/home/claude:/bin/zsh > $ id claude > uid=1000(nicolas) gid=2002(gclaude) groups=2001(gnicolas) > > groups is wrong, should be "groups=2002(gclaude)". > > $ busybox id > uid=1000 gid=2002(gclaude) groups=2002(gclaude) > > groups is correct with busybox. > > Given the ouput of getent, it could be possible to display a better result: > uid=1000(claude) gid=2002(gclaude) groups=2002(gclaude)
Not really a bug, just a reason to avoid creating multiple users with the same user-id. See the following example: $ whoami root $ id claude uid=1000(nicolas) gid=2002(gclaude) groups=2001(gnicolas) $ busybox id claude uid=1000(nicolas) gid=2002(gclaude) groups=2002(gclaude) $ su claude $ id uid=1000(nicolas) gid=2002(gclaude) groups=2002(gclaude) $ busybox id uid=1000(nicolas) gid=2002(gclaude) groups=2002(gclaude) One would expect that after logging into claude, id would print that user name. But since nicolas shows up first in /etc/passwd that is what we see. Coreutils will then use the group id from the 'struct passwd' for nicolas which is 2001(gnicolas) in this case. I think that busybox uses the name passed to the command-line to call 'getgrouplist' which will then return gclaude. Collin