Изменить идентификатор пользователя и идентификатор группы для файла
#include <sys/types.h>#include <unistd.h>int fchown( int fd,uid_t owner,gid_t group );
libc
Функция fchown() изменяет идентификаторы пользователя и группы для файла, на который ссылается fd, на числовые значения, содержащиеся соответственно в owner и group.
Только процессы с эффективным идентификатором пользователя, совпадающим с идентификатором пользователя, или с соответствующими правами (например, суперпользователь) могут изменить владельца файла.
Флаг _POSIX_CHOWN_RESTRICTED
используется принудительно. Это значит, что только суперпользователь может изменить владельца файла. Группа для файла может быть изменена суперпользователем, процессом с эффективным идентификатором пользователя, равным идентификатору пользователя файла, если (и только в этом случае) owner равен идентификатору пользователя файла и group равна эффективному идентификатору группы вызывающего процесса.
Если аргумент fd ссылается на обычный файл, биты установки идентификатора пользователи (S_ISUID
) и установки идентификатора группы (S_ISGID
) в режиме файла сбрасываются при успешном завершении функции.
Если функция fchown() завершена успешно, поле файла st_ctime помечается для обновления.
/** Change the ownership of a list of files* to the current user/group*/#include <stdio.h>#include <fcntl.h>#include <sys/types.h>#include <unistd.h>int main( int argc, char **argv ){int i;int ecode = 0;int fd;for ( i = 1; i < argc; i++ ){if ( ( fd = open( argv[i], O_RDONLY ) ) == -1 ){perror( argv[i] );ecode++;} elseif ( fchown( fd, getuid(), getgid() ) == -1 ){perror( argv[i] );ecode++;}close( fd );}return (ecode);}
POSIX 1003.1
chmod(), chown(), errno, fchmod(), fstat(), lchown(), open(), stat()
Предыдущий раздел: Описание API системной библиотеки