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
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 루트 디렉토리 지정 함수 chroot() (0) | 2020.03.15 |
---|---|
C언어 소유권 변경하기 함수 chown() (0) | 2020.03.15 |
C언어 파일의 접근 권한 변경 함수 fchmod() (0) | 2020.03.15 |