Bug 22222
Summary: | setgroups() does not update all threads in a process | ||
---|---|---|---|
Product: | Other | Reporter: | Mark Heily (mheily) |
Component: | Other | Assignee: | other_other |
Status: | RESOLVED WILL_NOT_FIX | ||
Severity: | normal | CC: | alan, dhowells, mark |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | Subsystem: | ||
Regression: | No | Bisected commit-id: |
Description
Mark Heily
2010-11-06 21:27:49 UTC
The setuid() and setgid() system calls also don't propagate changes across threads. Running the above program with "strace -f" shows that glibc/libpthread is doing that, however. If seems to involve SIGRT_1 being passed to the other threads. I wonder if this should be handled in the glibc/libpthread projects. The problem with changing this behaviour is that it might break other things. Do you know if anything relies on being able to change groups membership on a per-thread basis? A userspace NFS daemon perhaps? I don't know of anything that relies on non-portable behavior wrt setgroups(). This bug was already reported to glibc here: http://sources.redhat.com/bugzilla/show_bug.cgi?id=10563 I created a patch and attached it to the glibc bug report. |