설명

파일의 소유권을 변경합니다. 주의하실 점은 root, 즉 수퍼유저가 실행했을 때 가능하며, chown() 과는 달리 파일 이름이 아닌 파일 디스크립터를 이용합니다.

헤더 unistd.h
형태 int fchown(int fd, uid_t owner, gid_t group)
인수 int fd 파일 디스크립터
uid_t owner 파일에 대한 새로운 소유자의 사용자 ID, 만일 -1이면 변경 취소
gid_t group 파일에 대한 새로운 소유자의 그룹 ID, 만일 -1이면 변경 취소
반환 int 성공:0 실패:-1
예제
#include <stdio.h>   
#include <fcntl.h>
#include <unistd.h>
#include <pwd.h>
#include <sys/stat.h>

int main()
{
   int            fd;
   struct passwd *root_pw;

   if ( 0 != getuid())
   {            
      printf( "수퍼유저만 사용할 수 있습니다.n");
      return -1;
   }

   root_pw  = getpwnam( "jwjw");

   fd = open( "a.out", O_RDONLY);

   if ( -1 == fchown( fd, root_pw->pw_uid, root_pw->pw_gid))
      printf( "소유권 변경 실패n");
      
   close( fd);
}
]# gcc test.c
]# ls -al 합계 20
drwxr-xr-x 2 jwjw jwjw 4096 9월 25 11:21 .
drwxr-xr-x 7 jwjw jwjw 4096 9월 25 06:20 ..
-rwxr-xr-x 1 root root 5112 9월 25 11:21 a.out
-rw-r--r-- 1 jwjw jwjw 482 9월 25 11:21 test.c
]# ./a.out ]# ls -al 합계 20 drwxr-xr-x 2 jwjw jwjw 4096 9월 25 11:21 . drwxr-xr-x 7 jwjw jwjw 4096 9월 25 06:20 .. -rwxr-xr-x 1 jwjw jwjw 5112 9월 25 11:21 a.out -rw-r--r-- 1 jwjw jwjw 482 9월 25 11:21 test.c