mirror of
https://github.com/systemd/systemd.git
synced 2025-01-20 18:04:03 +03:00
sysusers: check if requested group name matches user name in queue
When creating a user, check if the requested group name matches a user name in the queue. If that matched user name is also going to be a group name, then use it for the new user too. In other words, allow the following: u foo - u bar -:foo when both foo and bar are new users. Fixes #33547 (cherry picked from commit 18a8f03e5160ca3828d327d9bbd1b32f26d792a3)
This commit is contained in:
parent
b50419e838
commit
edf52384c2
@ -1448,9 +1448,15 @@ static int process_item(Context *c, Item *i) {
|
|||||||
case ADD_USER: {
|
case ADD_USER: {
|
||||||
Item *j = NULL;
|
Item *j = NULL;
|
||||||
|
|
||||||
if (!i->gid_set)
|
if (!i->gid_set) {
|
||||||
j = ordered_hashmap_get(c->groups, i->group_name ?: i->name);
|
j = ordered_hashmap_get(c->groups, i->group_name ?: i->name);
|
||||||
|
|
||||||
|
/* If that's not a match, also check if the group name
|
||||||
|
* matches a user name in the queue. */
|
||||||
|
if (!j && i->group_name)
|
||||||
|
j = ordered_hashmap_get(c->users, i->group_name);
|
||||||
|
}
|
||||||
|
|
||||||
if (j && j->todo_group) {
|
if (j && j->todo_group) {
|
||||||
/* When a group with the target name is already in queue,
|
/* When a group with the target name is already in queue,
|
||||||
* use the information about the group and do not create
|
* use the information about the group and do not create
|
||||||
|
1
test/test-sysusers/test-16.expected-group
Normal file
1
test/test-sysusers/test-16.expected-group
Normal file
@ -0,0 +1 @@
|
|||||||
|
foo:x:SYSTEM_UGID_MAX:
|
2
test/test-sysusers/test-16.expected-passwd
Normal file
2
test/test-sysusers/test-16.expected-passwd
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
foo:x:SYSTEM_UGID_MAX:SYSTEM_UGID_MAX::/:NOLOGIN
|
||||||
|
bar:x:300:SYSTEM_UGID_MAX::/:NOLOGIN
|
7
test/test-sysusers/test-16.input
Normal file
7
test/test-sysusers/test-16.input
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
#
|
||||||
|
# Test fix for https://github.com/systemd/systemd/issues/33547.
|
||||||
|
#
|
||||||
|
#Type Name ID
|
||||||
|
u foo -
|
||||||
|
u bar 300:foo
|
Loading…
x
Reference in New Issue
Block a user