프로그래밍 기술/리눅스(Unix) 시스템 프로그래밍

소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown

언제나휴일 2016. 11. 3. 08:57
반응형

4.6 소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown

 리눅스(유닉스) 시스템 호출 중에 chownfchown은 파일의 소유자 ID 및 소유 그릅 ID를 변경할 때 사용합니다.

#include <sys/types.h>

#include <unistd.h >

int chown(char *path, uid_t owner, gid_t group);

int fchown(int fd, uid_t owner, gid_t group);

반환 값: 실패 시 -1, 성공 시 0

 

 만약 소유 그룹 ID만 변경할 때는 owner 인자를 -1을 전달하고 소유자 ID만 변경할 때는 group 인자를 -1 전달합니다.

 

 다음은 명령줄 인자로 전달받은 이름의 파일을 생성한 후에 소유자 ID 및 소유 그룹 ID 를 확인하여 출력한 후에 chown 시스템 호출로 소유자 ID를 변경하고 다시 소유자 ID와 소유 그룹 ID를 확인하는 예제입니다.

/***********************************************************************

* ex_chown.c                                                                    *

* example source - change file ownership                               *

***********************************************************************/

#include <stdio.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

 

int main(int argc,char **argv)

{

    if(argc != 2)

    {

        fprintf(stderr, "usage: %s [path]\n",argv[1]);

        return 0;

    }

   

    int fd = open(argv[1],O_RDWR|O_CREAT,0666);

    if(fd == -1)

    {

        perror("open error");

        return 0;

    }

    close(fd);

    struct stat sbuf;

    stat(argv[1],&sbuf);

    printf("UID:%u GID:%u\n",sbuf.st_uid, sbuf.st_gid);

    if(chown(argv[1],501,-1)<0)

    {

        perror("chown error");

        return 0;

    }

    stat(argv[1],&sbuf);

    printf("UID:%u GID:%u\n",sbuf.st_uid, sbuf.st_gid);

 

    return 0;   

}


chown으로 사용자 ID 변경 실행 화면

[그림 4.8] chown으로 사용자 ID 변경 실행 화면


반응형