Hide Forgot
It's that time of the year again... Someone just mailed me about a problem he was having with unfsd, and in passing he mentioned that Linux refuses setfsuid(-2). Unfortunately, unfsd relies on this for root squashing (unless you've defined a different anon uid/gid). The cause of the problem is glibc's move to 32 bit uid_t, while the kernel remains at 16 bit. To compensate for this, the glibc setfsuid() implementation has some hideously `clever' code (sysdeps/unix/sysv/linux/i386/setfsuid.c): int setfsuid (uid_t uid) { if (uid != (uid_t) ((__kernel_uid_t) uid)) { __set_errno (EINVAL); return -1; } return INLINE_SYSCALL (setfsuid, 1, uid); } It is entirely possible that other applications are affected by these symptoms as well, because seteuid exhibits the same properties. A patched unfsd (2.2.beta44) will be available shortly from ftp://linux.mathematik.tu-darmstadt.de/pub/linux/people/okir
Jay, this 5.2 errata package needs QA: 5.2.2: nfs-server-2.2beta44-1