-
C/C++ chown(2) fchown(2) lchown(2)C,C++ & Linux 2020. 5. 18. 14:19728x90
chown 함수 기능
파일의 소유자를 변경하는 함수입니다.
파일에 대한 적절한 권한이 있는 프로세스만이 위 함수를 호출 할 수 있습니다.
chown 과 fchown 은 심볼릭 링크 파일에 적용하면 링크 파일이 가리키는 파일에 대한 소유자를 변경합니다.
심볼릭 링크 파일 자체의 소유자를 변경하고 싶다면 lchown() 을 사용해야 합니다.
함수 원형
#include <unistd.h> #include <sys/types.h> int chown(const char *filepath, uid_t owner, gid_t group); int fchown(int fd, uid_t owner, gid_t group); int lchown(const char *filepath, uid_t owner, gid_t group);
매개변수
filepath
소유자를 변경할 대상 파일의 경로
fd
소유자를 변경할 대상 파일의 파일 디스크립터
owner
파일의 새 소유자
group
파일의 새 그룹
반환값
성공 시 0
에러 시 -1 리턴하고 errno 설정
예제
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main(int argc, char *argv[]) { struct stat statbuf; char *fname = "ssu_myfile"; int fd; // 파일 생성 fd = open(fname, O_RDWR | O_CREAT, 0600); close(fd); // 파일 소유자 체크 stat(fname, &statbuf); printf("# 1st stat call # UID: %d GID: %d\n", statbuf.st_uid, statbuf.st_gid); // 소유자 변경 if (chown(fname, 501, 20) < 0) { fprintf(stderr, "%s chown error 발생\n", fname); exit(1); } stat(fname, &statbuf); printf("# 2nd stat call # UID: %d GID: %d\n", statbuf.st_uid, statbuf.st_gid); // 파일 삭제 if (unlink(fname) < 0) { fprintf(stderr, "%s unlink error\n", fname); exit(1); } exit(0); }
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)'C,C++ & Linux' 카테고리의 다른 글
하드링크, 심볼릭링크 (0) 2020.05.18 C/C++ truncate(2) ftruncate(2) (0) 2020.05.18 C/C++ chmod(2), fchmod(2) (0) 2020.05.17 C/C++ umask(2) (1) 2020.05.17 C/C++ access(2) (1) 2020.05.17