C함수 루트 디렉토리 지정 chroot()
특정 디렉토리를 루트 디렉토리 "/"로 지정합니다. 이 함수를 사용하는 이유는 특정 디렉토리 안에서만 작업을 한다면, 매우 긴 작업 디렉토리 이름 대신에 "/"로 짧게 사용할 수 있어서 작업이 편리합니다. 단, 이 함수는 수퍼 유저만 사용할 수 있습니다.
- 헤더: unistd.h
- 형태: int chroot(const char *path)
- 인수: char *path 루트 디렉토리로 지정할 디렉토리
- 반환: int 0 == 성공, -1 == 실패
C언어 chroot() 함수 예제
현재 작업 디렉토리를 "/"로 지정합니다. "/"로 지정하면 이후로 작업을 "/"를 기준으로 진행할 수 있습니다.
#include <stdio.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;
}
if ( -1 == chroot( "."))
{
printf( "chroot() 실행 실패.\n");
return -1;
}
chdir( "/");
mkdir( "test_dir_A", 0755);
mkdir( "/test_dir_A/test_dir_B" ,0755);
}
C언어 chroot() 예제 실행 결과
]$ ./a.out
수퍼유저만 사용할 수 있습니다.
]$ su -
Password:
]# ./a.out
]# ls -al
합계 24
drwxr-xr-x 3 jwjw jwjw 4096 9월 25 12:25 .
drwxr-xr-x 7 jwjw jwjw 4096 9월 25 06:20 ..
-rwxrwxr-x 1 jwjw jwjw 5223 9월 25 12:24 a.out
-rw-r--r-- 1 jwjw jwjw 469 9월 25 12:24 test.c
drwxr-xr-x 3 root root 4096 9월 25 12:25 test_dir_A
]# cd test_dir_A/
]# ls -al
합계 12
drwxr-xr-x 3 root root 4096 9월 25 12:25 .
drwxr-xr-x 3 jwjw jwjw 4096 9월 25 12:25 ..
drwxr-xr-x 2 root root 4096 9월 25 12:25 test_dir_B
]$
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 버퍼 내용을 디스크로 쓰기 함수 sync() (0) | 2020.03.15 |
---|---|
C언어 소유권 변경하기 함수 fchown() (0) | 2020.03.15 |
C언어 소유권 변경하기 함수 chown() (0) | 2020.03.15 |