본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 소유권 변경하기 함수 fchown()

C언어 소유권 변경하기 함수 fchown()

· 댓글개 · 바다야크

C함수 소유권 변경하기 chown()

파일의 소유권을 변경합니다. 주의하실 점은 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 == 실패

C언어 fchown() 함수 예제

#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);
}

C언어 fchown() 예제 실행 결과

]# 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
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.