On Thu, Apr 19, 2012 at 14:43, Janne Blomqvist <blomqvist.ja...@gmail.com> wrote: > Also, I suspect getuid and friends are not actually part of the NSS > stuff. The uid/gid/euid/egid are maintained for each process by the > kernel, and NSS only handles translation to/from the numeric id's to > string values, IP address lookup and so forth.
.. as can be seen with the example below: #include <unistd.h> #include <sys/types.h> #include <pwd.h> #include <stdio.h> int main(void) { uid_t uid = getuid(); //struct passwd *pwd = getpwuid(uid); //printf("%s ", pwd->pw_name); printf("%d %d %d %d\n", uid, geteuid(), getgid(), getegid()); return 0; } $ gcc getuid.c -static $ strace ./a.out (No need to open further files) Uncommenting the two commented lines: $ gcc getuid.c -static /tmp/cc6B1i8n.o: In function `main': getuid.c:(.text+0x16): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking $ strace ./a.out (Evidence of communicating with nscd per the NSS configuration on this system) Hence get{uid,euid,gid,egid} should not have any problems with static linking. -- Janne Blomqvist