컴퓨터/프로그래밍

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

2020. 3. 15. 11:01

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

파일의 소유권을 변경합니다. 주의하실 점은 root, 즉 수퍼유저가 실행했을 때 가능합니다.

  • 헤더: unistd.h
  • 형태: int chown(const char *path, uid_t owner, gid_t group)
  • 인수: char *path 파일 전체 이름
    uid_t owner 파일에 대한 새로운 소유자의 사용자 ID, 만일 -1이면 변경 취소
    gid_t group 파일에 대한 새로운 소유자의 그룹 ID, 만일 -1이면 변경 취소
  • 반환: int 0 == 성공, -1 == 실패

C언어 chown() 함수 예제

#include <stdio.h>
#include <unistd.h>
#include <pwd.h>
#include <sys/stat.h>

int main()
{
   struct passwd *root_pw;

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

   root_pw  = getpwnam( "jwjw");

   if ( -1 == chown( "./a.out", root_pw->pw_uid, root_pw->pw_gid))
      printf( "소유권 변경 실패\n");
}

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

]# 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
]$