Системный вызов
setfsuid
устанавливает идентификатор пользователя, который используется ядром
Linux для доступа к файловой системе. Обычно значение
fsuid
будет совпадать с идентификатором эффективного пользователя.
Когда изменяется идентификатор эффективного пользователя, значение
fsuid
тоже изменится.
Явные вызовы функций
setfsuid
и
setfsgid
обычно используется только программами типа NFS-сервера, намеревающегося
изменить идентификатор пользователя, необходимый для доступа к
файлам, без изменения идентификаторов действительного или эффективного
пользователя. Установка обычных идентификаторов пользователя для
программы типа NFS-сервера - это нарушение безопасности, приводящее к
возможному получению нежелательных сигналов от других пользователей.
setfsuid
выполняется успешно, только при условии, что она была вызвана суперпользователем
или
fsuid
совпадает с идентификатором действительного, эффективного или сохраненного пользователя,
или с текущим значением
fsuid.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При успешном завершении вызова возвращается предыдущее значение
fsuid.
В случае возвращается текущее значение
fsuid.
СООТВЕТСТВИЕ СТАНДАРТАМ
setfsuid
является специфичной для Linux и не должна использоваться в
переносимых программах.
Она существует, начиная с Linux 1.1.44 и в libc, начиная с libc 4.7.6.
НАЙДЕННЫЕ ОШИБКИ
Вызвавшему процессу не возвращается никаких сообщений об ошибке. По
меньшей мере, должно возвращаться хотя бы значение
EPERM.
ЗАМЕЧАНИЯ
Когда glibc определяет, что аргумент имеет неверное значение uid,
возвращается -1 и значение errno становится равным
EINVAL, даже если не было произведено попытки системного вызова.
Заметим, что все время, пока определяется этот системный вызов, процесс
может отправить сигнал процессу с таким же действующим идентификатором
пользователя. Сейчас обработка прав сигнала происходит немного иначе.