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