setfsuid - set user identity used for file system checks


       #include <unistd.h> /* glibc uses <sys/fsuid.h> */

       int setfsuid(uid_t fsuid);


       setfsuid  sets  the  user ID that the Linux kernel uses to
       check for all accesses to the file system.  Normally,  the
       value of fsuid will shadow the value of the effective user
       ID. In fact, whenever the effective user  ID  is  changed,
       fsuid  will also be changed to new value of effective user

       An explict call to setfsuid is usually only used  by  pro­
       grams  such  as  the  Linux NFS server that need to change
       what user ID is used for file access without a correspond­
       ing change in the real and effective user IDs. A change in
       the normal user IDs for a program such as the  NFS  server
       is  a security hole that can expose it to unwanted signals
       from other user IDs.

       setfsuid will only succeed if the caller is the  superuser
       or  if  fsuid  matches  either the real user ID, effective
       user ID, saved set-user-ID, or the current value of fsuid.


       On  success,  the previous value of fsuid is returned.  On
       error, the current value of fsuid is returned.


       setfsuid is Linux specific and should not be used in  pro­
       grams intended to be portable.


       No  error messages of any kind are returned to the caller.
       At the very least, EPERM should be returned when the  call


       When  glibc  determines  that  the argument is not a valid
       uid, it will return -1 and set  errno  to  EINVAL  without
       attempting the system call.